- 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