How ebay/nmessenger works
NMessenger is a Swift iOS chat UI component. An app embeds the messenger or uses its prebuilt controller; the controller accepts input and creates messages, while the messenger manages displayed messages and message groups. Message content supports text, local or network images, collections, custom rich content, and typing indicators, presented with configurable bubbles and avatar support. The README documents animated message changes and asynchronous head prefetching. The graph reflects documented capabilities where source excerpts were unavailable; those links are omitted when their caller could not be established.
Main entry points: MessageNode.swift Message node · NMessengerViewController.swift Chat controller · NMessenger.swift Message manager · NetworkImageContentNode.swift Network image
Components 21
App integration
- Chat controller
nMessenger/Source/Messenger/NMessengerViewController.swift - Input bar
nMessenger/Source/Messenger/Components/InputBarView/InputBarView.swift - Input bar API
nMessenger/Source/Messenger/Components/InputBarView/InputBarViewProtocol.swift - Camera and library
nMessenger/Source/Messenger/Components/CameraViewController.swift
Messenger flow
- Message manager
nMessenger/Source/Messenger/Components/NMessenger.swift - Message groups
nMessenger/Source/MessageNodes/MessageCell/MessageGroup.swift - Head prefetch
nMessenger/Source/MessageNodes/Indicators/HeadLoadingIndicator.swift
Message rendering
- Message cell
nMessenger/Source/MessageNodes/GeneralMessageCell/GeneralMessengerCell.swift - Message node
nMessenger/Source/MessageNodes/MessageCell/MessageNode.swift - Bubble renderer
nMessenger/Source/MessageNodes/Bubbles/Bubble.swift - Bubble variants
nMessenger/Source/MessageNodes/Bubbles/DefaultBubble.swift
Content and styling
- Bubble configuration
nMessenger/Source/MessageNodes/BubbleConfiguration/BubbleConfigurationProtocol.swift - Text content
nMessenger/Source/MessageNodes/ContentNodes/TextContent/TextContentNode.swift - Image content
nMessenger/Source/MessageNodes/ContentNodes/ImageContent/ImageContentNode.swift - Network image
nMessenger/Source/MessageNodes/ContentNodes/NetworkImageContent/NetworkImageContentNode.swift - Collection content
nMessenger/Source/MessageNodes/ContentNodes/CollectionViewContent/CollectionViewContentNode.swift - Custom content
nMessenger/Source/MessageNodes/ContentNodes/CustomContentContent/CustomContentNode.swift - Typing indicator
nMessenger/Source/MessageNodes/ContentNodes/TypingIndicatorContent/TypingIndicatorContent.swift
Other components
- Host app
- AsyncDisplayKit
- PINCache
Connections 22
- Host app → Chat controller: uses
- Host app → Message manager: embeds
- Chat controller → Input bar: installs
- Input bar → Input bar API: implements
- Chat controller → Message manager: posts messages
- Chat controller → Camera and library: opens capture
- Message manager → Message groups: manages groups
- Message groups → Message cell: stores messages
- Message cell → Message node: renders as
- Message node → Bubble renderer: displays in
- Bubble variants → Bubble renderer: specializes
- Bubble configuration → Bubble renderer: configures
- Message node → Text content: hosts content
- Message node → Image content: hosts content
- Message node → Network image: hosts content
- Message node → Collection content: hosts content
- Message node → Custom content: hosts content
- Message node → Typing indicator: hosts content
- Message manager → Head prefetch: prefetches head
- Network image → PINCache: uses cache
- Network image → AsyncDisplayKit: loads asynchronously
- Message node → AsyncDisplayKit: uses rendering