July 27th, 2023 - 6.0.0-beta3
I hope you're interested in our latest major release - v6.0.0-beta3! We're currently in the process of preparing migration guides and updating all of our
documentation, but in the meantime, you can look into what we plan to release in v6 of Android Chat.
If you want to learn more about these changes and our decisions, check out our Android Chat v6 Blog Post.
Common changes for all artifacts
⬆️ Improved
- Added baseline profiles to compose and clients modules for improving performance #4610
✅ Added
- Count for read messages. #4678
stream-chat-android-client
🐞 Fixed
- Fixing unread messages count for channels. #4499
- Fix reconnection socket behavior. #4821
- Fixed
QueryChannelRequest.withWatchersto makewatchersaccessible in response. #4848
⬆️ Improved
- Changes in messages that are quoted now reflect in all messages, not only the original message.#4646
✅ Added
- Added the string extension function
createResizedStreamCdnImageUrl()which resizes images hosted on Stream's CDN by adding the necessary query parameters to the URL. #4600 - Added the string extension function
getStreamCdnHostedImageDimensions()used to extract original image dimensions from URLs of images hosted on Stream's CDN which contain the original width and height parameters. Added a new class calledStreamCdnOriginalImageDimensionswhich stores the original height and width data. #4600 - Added classes
StreamCdnCropImageModeandStreamCdnResizeImageModeused for modifying Stream CDN image resize requests. #4600 - Added
ChatClient.clearPersistence()to be able to clear local data even if the user is not connected. #4796 - Added new
hideHistoryflag intoChatClient.addMembersfunction. This flag can be used to hide the channel's history from the added member. #4817 - Added new
hideHistoryflag intoChannelClient.addMembersfunction. This flag can be used to hide the channel's history from the added member. #4817 - Added
ChatClient.inviteMembersto invite members to an existing channel. #4816 - Added
ChannelClient.inviteMembersto invite members to an existing channel. #4816 - Added
ChannelUserBannedEvent.shadowproperty to know if the user is shadow-banned or standard banned. #4836 - Added
AttachmentsVerifierto verify if the uploaded attachments are valid. #4852 - Added
ChannelClient.fetchCurrentUserto fetch current user from backend. #4860 - Added
FetchCurrentUserListenerinterface used to perform actions as side effects when theChatCliet.fetchCurrentUser()method is used to fetch the current user from the backend. #4860 - Added
AudioPlayeras a part ofasync-voice-messagingfeature. #4828
⚠️ Changed
- Changed
newMessageIntentlambda's signature ofNotificationHandlerFactory.createNotificationHandler(). It receives the wholeMessage/Channelentity to help you create a more complex navigation intent. - Moved
ChatClient.dismissChannelNotifications()intoChatClientclass. #4692 - Changed
ConnectionStatefrom interface to Sealed Class. The newConnectionState.Connectedclass contains theuserthat open the WebSocket connection. #4808 - Renamed
InitializationState.RUNNINGtoInitializationState.INITIALIZING. #4827 - Changed return type of
ChatClient.disconnectSocket()toCall<Unit>. #4829 - Changed return type of
ChatClient.reconnectSocket()toCall<Unit>. #4829
❌ Removed
- Removed
ChatClient.setDevice()method. #4692
stream-chat-android-offline
🐞 Fixed
- Fixed pagination problems related for quoted messages #4638
- Fixed message gaps in message list view when using offline support. #4633
stream-chat-android-state
🐞 Fixed
- Fixed
SyncManagernot emitting missed events after getting online. #4862
⬆️ Improved
- The
ChannelStateLogickeeps members updated after ban/unban events are received. #4836
stream-chat-android-ui-common
⬆️ Improved
- Send
TypingStopEventwhenever the message is sent or the messageComposer contains an empty text message. #4904
✅ Added
- Added
showDateSeparatorInEmptyThread: BooleantoMessageListController. It is used to regulate whether date separators appear in empty threads. #4742 - Added
StreamMediaRecorderas a part ofasync-voice-messagingfeature. #4828 - Added
AudioRecordingControlleras a part ofasync-voice-messagingfeature. #4828
stream-chat-android-ui-components
🐞 Fixed
- Fixed edit messages and reply messages with unsupported attachments. #4757
- Fixed
ChannelViewHolderto show proper last message value. #4901 - Fixed
CnahnelViewHolderto handle TypingIndicator visibility properly. #4904
⬆️ Improved
- Emails are highlighted and clickable in the message text. #4833
ChannelListPayloadDiffis calculated using the list of members instead of the list of users. #4840
✅ Added
- Added
ChatUI.streamCdnImageResizingwhich allows resizing images where they appear as previews, such as the message list, attachment gallery overview or user and channel avatars. Only images hosted by Stream's CDN which contain original width and height query parameters can be resized. Image resizing is a paid feature and is disabled by default, you can enable it by overriding the aforementionedChatUI.streamCdnImageResizingproperty with with an instance that hasStreamCdnImageResizing.imageResizingEnabledset to true. Pricing can be found here. #4600 - Added
showDateSeparatorInEmptyThread: BooleantoMessageListViewModelFactory. It is used to regulate whether date separators appear in empty threads. #4742 - Added the ability to choose
PickerMediaModethat allows control if the camera recorder and/or take picture feature is allowed or not inMessageComposerViewvia xml attributes. #4812streamUiMessageComposerAttachmentsPickerMediaMode
- Added Typing Users list to
ChannelItem. #4868 - Added typing indicator on
ChannelLitsView. #4868 - Added options visibility customization for each channel in a list. #4870
- Added
AudioRecordAttachmentPreviewFactoryas a part ofasync-voice-messagingfeature. #4828 - Added
DefaultMessageComposerOverlappingContentas a part ofasync-voice-messagingfeature. #4828 - Added new custom views (
AudioRecordPlayerView,AudioWavesSeekBar,WaveformView) as a part ofasync-voice-messagingfeature. #4828 - Added
AudioRecordingAttachmentsGroupViewin addition toMediaAttachmentsGroupViewas a part ofasync-voice-messagingfeature. #4828
⚠️ Changed
- Replaced the method parameter
replyMessageId: StringwithreplyTo: MessageinsideReplyMessageClickListener.onReplyClick(). The new parameter now contains the complete message to which the reply was made. #4639 - Added the parameter
parentId: String?toAttachmentGalleryResultItem. It is used to indicate when a message is belongs to a thread. Same has been added to the extension functionAttachment.toAttachmentGalleryResultItem(). #4639 - Added the parameter
parentMessageId: String?to the classMessageListViewModel.ShowMessage. If the message you want to scroll to is a thread message, pass in its parent message ID, otherwise you can pass innull. #4639 - 🚨 Breaking change: Removed
ChatUI.showThreadSeparatorInEmptyThread. It has been replaced byMessageListController.showDateSeparatorInEmptyThread. If you are using ourViewModelfactory,MessageListViewModelFactory.showDateSeparatorInEmptyThreadwill pass the parameter through to theMessageListControllercontained byMessageListViewMode. #4742 - Create new
bind()method onBaseChannelListItemViewHolderthat takes as parameterChannelItem. #4868 - Added
MessageComposerView.setCenterOverlapContentas a part ofasync-voice-messagingfeature. #4828 FileAttachmentsViewsupports new audio recording view type as a part ofasync-voice-messagingfeature. #4828- Added audio recording style customization into
MessageComposerViewStyleas a part ofasync-voice-messagingfeature. #4828audioRecordingButtonVisibleaudioRecordingHoldToRecordTextaudioRecordingHoldToRecordTextColoraudioRecordingHoldToRecordBackgroundDrawableaudioRecordingHoldToRecordBackgroundDrawableTintaudioRecordingSlideToCancelTextaudioRecordingMicIconDrawableaudioRecordingMicIconDrawableTintaudioRecordingLockIconDrawableaudioRecordingLockIconDrawableTintaudioRecordingLockedIconDrawableaudioRecordingLockedIconDrawableTint
- Added audio recording xml attrs for
MessageComposerViewas a part ofasync-voice-messagingfeature. #4828streamUiMessageComposerAudioRecordingButtonVisiblestreamUiMessageComposerAudioRecordingHoldToRecordTextstreamUiMessageComposerAudioRecordingHoldToRecordTextColorstreamUiMessageComposerAudioRecordingHoldToRecordBackgroundDrawablestreamUiMessageComposerAudioRecordingHoldToRecordBackgroundDrawableTintstreamUiMessageComposerAudioRecordingSlideToCancelTextstreamUiMessageComposerAudioRecordingMicIconDrawablestreamUiMessageComposerAudioRecordingMicIconDrawableTintstreamUiMessageComposerAudioRecordingLockIconDrawablestreamUiMessageComposerAudioRecordingLockIconDrawableTintstreamUiMessageComposerAudioRecordingLockedIconDrawablestreamUiMessageComposerAudioRecordingLockedIconDrawableTint
stream-chat-android-compose
⬆️ Improved
- Updated Compose compiler version to
1.4.3. #4697 - Added
ChatClient.clearPersistence()to be able to clear local data even if the user is not connected. #4797 - Emails are highlighted and clickable in the message text. #4833
✅ Added
- Added
onChannelAvatarClickhandler toMessageListHeader. #4545 - Added
ChatTheme.streamCdnImageResizingwhich allows resizing images where they appear as previews, such as the message list, attachment gallery overview or user and channel avatars. Only images hosted by Stream's CDN which contain original width and height query parameters can be resized. Image resizing is a paid feature and is disabled by default, you can enable it by overriding the aforementionedChatTheme.streamCdnImageResizingproperty with an instance that hasStreamCdnImageResizing.imageResizingEnabledset to true.. Pricing can be found here. #4600 - Added the composable content slot
emptyThreadPlaceholderItemContenttoMessageContainer. It is used to display placeholders inside empty threads if the feature was enabled by theMessageListControllerof theMessageListViewModelinstance you have created. #4742 - Added
showDateSeparatorInEmptyThread: BooleantoMessagesViewModelFactory. It is used to regulate whether date separators appear in empty threads. #4742 - Add
ThreadMessagesStartthat allows to control if the stack of thread messages starts at the bottom or the top. #4807 - Add
PickerMediaModethat allows control if the camera recorder and/or take picture feature is allowed or not. #4812 - Added
MessageThemeto customize the message components intoChatTheme. #4856 - Added
StatefulStreamMediaRecorderas a part ofasync-voice-messagingfeature. #4828 - Added
AudioRecordAttachmentFactoryas a part ofasync-voice-messagingfeature. #4828 - Added new components (
RunningWaveForm,AudioWaveVSeekbar,AudioRecordAttachmentContent,AudioRecordGroupContent) as a part ofasync-voice-messagingfeature. #4828
⚠️ Changed
- 🚨 Breaking change: Renamed
onHeaderActionClicktoonHeaderTitleClickinMessagesScreen. Change made in order to better reflect the handler's behavior. #4535 - 🚨 Breaking change: Renamed
onHeaderActionClicktoonHeaderTitleClickinMessageListHeader. Change made in order to better reflect the handler's behavior. #4535 - Added
onChannelAvatarClickhandler toMessageListHeader. #4545 - Added
parentMessageIdtoMediaGalleryPreviewResult. It is used when we need to return a result upon which we navigate to a thread message. If the message we need to navigate to is not a thread message theparentMessageIdvalue will be null. #4639 - Added argument
parentMessageId: String?toMessageListViewModel.scrollToMessage(). If the message you want to scroll to is a thread message, pass in its parent message ID, otherwise you can pass innull. #4639 - Added parameter
parentMessageId: String?toMessageListViewModelFactory. If you want to scroll to a thread message upon opening the messaging screen, pass in the thread message's parent message ID, otherwise you can pass innull. #4639
❌ Removed
- Removed
ImagePreviewAction,ImagePreviewOption,ImagePreviewResult,ImagePreviewResultType,ImagePreviewViewModelandImagePreviewViewModelFactory. These were removed in favor of using the newerMediaGalleryPreviewActivityalong with it's accompanying classes. The removed classes have their media gallery counterparts, for instanceImagePreviewActionbecomesMediaGalleryPreviewAction, and so on. #4766