- Dynamic content insets for compond bubble #685 by @magic146
- Added support for Swift Package Manager #690 by @NicholasMata
- Add double tap handler #692 by @AKoulabukhov
- Add support of failed loading icon to compound bubble #695 by @azatZul
- Added camera type to callback when a photo is taken #696 by @KaneCheshire
- Introduce custom live camera cell behaviour #698 by @magic146
- Custom input camera picker #699 by @magic146
- Make timestamp revealing optional #704 by @simoneBumble
- Handle live camera and photo cells taps #705 by @magic146
- Contribution guide #676 by @wiruzx
- Enabling library evolution support #677 by @dive
- Add github actions #678 by @wiruzx
- Make presenter public to fire send #701 by @ChaosCoder
- Replace presentingController with presentingViewControllerProvider #703 by @magic146
- Fix false positive test runs #680 by @wiruzx
- Add empty scroll view delegate methods #684 by @wiruzx
- Fix resource name collision #686 by @khramtsoff
- Fix the resources bundle signing #697 by @azatZul
- Swipe to reply #672 by @wiruzx
- Ability to highlight message when scrolling to it #670 by @wiruzx
- Add ability to show decoration views on compound bubble #657 by @wiruzx
- Update of compound views #666 by @wiruzx
- BaseMessageInteractionHandlerProtocol methods are extended with a message parameter #665 by @magic146
- Fix project warnings, migrate to Xcode 11 #662 by @petrpavlik
- Add safe area insets for decoration views #660 by @wiruzx
- Bump xcode version in travis config #661 by @wiruzx
- Compound bubble styling simplification #653 by @magic146
- Add removing random item to demo project #652 by @wiruzx
- Fix autolayout support for BaseMessageCollrctionViewCell #651 by @wiruzx
- Determine UI orientation without shared UIApplication object #637 by @FabioTacke
- Safe area support for BaseChatViewController #632 by @esilverberg
- iOS 14: Fix infinite layout loop when chat is empty #674 by @nalexn
- Fix image stretching #673 by @wiruzx
- Do not restart camera capture when camera picker is presented #671 by @leonspok
- Set frame with disabled animation #659 by @wiruzx
- Fix typo in CGSize extension #655 by @95krasovsky
- Fix crash, if BaseChatViewController destroyed too early #549 by @freedbrt
- Fix masking in iOS 14 #667 by @esilverberg
- Multiline placeholder support #640 by @Ssimboss
- Add explicit dependency on Chatto #646 by @wiruzx
- Allow to specify orientation in default keyboard height #630 by @leonspok
- Improve scroll performance #629 by @AntonPalich
- Disable BUILD_LIBRARY_FOR_DISTRIBUTION option #626 by @dive
- Enable module stability support #625 by @dive
- Open avatar for customization #624 by @wiruzx
- Fix product name #622 by @wiruzx
- Fix imports #612 by @wiruzx
- Fix crash on termination #648 by @dive
- Made overridden inputAccessoryView read-write #644 by @azatZul
- Fix jumping with long text in text input #642 by @leonspok
- Fix wrong scroll indicator insets on iOS 13 #627 by @AntonPalich
- Fix scrolled position after frame change #623 by @leonspok
- Fix input bar position #620 by @magic146
- Support of using compound bubble for text messages #578 by @magic146
- Support of custom menu presentation #584 by @AntonPalich
- Support of layout invalidation for compound bubble #586 by @Wisors
- Added accessibility identifier to text bubble #575 by @wiruzx
- Migrated existing objc classes to Swift #579 by @magic146
- Various compound bubble layout improvements #587 by @turbulem
- Added support for draft messages #580 by @aabalaban
- Added
didLoseFocusOnItem
method toChatInputBarDelegate
#591 by @magic146 - Improved cursor positioning #595 by @leonspok
- Added support of presenters reusing #596 by @magic146
- Added support for updating message in content presenters #605 by @wiruzx
- Fixed using correct uid for decorated item #570 by @magic146
- Fixed filtering content factories #588 by @Wisors
- Fixed issue with wrong text size calculation in compound bubble #589 by @AntonPalich
- Replaced ReadOnlyOrderedDictionary with ChatItemCompanionCollection in order to support correct uids #590 by @magic146
- Fixed updating
ExpandableTextView
bounds in iOS 13 #592 by @magic146 - Fixed blurry images in the photo picker #594 by @magic146
- Limited maximum scale of preview photos #597 by @magic146
- Fixed calling completion in
changeInputContentBottomMarginTo
method #599 by @leonspok - Fixed openning a link in a message #600 by @magic146
- Fixed out of bounds crash due to stirng encoding #603 by @turbulem
- Fixed implicitly animating layout #604 by @AntonPalich
- Fixed issues with non-selectable links in iOS 13 #606 by @AntonPalich
- Fixed simultaniously recognizing tap and long press #608 by @AntonPalich
- Added Xcode 10 and Swift 4.2 support #521 by @AntonPalich
- Added support for showing messages starting from the bottom of the chat #483 by @rokemoon
- Added support for scrolling to a specific item in chat #542 by @AntonPalich
- Added accessibility identifiers to messages, photos input and input bar #517 by @dive
- Added support for an experimental input presenter that don't use
UIResponder.inputView
API to present a custom input views #536 by @aabalaban and @magic146 - Added support for a compound bubble that shows a mixed content in a single bubble #545 by @wiruzx
- Added accessibility identifiers to a compound bubble #556 by @wiruzx
- Added ability to change an item type dynamically #548 by @wiruzx
- Added support for intercepting paste action in input bar #558 and #560 by @wiruzx
- Added support for copy action in compound bubble #573 by @wiruzx
- Changed access modifier to
open
inscrollToBottom
function #501 by @azimin - Added
@objc
modifier toscrollToBottom
function #502 by @azimin - Added support for postponing a presenter factory initialization #528 by @magic146
- Added
IDETemplateMacros
to workspaces #544 by @wiruzx - Changed some access modifiers to
public
inScreenMetric.swift
andInputContainerView
#551 by @magic146 - Various improvements to support a new input bar in Badoo #552 by @magic146
- Fixed an issue with wrong
inputAccessoryView
position on iOS 12 #530 by @AntonPalich - Fixed an issue (introduced in #530) with wrong
inputView
height after dismissing a modally presented view controller #531 by @AntonPalich - Fixed an issue (introduced in #530) with wrong
inputView
height after sending a multilin text message #568 by @AntonPalich - Fixed an issue (introduced in #542) with double completion execution in performBatchUpdates #543 by @AntonPalich
- Fixed an issue (introduced in #545) with fractional bubble size #553 by @wiruzx
- Fixed a crash caused by force unwrapped optional in case when a device was rotated with unopened tab with chat in
UITabBarViewController
#538 by @alaija - Fixed a freeze caused by
PHCachingImageManager
in some cases #566 by @leonspok
- Fix iOS 11 text rendering issue related to carriage return symbol #364 by @0xpablo
- Added Swift 4 support #385 by @AntonPalich and #345 by @jpunz
- Added messages selection #411 by @AntonPalich
- Added accessibility identifier to selection indicator #428 by @AntonPalich
- Added iCloud Library support to photos input #415 by @Wisors
- Added camera position settings for live camera cell #393 by @Wisors
- Allow client to set selected range of textView in ChatInputBar #402 by @phatmann
- Allow override of text message
text
#403 by @phatmann - Added ability to change input bar placeholder #396 by @chupakabr
- Allow to build TextMessagePresenter subclasses without exposing internal properties #421 by @AntonPalich
- Made UIScrollView delegates open in BaseChatViewController #438 by @azimin
- Exposed keyboard position handling #445 by @chupakabr
- Added additional state for keyboard tracker and ability to modify content insets #454 by @azimin
- Removed Xcode 9 warnings #439 by @irace
- Fixed crashes that happened under some conditions in project with Swift 4 that used Chatto with Swift 3.2 #405, #414 by @AntonPalich
- Fixed issue with live camera cell when it wasnt updated after updating its appearance #404 by @Wisors
- Fixed issue with photo picker after migration to Swift 4 #437 by @AntonPalich
- Fixed crash that happened on devices with unaccessible camera caused by forced unwrapped optional #424 by @Wisors
- Removed gap under input bar on iPhone X #447 by @azimin
- Fixed issue with wrong input bar position when hidesBottomBarWhenPushed is true on iPhone X #457 by @AntonPalich
- Added support for custom main view in BaseChatViewController #323 by @serge-star
- Added ability to change input bar border color and width #339 by @NSEGeorge
- Added ability to control visibility of failed icon #359 by @turbulem
- Added Xcode 9 and iOS 11 support #352 by @AntonPalich
- Added support for swiftlint 0.23 #371 by @AntonPalich
- Fixed crash caused by missing optionality identifier in UIKit #310 by @raisaanjani92
- Fixed input container position when presenting chat as child controller #338 by @KaterinaPetrova
- Fixed issue with gesture recognizers that wasn't disabled for text messages on iOS 11 #366 by @AntonPalich
- swiftlint 0.13 support & Xcode 8.2 compatibility #253 - @diegosanchezr
- swiftlint 0.14 support & hashes improvements #271 - @diegosanchezr
- Removed lazy keyword from accessoryTimestampView property in BaseMessageCollectionViewCell #286 - @geegaset
- Fixed typo in a comment in BaseChatViewController+Changes.swift #296 - @NickAger
- BasicChatInputBarPresenter.chatInputBar became public #297 - @NickAger
- Added ability to specify tint color for text input #301 - @V0idPRO
- Xcode 8.3 compatibility #300 - @geegaset
- Empty layout model is returned if layout delegate is nil #304 - @chupakabr
- Swift 3.0.1 / Xcode 8.1 support #233 - @diegosanchezr
- Fixes weird linker issue with Carthage #232 - @zwang
- Avoids using AVCapture in simulator #235 - @geegaset
- Avoids crashing when receiving a nil indexPath (WebDriverAgent) #248 - @diegosanchezr
- Swift 3 support 🎉 - #220 - @diegosanchezr
- Enhanced customization for LiveCameraCell #199 - @TerekhovAnton
- Fixes input not being at the bottom when chat is embedded in a UITabbarController #202 - @andris-zalitis
- Fixes collection view insets when keyboard is shown #204 - @dbburgess
- LiveCameraCellPresenter made public #205 - @diegosanchezr
- Fixes order of photos on iOS 10 #215 - @geegaset
- Adds accessibility identifiers in ChatInputBar #218, #206 - @geegaset
- Xcode 8 - Swift 2.3 support
- Renames
ChatViewController
toBaseChatViewController
. #31 - @diegosanchezr - Makes presenters easier to reuse by relaxing generic constraints #35 - @diegosanchezr
- Fixes issues when the dataSource updates with a different instance for a previously existing chatItem. #36 - @diegosanchezr
BaseChatViewController
exposeschatItemCompanionCollection
. #39 - @diegosanchezr- This gives access to the presenter and decorationAttributes of a chatItem.
ChatDataSourceDelegateProtocol
getschatDataSourceDidUpdate(:context)
. #39 - @diegosanchezr- This allows to customize the update of the UICollectionView (reloadData vs performBatchUpdates)
MessageViewModelProtocol
losesstatus
setter.messageModel
property is removed. #44 - @diegosanchezrChatDataSourceProtocol
loses the completion blocks inloadNext()
andloadPrevious()
. #45 - @diegosanchezr- It's now the dataSource's responsability to notify when pagination finishes (by triggering
chatDataSourceDidUpdate(:context)
)
- It's now the dataSource's responsability to notify when pagination finishes (by triggering
BaseChatViewController
is no longer retained until a running update finishes. #47 - @diegosanchezrBaseMessageCollectionViewCell
can now be subclassed out ofChattoAdditions
. #48 - @bcamurChatInputBarDelegate
made public. #50 - @AntonPalichPhotoMessagePresenter
exposesviewModelBuilder
andinteractionHandler
. #52 - @AntonPalich- Avatars in cells. #55 - @zwang, #176 - @maxkonovalov
MessageViewModelProtocol
getsavatarImage
propertyBaseMessageCollectionViewCellStyleProtocol
gets methods to configure the layout of the avatarBaseMessageInteractionHandlerProtocol
getsuserDidTapOnAvatar(viewModel:)
ChatItemDecorationAttributes
getscanShowAvatar
BaseMessagePresenter
exposes user events (so subclasses can complement or bypass the interactionHandler). #62 - @AntonPalichBaseMessagePresenter.onCellBubbleTapped()
BaseMessagePresenter.onCellBubbleLongPressed()
BaseMessagePresenter.onCellFailedButtonTapped()
BaseMessagePresenter
exposesmessageModel
,sizingCell
,viewModelBuilder
,interactionHandler
andcellStyle
. #63 - @AntonPalichPhotosChatInputItem
gets new callbackscameraPermissionHandler
,photosPermissionHandler
. #65 - @Viacheslav-Radchenko- Enhanced customization for cells and the input component. #67 - @diegosanchezr, #73 @AntonPalich
BaseChatViewController
exposesreferenceIndexPathsToRestoreScrollPositionOnUpdate
. #75 - @diegosanchezr- It can be overriden to customize how the scroll position is preserved after a update.
- Fixes blinking when sending text messages on iOS 8
- Adds placeholders when there are very few photos in the camera roll. #85 - @Viacheslav-Radchenko
BaseChatViewController
exposescreatePresenterFactory()
. It can be overriden to provide a factory of presenters with custom logic. #89 - @weygBaseChatViewController
exposesinputContainer
. #90 - @diegosanchezr- Fixes insets issues. #91, #110 - @diegosanchezr
- Fixes memory leak when screen is left with the keyboard opened. #93 - @diegosanchezr
- PhotosChatInputItem listens to changes in the camera roll and updates accordingly. #94 - @AntonPalich
- Fixes issues with the keyboard #96, #115 - @diegosanchezr, #108 - @AntonPalich
BaseChatViewController
getssetChatDataSource(_:triggeringUpdateType)
. #98 - @diegosanchezr- This allows to set a dataSource and not trigger an update of the collection view immediately.
- This can be useful on the first load of the conversation when the dataSource doesn't have any data yet.
ChatInputBar
getsshouldEnableSendButton
closure to customize when the send button is enabled #103 - @ikashkuta- Fixes UIMenuController not going away on the first tap outside when the keyboard is dismissed. #104 - @diegosanchezr
ChatInputBarDelegate
getsinputBarShouldBeginTextEditing(_:)
andinputBar(_: shouldFocusOnItem)
#105 - @ikashkutaBaseChatViewController
getsaccessoryViewRevealerConfig
. #114 - @diegosanchezr- Allows setting an angle threshold that triggers the revealing
- Allows applying a transform to the finger's translation (to mimic a resistance effect)
- Fixes sizing of text cells: #122, #123 - @AntonPalich, #127, #161- @diegosanchezr
ChatInputBar
getsfocusOnInputItem(_:)
so that an input item can be focused programmatically. #124 - @ikashkutaBaseMessagePresenter
gets user eventsonCellBubbleLongPressBegan()
andonCellBubbleLongPressEnded
. #125 - @AntonPalichPhotoBubbleView
can be subclassed. #130 - @AntonPalich- Configurable margins for revealable timestamps. #135 - @AntonPalich
BaseChatViewController
getsendsEditingWhenTappingOnChatBackground
to dismiss the keyboard automatically. #138 - @diegosanchezrBaseMessageCollectionViewCellDefaultStyle
gets optionalbubbleBorderImages
#139 - @diegosanchezrChatItemsDecorator
can now have a last word about theuid
used by the update engine. #143 - @diegosanchezrBaseChatViewController
getsupdatesConfig
property. #145 - @diegosanchezrcoalesceUpdates
controls whether updates are combined (if dataSource notifies about changes while there is a running update)fastUpdates
controls whether a UICollectionView update can be performed before the previous one has finished.
- Exposes
BaseChatViewController.updateQueue
. #150 - @ikashkuta, #169 - @diegosanchezr- Allows clients to pause updates in the UICollectionView.
- Performance optimizations for text cells. #144, #166 - @diegosanchezr
ChatInputBar
getsmaxCharactersCount
to limit text input size- Allows
ChatInputBar
to be instantiated from an own nib. #153 - @makoni - Enhanced customization for buttons in
ChatInputBar
. #154 - @diegosanchezr - Fixes memory leak. #165 - @AntonPalich
- Improves responsiveness of the camera. #168, #173 - @diegosanchezr
- Preserves height of the input view when switching between input items. #170, #174 - @ikashkuta
AccessoryViewRevealable
getsallowAccessoryViewRevealing
. #175 - @ikashkuta- Allows to control whether timestamp can be revealed on a per cell basis.
- Support for Carthage
- First version