Skip to content
This repository has been archived by the owner on Oct 15, 2022. It is now read-only.

Latest commit

 

History

History
193 lines (139 loc) · 12.4 KB

CHANGELOG.md

File metadata and controls

193 lines (139 loc) · 12.4 KB

StreamChat iOS SDK CHANGELOG

The format is based on Keep a Changelog.


Upcoming

🐞 Fixed

  • It's safe now to use ChatChannel and ChatMessage across multiple threads #984
  • Web socket reconnection logic better handles the "no internet" errors #970

April 09, 2021

✅ Added

  • Channels are properly marked as read when ChatChannelVC is displayed #972

🐞 Fixed

  • Fix ChannelControllers created with createChannelWithId and createChannelWithMembers functions not reporting their initial values #945
  • Fix issue where channel lastMessageDate was not updated when new message arrived #949
  • Fix channel unread count not being updated in the real time #969
  • Fix updated values not reported for some controllers if the properties were accessed for the first time after synchronize has finished. Affected controllers were ChatUserListController, ChatChannelListController, ChatUserSearchController #974

🔄 Changed

  • Logger.assertationFailure was renamed to Logger.assertionFailure #935

March 29, 2021

🐞 Fixed

  • Fix ChannelDoesNotExist error is logged by UserWatchingEventMiddleware when channels are fetched for the first time #893
  • Improve model loading performance by lazy loading expensive properties #906
  • Fix possible loops when accessing controllers' data from within delegate callbacks #915
  • Fix channel.updated events failing to parse due to missing user field #922 This was due to backend not sending user field when the update was done by server-side auth.

✅ Added

  • Introduce support for multitenancy - teams for User and team for Channel are now exposed. #905
  • Introduce support for pinned messages #896
  • Expose pinnedMessages on ChatChannel which contains the last 10 pinned messages #896
  • Expose pinDetails on ChatMessage which contains the pinning information, like the expiration date #896
  • Add support for pinning and unpinning messages through pin() and unpin() methods in MessageController #896
  • Add new optional pinning: Pinning parameter when creating a new message in ChannelController to create a new message and pin it instantly #896
  • Add lastActiveMembers and lastActiveWatchers to ChatChannel. The max number of entities these fields expose is configurable via ChatClientConfig.localCaching.chatChannel #911

🔄 Changed

  • ChatChannel.latestMessages now by default contains max 5 messages. You can change this setting in ChatClientConfig.localCaching.chatChannel.latestMessagesLimit #923

⛔️ Deprecated

  • ChatChannel's properties cachedMembers and watchers were deprecated. Use lastActiveMembers and lastActiveWatchers instead #911

March 12, 2021

🐞 Fixed

  • Fix app getting terminated in background during an unfinished background task #877

✅ Added

  • Introduce MemberEventMiddleware to observe member events and update database accordingly #880
  • Expose membership value on ChatChannel which contains information about the current user membership #885
  • ChatChannelMember now contains channel-specific ban information: isBannedFromChannel and banExpiresAt #885
  • Channel-specific ban events are handled and the models are properly updated #885

March 09, 2021

✅ Added

🔄 Changed

  • ChatChannelNamer is now closure instead of class so it allows better customization of channel naming in ChatChannelListItemView.

🐞 Fixed

  • Fix encoding of channels with custom type #872
  • Fix CurreUserController.currentUser returning nil before synchronize() is called #875

February 26, 2021

🐞 Fixed

  • Fix localized strings not being loaded correctly when the SDK is integrated using CocoaPods #845
  • Fix message list crash when rotating screen #847

February 22, 2021

🐞 Fixed

  • Fix user devices not being removed locally when removed on the backend #882
  • Fix issue with bad parsing of malformed attachment data causing channelList not showing channels #834

🔄 Changed

February 12, 2021

StreamChat

✅ Added

  • Add support for custom attachment types with unknown structure #795
  • Add possibility to send attachments that don't need prior uploading #799

🔄 Changed

  • Improve serialization performance by exposing items as LazyCachedMapCollection instead of Array #776
  • Reduce amount of fake updates by erasing touched objects #802
  • Trigger members and current user updates on UserDTO changes #802
  • Extracts the connection handling responsibility of CurrentUserController to a new ChatConnectionController. #804
  • Allow delete/edit message for all users #809 By default, only admin/moderators can edit/delete other's messages, but this configurable on backend and it's not known by the client, so we allow all actions and invalid actions will cause backend to return error.
  • Simplify attachment send API by combining attachment and attachmentSeeds parameters. #815

🐞 Fixed

  • Fix race conditions in database observers #796

🚮 Removed

  • Revert changeHash that became obsolete after #802 #813

February 2nd, 2021

StreamChat

✅ Added

  • Add support for enforce_unique parameter on sending reactions #770

🔄 Changed

🐞 Fixed

  • Fix development token not working properly #760
  • Fix lists ordering not updating instantly. #768
  • Fix update changes incorrectly reported when a move change is present for the same index. #768
  • Fix issue with decoding member_count for ChannelDetailPayload #782
  • Fix wrong extra data cheat sheet documentation link #786

January 22nd, 2021

StreamChat SDK reaches another milestone with version 3.0 🎉

New features:

  • Offline support: Browse channels and send messages while offline.
  • First-class support for SwiftUI and Combine: Built-it wrappers make using the SDK with the latest Apple frameworks a seamless experience.
  • Uses UIKit patterns and paradigms: The API follows the design of native system SDKs. It makes integration with your existing code easy and familiar.
  • Currently, 3.0 version is available only using CocoaPods. We will add support for SPM soon.

To use the new version of the framework, add to your Podfile:

pod 'StreamChat', '~> 3.0'

⚠️ Breaking Changes ⚠️

In order to provide new features like offline support and SwiftUI wrappers, we had to make notable breaking changes to the public API of the SDKs.

Please don't upgrade to version 3.0 before you get familiar with the changes and their impact on your codebase.

To prevent CocoaPods from updating StreamChat to version 3, you can explicitly pin the SDKs to versions 2.x in your podfile:

pod 'StreamChat', '~> 2.0'
pod 'StreamChatCore', '~> 2.0' # if needed
pod 'StreamChatClient', '~> 2.0' # if needed

The framework naming and overall structure were changed. Since version 3.0, Stream Chat iOS SDK consists of:

StreamChat framework

Contains low-level logic and is meant to be used by users who want to build a fully custom UI. It covers functionality previously provided by StreamChatCore and StreamChatClient.

StreamChat UI framework (currently in public beta)

Contains a complete set of ready-to-use configurable UI elements that you can customize a use for building your own chat UI. It covers functionality previously provided by StreamChat.

Sample App

The best way to explore the SDKs and their usage is our sample app. It contains an example implementation of a simple IRC-style chat app using the following patterns:

  • UIKit using delegates
  • UIKit using reactive patterns and SDK's built-in Combine wrappers.
  • SwiftUI using the SDK's built-in ObservableObject wrappers.
  • Learn more about the sample app at its own README.

Documentation Quick Links

  • Cheat Sheet Real-world code examples showcasing the usage of the SDK.
  • Controller Overview This page contains a list of all available controllers within StreamChat, including their short description and typical use-cases.
  • Glossary A list of names and terms used in the framework and documentation.