- Added the
presenceStatusEnabled
property to theATLParticipantPresenting
protocol. - Added the
presenceStatusEnabled
property to theATLAddressBarViewController
. - Added the
shouldShowAvatarItem
andpresenceStatusEnabled
properties to theATLParticipantTableViewController
.
ATLParticipantTableViewCell
will now show presence status based on the value ofpresenceStatusEnabled
defined in theATLParticipantTableViewController
.- The address bar's search results will now show presence status based on the value of
presenceStatusEnabled
defined inATLAddressBarViewController
.
- Fixes a bug where an empty gap would display instead of the date and time above a message.
- Fixes a bug where re-creating a previously deleted conversation would cause the more-messages spinner to continously display without actually loading anything. [iOS-3013]
- Fixes a bug where the queryController pagination window could be set to zero, causing a crash. [iOS-3074]
Introducing the presence feature, which allows you to display a user's presence status as a color-coded icon next to their avatar image. [APPS-2740]
- Added a new
ATLPresenceStatusView
object, which renders a color-coded circle to represent a user's presence status. Added this to theATLAvatarItem
. ATLAvatarImageView
was renamed toATLAvatarView
.- Added the
presenceStatusEnabled
property toATLAvatarView
, which sets whether the presence status is shown. Default isYES
. - Added a read-only accessor
presenceStatus
to theATLAvatarItem
.
- Added
shouldDisplayUsernameForOneOtherParticipant
as a configurable property toATLConversationViewController
. dateString
andparticipantName
parameters marked asnullable
withinATLConversationCollectionViewHeader:headerHeightWithDateString:
.- Made the return value of
ATLConversationListViewController:avatarItemForConversation:
nullable
.
- Refactored queryController delegate methods to return early if the view is not visible. This helps harden against
NSInternalInconsistencyException
errors. - Refactored
ATLConversationListViewController
to track all changes from the queryController as they come in. Once the queryController finishes the changes, the tableView is updated. This helps harden againstNSInternalInconsistencyException
errors. - Changed all
@import LayerKit
to#import <LayerKit/LayerKit.h>
- Refactored code to satisfy analyzer warnings.
ATLConversationListViewController:configureCell:atIndexPath:
returns early if no conversation is found atindexPath
.- Prevent
ATLAvatarImageView
from flickering when setting the sameremoteImageURL
's image - Fixes a bug where the timestamp might incorrectly get overlaid across the message bubble.
- Fixed an issue in
ATLMessageInputToolbar
where creating a new line would incorrectly offset the text above until the next character was entered. This also fixed a crash that could happen if Return was pressed rapidly in succession. [APPS-2663] - Fixed a crash that could occur if the
tableFooterView
in theATLConversationListViewController
wasn't initialized. [APPS-2774] - Fixed an issue where pulling to load more messages in a conversations wouldn't work when it should
- Replaced deprecated
UISearchDisplayController
withUISearchController
inATLConversationListViewController
. This reduces complexity by removing the need to switch between different query controllers. - Replaced deprecated
UISearchDisplayController
withUISearchController
inATLParticipantTableViewController
. - Updated some deprecated
NSCalendar
objects inATLConversationTableViewCell
. - Refactored
ATLConversationViewController
to harden against mismanagement and prevent common crashes and issues.
- Fixed an issue in
ATLConversationViewController
where the "more messages indicator" would continue to display and spin even if all messages had been synced. This was due to a mismatch between the total number of messages in a conversation and the total number of non-deleted messages for that user. [APPS-2629] - Fixed a pagination issue in
ATLConversationViewController
where, after navigating to a conversation, additional messages would not sync and the activity indicator would continue to spin until the user pulled down. ATLConversationListViewController
no longer filters out conversations the authenticated user was removed from. This allows the user to access the conversation and mark messages as read in order to have an accurate unread badge count.- Fixed a crash in
ATLAddressBarViewController
that could occur if a participant was selected while thedisplayName
wasnil
. It will now appear asUnknown Participant
instead.
ATLParticipantTableDataSet
is now mutable and observes changes to Identity objects and updates the associatedUITableView
. [APPS-2470]- Displays timestamps in
ATLConversationViewController
for groups of messages regardless of sorting. Messages sent first but displayed second will now show a timestamp. [APPS-2608] - Adds pagination capabilities to the
ATLConversationViewController
query controller. [APPS-2524]
- Fixes a case in
ATLConversationViewController
where the query controller's delegate would not be unset. - Fixes a couple issues in
ATLConversationListViewController
where the query controller could be instantiated twice. [APPS-2598] - Fixes an issue where the "more messages" indicator would not initially appear in
ATLConversationViewController
.
- Fixes the build errors in the included Example classes.
- Fixes a crash when updating the
ATLConversationListViewController
while the search bar is active. [APPS-2587] - Fixes an issue in iOS 9 where the list of conversations would briefly flash when returning from a view with an active keyboard. [APPS-2594]
- Fixes an issue in the
ATLMessageInputToolbar
where adding a new line would result in text misalignment. [APPS-2593]
- Fixes an issue where messages in a new conversation would not appear until the conversation was reloaded.
- Fixes a crash in the
ATLConversationListViewController
related to the query controller being initialized multiple times. - Fixes a crash when trying to get the avatar initials from a
LYRIdentity
object if it wasn't fully synced.
- Fixes the crash related to the new
LYRQueryController
behavior introduced in LayerKit v0.23.0. [APPS-2560]
- Fix of the conversation list query in the
ATLConversationListViewController
. [APPS-2506]
- Upgraded
LayerKit
to version0.22.0
. Due to breaking API changes introduced in LayerKit, affected code has been fixed.
ATLAddressBarController
now uses theATLParticipant
displayName
property instead offirstName
when displaying names in theATLAddressBarTextView
.
- Adds support for
CocoaPods
1.0.0. - Bumps
LayerKit
version to0.21.0
.
- Fixes an issue where a loading spinner wouldn't disappear for conversations deleted with
My Devices
deletion mode.
- Fixes an issue where a loading spinner wouldn't disappear after pulling to load more messages in a conversation view controller.
- Fixes an issue where info.plist key could prevent app store submission.
- Integrates LayerKit's partial-sync feature in the
ATLConversationDataSource
class. - Integrates LayerKit's identity feature into the
ATLConversationListViewController
andATLConversationViewController
classes. - Updated nullability support.
- Added in line push support.
ATLConversationViewController
datasource methodconversationViewController:participantForIdentifier:
has been changed toconversationViewController:participantForIdentity:
.- Adds
conversationListViewController:rowActionsForDeletionModes:
method toATLConversationListViewControllerDataSource
.
- Fixes a bug where the pagination window in the
ATLConversationViewController
kept the spinner on screen even when no longer loading messages. - Fixed an issue where message part data was
nil
for text messages.
- Fixed an issue in the
ATLConversationListViewController
that caused an exception to be thrown during cell dequeueing. - Added missing files into the
Atlas
target to fix a bug with Carthage installations.
- Added support for new
LayerKit
deletion modeLYRDeletionModeMyDevices
. - Removed support for
LYRDeletionModeLocal
as it has been deprecated. - Changed default conversation deletion option strings to
My Devices
andEveryone
to make the options more explicit.
- Introduced
ATLBaseCollectionViewCell
which is now the base cell for all message cells containing a message bubble. Developers can now subclass theATLBaseCollectionViewCell
and add easily their own custom UI to a message bubble cell. - Moved the following properties from
ATLMessageCollectionViewCell
toATLBaseCollectionViewCell
:bubbleViewColor
,bubbleViewCornerRadius
,bubbleView
,avatarImageView
, andmessage
.
- Fixes an issue which prevented application archives from being submitted to the app store. The issue was caused by and unnecessary key in the
Resources/info.plist
file. - Fixes a
UILayoutConstraint
conflict when displaying a UIMapView in theATLMessageBubbleView
.
- Added support for installing Atlas via Carthage.
- Changed dependency to LayerKit v0.17.1 to pick up module import changes.
- Added support for configuring the right button title in
ATLMessageInputToolbar
.
- Fixed an issue with slow scrolling performance under iOS 9.
- Fixed build problems in Swift projects regarding non-module header imports.
- Exposed
ATLConversationViewController
methodsendMessage:
to allow customLYRMessage
objects to use Atlas delegate handling. - Introduced
verticalMargin
property onATLMessageInputToolbar
to specify top and bottom margins for the text input view.
- Improved
UIMenuController
behavior.
- Updated the Atlas podspec that caused build errors for some users.
- Fixed an iOS9 bug with duplicate keyboards being dismissed.
- Improved
UIMenuController
behavior while scrolling. - Cached message cell height to improve scrolling performance.
- Added native video support.
- Atlas uses
LayerKit v0.17.0
which provides support for dynamic frameworks.
- Fixed iOS9 issue with the
ATLMessageInputToolbar
having a black background when presented on screen. - Fixed iOS9 breaking layout constraints.
- Implemented
conversationViewController:configureCell:forMessage:
to allowATLConversationViewController
subclasses to add extra cell configuration. - Added
shouldDisplayAvatarItemForAuthenticatedUser
toATLConversationViewController
to display avatar items for the authenticated user. - Added
ATLAvatarItemDisplayFrequency
property toATLConversationViewController
to allow customization of avatar frequency. - Exposed
LYRQueryController
onATLConversationViewController
. - Added
NSTextCheckingType
onATLMessageBubbleView
. - Added
menuControllerActions
onATLMessageBubbleView
to customize UIMenuController actions.
ATLConversationViewController
caches unsent media attachments in theATLMessageInputToolbar
upon deallocation, and re-inserts them on creation.- Added Localization support.
- Asynchronous image and GIF loading in
ATLMessageCollectionViewCell
.
- Fixed bug that caused avatar images to flicker when loading photos from remote URLs.
- Fixed bug that caused UIMenuController to stay on screen during pan gesture.
- Fixed bug that caused images to stretch if smaller than the minimum cell size.
- Fixed bug introduced in 1.0.9 relating to media attachment text color for attributed string.
- Exposed private initializers of
ATLConversationViewController
andATLConversationListViewController
to allow subclassing for custom initialization.
- Removed compiler warnings that showed from direct installation due to deprecations.
- Updated change notification handling code due to LayerKit library upgrade to v0.13.3, which has some braking changes in change notifications dictionary.
- Implemented
conversationListViewController:configurationForDefaultQuery:
to provide for query customization in theATLConversationListViewController
. - Implemented
conversationViewController:configurationForDefaultQuery:
to provide for query customization in theATLConversationViewController
.
- Removed all compiler warnings.
- Added
avatarImageURL
property toATLAvatarItem
.
- Added logic to fetch image from a URL to
ATLAvatarImageView
. - Added image cache to
ATLAvatarImageView
.
- Fixed bug which caused
ATLConversationViewController
animation assertions when attempting to reload cells via the public API. - Fixed bug which prevented cell font customizations from being appied.
- Moved
searchController
property to public API onATLConversationListViewController
. - Moved
UIImagePickerControllerDelegate
andUINavigationControllerDelegate
declarations to header ofATLConversationViewController
. - Added
leftAccessoryImage
,rightAccessoryImage
anddisplaysRightAccessoryImage
toATLMessageInputToolbar
.
- Introduced new functionality to facilitate reloading content after asynchronous reloads of user information.
- Added
reloadCellsForMessagesSentByParticipantWithIdentitifier:
toATLConversationViewController
. - Removed
collectionViewCellForMessage:
fromATLConversationViewController
.
- Added
conversationListViewController:textForButtonWithDeletionMode:
toATLConversationListViewController
- Added
conversationListViewController:colorForButtonWithDeletionMode:
toATLConversationListViewController
- Updated LayerKit dependency to v0.10.3
- New compatible with CocoaPods >= 0.36.0
- Initial public release of Atlas.
- Added property
blockedParticipantIdentifiers
toATLParticipantTableViewController
.
- Added
addressBarViewControllerDidSelectWhileDisabled:
toATLAddressBarViewController
. - Changed all class prefixes from
LYRUI
toATL
. - Added
conversationListViewController:didSearchForText:completion
toATLConversationListViewController
.
- Added search functionality to the
ATLConversationListViewController
.
- Changed
setPermanent
todisable
onLYRUIAddressBarViewController
. - Changed
isPermanent
toisDisabled
onLYRUIAddressBarViewController
. - Changed
updateWithConversationLabel:
toupdateWithConversationTitle:
onLYRUIConversationPresenting
. - Chanded
shouldDisplayAvatarImage:
toshouldDisplayAvatarItem:
onLYRUIMessagePresenting
. LYRUIParticipant
now inherits from theLYRUIAvatarItem
protocol.- Changed
presentParticipant:withSortType:shouldShowAvatarImage:
topresentParticipant:withSortType:shouldShowAvatarItem:
onLYRUIParticipantPresenting
- Added
avatarItem
property toLYRUIAvatarImageView
. - Removed
setInitialsForFullName:
- Changed
conversationLabelColor
toconversationTitleLabelColor
inLYRUIConversationCell
. - Changed
conversationLabelFont
toconversationTitleLabelFont
inLYRUIConversationCell
. - Added
conversationListViewController:didSearchWithString:completion:
toLYRUIConversationListViewController.
- Deprecated
LYRUIParticipantPickerController
. - Changed
LYRUIParticipantTableViewController
initailizer toparticipantTableViewControllerWithParticipants:sortType
.
- Added storyboard support for
LYRUIParticipantTableViewController
. - Added storyboard support for
LYRUIConversationViewController
. - Added storyboard support for
LYRUIConversationListViewController
. layerClient
property is no longer read only inLYRUIConversationViewController
.layerClient
property is no longer read only inLYRUIConversationListViewController
.
- Changed
displaysConversationImage
todisplaysAvatarItem
inLYRUIConversationListViewController.h
. - Changed
conversationListViewController:labelForConversation:
toconversationListViewController:titleForConversation:
inLYRUIConversationListViewController.h
. - Added
deletionModes
toLYRUIConversationListViewController.h
. - Removed
conversationTitle
property inLYRUIConversationViewController
. - Removed
conversationViewController:shouldMarkMessagesAsRead:
- Added
marksMessagesAsRead
property. - Changed
layerClient
property to be readonly. - Changed
conversationViewControllerWithConversation:layerClient:
toconversationViewControllerWithLayerClient:
LYRUIConversationViewController
now sends mixed content (e.g. an image and text) in multiple messages, i.e. one message per piece of content (e.g. one message with an image part and another message with a text part). Correspondingly, it now displays one cell for each message. The previous behavior was to display one cell for each message part. The default message cells assume that each message only has one part. So a multi-part message (e.g. one sent with the previous behavior) will only have its first part displayed.
- Moved
LYRUIUserDidTapLinkNotification
fromLayerUIKit.h
toLYRUIMessageBubbleView.h
. - Added
message
property toLYRUIConversationCollectionViewHeader
. - Added
LYRUIConversationDataSource
. - Changed
LYRUITypingIndicatorView
toLYRUITypingIndicatorViewController
. - Added
LYRUIProgressView
. - Removed method
isGroupConversation:
fromLYRUIMessagePresenting
. - Added
LYRUIMIMETypeImageJPEGPreview
andLYRUIMIMETypeImageSize
toLYRUIMessagingUtilities
. - Added
LYRUIPhotoForLocation
toLYRUIMessagingUtilities
. - Changed
conversationListViewController:imageForConversation:
toconversationListViewController:avatarItemForConversation:
. - Added
LYRUIAvatarItem
protocol. - Added
imageViewBackgroundColor
property toLYRUIAvatarImageView
. - Added
conversationViewController:messagesForContentParts:
toLYRUIConversationViewController
. - Removed
conversationViewController:pushNotificationTextForMessagePart:
fromLYRUIConversationViewController
. - Removed
avatarImageViewCornerRadius
property fromLYRUIMessageCollectionViewCell
. - Added
avatarImageViewDiameter
property toLYRUIAvatarImageView
. - Removed
updateWithMessageSentState:
method fromLYRUIMessagePresenting
. Message sent state can be inferred from theisSent
property onLYRMessage
. - Added
LYRUIUserDidTapLinkNotification
toLayerUIKit
. - Added
collectionViewCellForMessage:
toLYRUIConversationViewController
. - Added
bubbleViewCornerRadius
property toLYRUIMessageCollectionViewCell
. - Added
avatarImageViewCornerRadius
property toLYRUIMessageCollectionViewCell
. - Changed
backgroundColor
property tocellBackgroundColor
onLYRUIConversationTableViewCell
. - Removed
updateWithBubbleViewWidth:
fromLYRUIMessageCollectionViewCell
. - Changed
-[<LYRUIConversationViewControllerDataSource> conversationViewController:pushNotificationTextForMessageParts:]
toconversationViewController:pushNotificationTextForMessagePart:
. That is, one message part is passed instead of an array of message parts. - Changed
-[<LYRUIMessagePresenting> presentMessagePart:]
topresentMessage:
. That is, a message is passed instead of a message part. - Added
isPermanent
toLYRUIAddressBarViewController
. - Changed
-[<LYRUIAddressBarControllerDataSource> searchForParticipantsMatchingText:completion:]
toaddressBarViewController:searchForParticipantsMatchingText:completion:
. That is, the view controller is now passed as the first parameter. This callback also now controls the order of search results by providing anNSArray
instead of anNSSet
in the completion block. - Changed
-[LYRUIMessageInputToolbarDelegate messageInputToolbarDidBeginTyping:]
tomessageInputToolbarDidType:
. -[LYRUIMessageInputToolbar insertLocation:]
has been removed since it was unused.- Removed
maxHeight
property fromLYRUIMessageComposeTextView
. Use themaxNumberOfLines
property ofLYRUIMessageInputToolbar
instead. - Removed
-[LYRUIMessageComposeTextView insertImage:]
. Use-[LYRUIMessageInputToolbar insertImage:]
instead. - Removed
-[LYRUIMessageComposeTextView removeAttachements]
. It doesn't have a replacement since it was meant for internal use only. - Changed
placeHolderText
property ofLYRUIMessageComposeTextView
toplaceholder
. - Removed
pendingBubbleViewColor
property ofLYRUIMessageCollectionViewCell
. - Changed
avatarImage
property ofLYRUIMessageCollectionViewCell
toavatarImageView
. - Removed
initialViewBackgroundColor
property ofLYRUIAvatarImageView
. UsebackgroundColor
instead. - Changed
initialFont
property ofLYRUIAvatarImageView
toinitialsFont
. - Changed
initialColor
property ofLYRUIAvatarImageView
toinitialsColor
. - Changed
-[<LYRUIParticipantPickerControllerDelegate> participantSelectionViewControllerDidCancel:]
toparticipantPickerControllerDidCancel:
. - Changed
-[<LYRUIParticipantPickerControllerDelegate> participantSelectionViewController:didSelectParticipant:]
toparticipantPickerController:didSelectParticipant:
. - Changed
-[<LYRUIParticipantPickerDataSource> searchForParticipantsMatchingText:completion:]
toparticipantPickerController:searchForParticipantsMatchingText:completion:
. - Changed
-[<LYRUIParticipantPickerDataSource> participants]
toparticipantsForParticipantPickerController:
. - Changed
-[<LYRUIParticipantTableViewControllerDelegate> participantTableViewControllerDidSelectCancelButton]
toparticipantTableViewControllerDidCancel:
. - Removed
selectionIndicator
property fromLYRUIParticipantTableViewController
. - Added
participantPickerController:didDeselectParticipant:
toLYRUIParticipantPickerControllerDelegate
. - Added
participantTableViewController:didDeselectParticipant:
toLYRUIParticipantTableViewControllerDelegate
. - Replaced
presentParticipant:
,updateWithSortType:
andshouldShowAvatarImage:
onLYRUIParticipantPresenting
withpresentParticipant:withSortType:shouldShowAvatarImage:
. - Changed
LYRUIParticipantPickerControllerSortTypeFirst
toLYRUIParticipantPickerSortTypeFirstName
. - Changed
LYRUIParticipantPickerControllerSortTypeLast
toLYRUIParticipantPickerSortTypeLastName
. - Changed
LYRUIPaticipantSectionHeaderView
toLYRUIParticipantSectionHeaderView
. - Removed
initWithKey:
fromLYRUIParticipantSectionHeaderView
. - Changed
keyLabel
property tonameLabel
onLYRUIParticipantSectionHeaderView
. - Removed
conversationListViewController:didSearchWithString:completion:
fromLYRUIConversationListViewControllerDataSource
. - Changed
layerClient
property onLYRUIConversationListViewController
fromreadwrite
toreadonly
. - Changed
lastMessageTextFont
property onLYRUIConversationTableViewCell
tolastMessageLabelFont
. - Changed
lastMessageTextColor
property onLYRUIConversationTableViewCell
tolastMessageLabelColor
. - Added optional
conversationViewController:conversationWithParticipants:
method toLYRUIConversationViewControllerDataSource
. - Changed
selectedParticipants
property onLYRUIAddressBarViewController
from areadonly
NSSet
to areadwrite
NSOrderedSet
.
- Fixed bug which allowed name labels to be truncated in
LYRUIParticipantTableViewCell
. - Fixed bug which would display an empty name string if the
fullName
property ofLYRUIParticipant
was nil inLYRUIParticipantTableViewCell
. - Fixed bug which would display inaccurate initials if the
fullName
property ofLYRUIParticipant
was nil inLYRUIParticipantTableViewCell
. - Fixed bug which allowed messages to be marked as read while app is in the background.
- Removed duplicate MIMEType constant declarations.
- Fixed possibility of customizations via
UIAppearance
being overridden. - Fixed issue related to sending a push notification with
(null)
text. - Fixed typo for property
conversationLabelColor
onLYRUIConversationTableViewCell
. - Fixed typo in C function signature
LYRUILightGrayColor()
. - Added logic to guard against messages with external content in applications using LayerKit v0.9.2 and previous.
LYRUIAddressBarViewController
now shows only first names when set permanent.- Implemented progress view in
LYRUIBubbleView
. - Implemented pagination in the
LYRUIConversationViewController
. LYRUIConversationTableViewCell
no longer shows conversation image by default.- Implemented
LayerUIKit
unit test suite. - Re-implemented
LayerUIKit
mock objects. - Re-factored
LayerUIKit
sample app to use new mock objects. - Refactored internal constants.
- Added support for external content.