LayerKit v0.20.0 Release Notes

  • โœจ Enhancements

    • ๐Ÿ‘€ Layer client can be configured to avoid fully synchronizing the conversation history. It also provides all the necessary functionallity to load more historic content on demand. See LYRClientSynchronizationPolicy.
    • ๐Ÿ”€ Introduced LYRIdentity to synchronize user identity with the Layer Client.
    • โฑ waitForCreationOfObjectWithIdentifier:timeout:completion: will now query for an existing object with the given identifier in the local database and return it immediately upon invocation. This prevents a timeout from triggering in race condition cases where an object is materialized before the wait invocation is made (typically via transport push).

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed an issue that would prevent the LYRQueryControllerDelegate from reporting changes to a conversation.lastMesssage property.
    • ๐Ÿ›  Fixed a performance issue where the client performed extra work when it synchronized conversations, which in case of a high volume of conversations looked like a delay in the initial synchronization process.

    Public API Changes

    • โž• Added synchronization policies to the client's initialization method: +clientWithAppID:options:, see LYRClientSynchronizationPolicy.
    • ๐Ÿ”€ In case the LYRClient is initalized to perform a partial synchronization process, more historic messages can be loaded on demand by either calling LYRConversation's synchronizeMoreMessages:error: or synchronizeAllMessages: method.
    • ๐Ÿ”€ LYRConversation contains two new properties that tell how many messages in total are available or how many unread messages are available in the conversation (even if the client hasn't fully synchronized the history of a conversation).
    • ๐Ÿ”€ A set of two new notification are introduced that inform when a synchronization process is about to begin LYRConversationWillBeginSynchronizingNotification (handing out an LYRProgress instance in the userInfo of the notification), and a notification indicating that the synchronization process has completed LYRConversationDidFinishSynchronizingNotification.
    • ๐Ÿ”€ Introduced LYRIdentity which replaces LYRActor and represents a first class object synchronized by the provider with the Layer platform.
    • LYRMessage property sender returns an object of type LYRIdentity.
    • LYRConversation property participants returns objects of type LYRIdentity.
    • โž• Added LYRClient methods followUserIDs:error: and unfollowUserIDs:error: that allows for explicit following and unfollowing of userIDs to synchronize available identity information with the client. Followed userIDs will receive updates made to that identity, while unfollowing stops all updates and deletes the identity. All conversation participants are implicitly followed and cannot be explicitly followed or unfollowed.
    • Introduced LYRPredicateOperatorLike that allows for LIKE wildcard querying on LYRIdentity properties firstName, lastName, displayName, and emailAddress.
    • LYRClient property authenticatedUserID has been replaced with LYRIdentity object authenticatedUser.
    • LYRClient method authenticateWithIdentityToken:completion: has its completion block parameter changed from a string to a LYRIdentity object.
    • LYRClient method newConversationWithParticipants:options:error: now checks for blocked participants when creating a 1:1 conversations. An attempt to create a conversation with a blocked participant will result in an error.