├── .gitignore ├── AsyncMessagesViewController.podspec ├── AsyncMessagesViewController.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── AsyncMessagesViewController.xcworkspace └── contents.xcworkspacedata ├── CONTRIBUTING.md ├── Example ├── AppDelegate.swift ├── Base.lproj │ └── LaunchScreen.xib ├── Images.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Info.plist ├── Message.swift ├── User.swift └── ViewController.swift ├── LICENSE ├── Podfile ├── README.md ├── Screenshots ├── screenshot1.png └── screenshot2.png └── Source ├── Assets └── AsyncMessagesViewController.xcassets │ ├── bubble_incoming.imageset │ ├── Contents.json │ ├── bubble_incoming.png │ ├── bubble_incoming@2x.png │ └── bubble_incoming@3x.png │ ├── bubble_incoming_tailless.imageset │ ├── Contents.json │ ├── bubble_incoming_tailless.png │ ├── bubble_incoming_tailless@2x.png │ └── bubble_incoming_tailless@3x.png │ ├── bubble_outgoing.imageset │ ├── Contents.json │ ├── bubble_outgoing.png │ ├── bubble_outgoing@2x.png │ └── bubble_outgoing@3x.png │ └── bubble_outgoing_tailless.imageset │ ├── Contents.json │ ├── bubble_outgoing_tailless.png │ ├── bubble_outgoing_tailless@2x.png │ └── bubble_outgoing_tailless@3x.png ├── Controllers ├── AsyncMessagesCollectionViewDataSource.swift ├── AsyncMessagesViewController.swift ├── DefaultAsyncMessagesCollectionViewDataSource.swift ├── DefaultAsyncMessagesCollectionViewDelegate.swift ├── MessageBubbleImageProvider.swift ├── MessageCellNodeMetadataFactory.swift └── MessageTimestampFormatter.swift ├── Models └── MessageData.swift └── Views ├── MessageBubbleNodeFactory.swift ├── MessageCellNode.swift ├── MessageNetworkImageBubbleNode.swift ├── MessageTextBubbleNode.swift └── UIImageExtensions.swift /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/.gitignore -------------------------------------------------------------------------------- /AsyncMessagesViewController.podspec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/AsyncMessagesViewController.podspec -------------------------------------------------------------------------------- /AsyncMessagesViewController.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/AsyncMessagesViewController.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /AsyncMessagesViewController.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/AsyncMessagesViewController.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /AsyncMessagesViewController.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/AsyncMessagesViewController.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /Example/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Example/AppDelegate.swift -------------------------------------------------------------------------------- /Example/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Example/Base.lproj/LaunchScreen.xib -------------------------------------------------------------------------------- /Example/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Example/Images.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /Example/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Example/Info.plist -------------------------------------------------------------------------------- /Example/Message.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Example/Message.swift -------------------------------------------------------------------------------- /Example/User.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Example/User.swift -------------------------------------------------------------------------------- /Example/ViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Example/ViewController.swift -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/LICENSE -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Podfile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/README.md -------------------------------------------------------------------------------- /Screenshots/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Screenshots/screenshot1.png -------------------------------------------------------------------------------- /Screenshots/screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Screenshots/screenshot2.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming.imageset/Contents.json -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming.imageset/bubble_incoming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming.imageset/bubble_incoming.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming.imageset/bubble_incoming@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming.imageset/bubble_incoming@2x.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming.imageset/bubble_incoming@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming.imageset/bubble_incoming@3x.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming_tailless.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming_tailless.imageset/Contents.json -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming_tailless.imageset/bubble_incoming_tailless.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming_tailless.imageset/bubble_incoming_tailless.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming_tailless.imageset/bubble_incoming_tailless@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming_tailless.imageset/bubble_incoming_tailless@2x.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming_tailless.imageset/bubble_incoming_tailless@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_incoming_tailless.imageset/bubble_incoming_tailless@3x.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing.imageset/Contents.json -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing.imageset/bubble_outgoing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing.imageset/bubble_outgoing.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing.imageset/bubble_outgoing@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing.imageset/bubble_outgoing@2x.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing.imageset/bubble_outgoing@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing.imageset/bubble_outgoing@3x.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing_tailless.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing_tailless.imageset/Contents.json -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing_tailless.imageset/bubble_outgoing_tailless.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing_tailless.imageset/bubble_outgoing_tailless.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing_tailless.imageset/bubble_outgoing_tailless@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing_tailless.imageset/bubble_outgoing_tailless@2x.png -------------------------------------------------------------------------------- /Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing_tailless.imageset/bubble_outgoing_tailless@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Assets/AsyncMessagesViewController.xcassets/bubble_outgoing_tailless.imageset/bubble_outgoing_tailless@3x.png -------------------------------------------------------------------------------- /Source/Controllers/AsyncMessagesCollectionViewDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Controllers/AsyncMessagesCollectionViewDataSource.swift -------------------------------------------------------------------------------- /Source/Controllers/AsyncMessagesViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Controllers/AsyncMessagesViewController.swift -------------------------------------------------------------------------------- /Source/Controllers/DefaultAsyncMessagesCollectionViewDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Controllers/DefaultAsyncMessagesCollectionViewDataSource.swift -------------------------------------------------------------------------------- /Source/Controllers/DefaultAsyncMessagesCollectionViewDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Controllers/DefaultAsyncMessagesCollectionViewDelegate.swift -------------------------------------------------------------------------------- /Source/Controllers/MessageBubbleImageProvider.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Controllers/MessageBubbleImageProvider.swift -------------------------------------------------------------------------------- /Source/Controllers/MessageCellNodeMetadataFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Controllers/MessageCellNodeMetadataFactory.swift -------------------------------------------------------------------------------- /Source/Controllers/MessageTimestampFormatter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Controllers/MessageTimestampFormatter.swift -------------------------------------------------------------------------------- /Source/Models/MessageData.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Models/MessageData.swift -------------------------------------------------------------------------------- /Source/Views/MessageBubbleNodeFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Views/MessageBubbleNodeFactory.swift -------------------------------------------------------------------------------- /Source/Views/MessageCellNode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Views/MessageCellNode.swift -------------------------------------------------------------------------------- /Source/Views/MessageNetworkImageBubbleNode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Views/MessageNetworkImageBubbleNode.swift -------------------------------------------------------------------------------- /Source/Views/MessageTextBubbleNode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Views/MessageTextBubbleNode.swift -------------------------------------------------------------------------------- /Source/Views/UIImageExtensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenhuy/AsyncMessagesViewController/HEAD/Source/Views/UIImageExtensions.swift --------------------------------------------------------------------------------