Skip to content

v6.0.0-beta3

Pre-release
Pre-release
Compare
Choose a tag to compare
@JcMinarro JcMinarro released this 27 Jul 16:20
· 730 commits to main since this release

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.withWatchers to make watchers accessible 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 called StreamCdnOriginalImageDimensions which stores the original height and width data. #4600
  • Added classes StreamCdnCropImageMode and StreamCdnResizeImageMode used 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 hideHistory flag into ChatClient.addMembers function. This flag can be used to hide the channel's history from the added member. #4817
  • Added new hideHistory flag into ChannelClient.addMembers function. This flag can be used to hide the channel's history from the added member. #4817
  • Added ChatClient.inviteMembers to invite members to an existing channel. #4816
  • Added ChannelClient.inviteMembers to invite members to an existing channel. #4816
  • Added ChannelUserBannedEvent.shadow property to know if the user is shadow-banned or standard banned. #4836
  • Added AttachmentsVerifier to verify if the uploaded attachments are valid. #4852
  • Added ChannelClient.fetchCurrentUser to fetch current user from backend. #4860
  • Added FetchCurrentUserListener interface used to perform actions as side effects when the ChatCliet.fetchCurrentUser() method is used to fetch the current user from the backend. #4860
  • Added AudioPlayer as a part of async-voice-messaging feature. #4828

⚠️ Changed

  • Changed newMessageIntent lambda's signature of NotificationHandlerFactory.createNotificationHandler(). It receives the whole Message/Channel entity to help you create a more complex navigation intent.
  • Moved ChatClient.dismissChannelNotifications() into ChatClient class. #4692
  • Changed ConnectionState from interface to Sealed Class. The new ConnectionState.Connected class contains the user that open the WebSocket connection. #4808
  • Renamed InitializationState.RUNNING to InitializationState.INITIALIZING. #4827
  • Changed return type of ChatClient.disconnectSocket() to Call<Unit>. #4829
  • Changed return type of ChatClient.reconnectSocket() to Call<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 SyncManager not emitting missed events after getting online. #4862

⬆️ Improved

  • The ChannelStateLogic keeps members updated after ban/unban events are received. #4836

stream-chat-android-ui-common

⬆️ Improved

  • Send TypingStopEvent whenever the message is sent or the messageComposer contains an empty text message. #4904

✅ Added

  • Added showDateSeparatorInEmptyThread: Boolean to MessageListController. It is used to regulate whether date separators appear in empty threads. #4742
  • Added StreamMediaRecorder as a part of async-voice-messaging feature. #4828
  • Added AudioRecordingController as a part of async-voice-messaging feature. #4828

stream-chat-android-ui-components

🐞 Fixed

  • Fixed edit messages and reply messages with unsupported attachments. #4757
  • Fixed ChannelViewHolder to show proper last message value. #4901
  • Fixed CnahnelViewHolder to handle TypingIndicator visibility properly. #4904

⬆️ Improved

  • Emails are highlighted and clickable in the message text. #4833
  • ChannelListPayloadDiff is calculated using the list of members instead of the list of users. #4840

✅ Added

  • Added ChatUI.streamCdnImageResizing which 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 aforementioned ChatUI.streamCdnImageResizing property with with an instance that has StreamCdnImageResizing.imageResizingEnabled set to true. Pricing can be found here. #4600
  • Added showDateSeparatorInEmptyThread: Boolean to MessageListViewModelFactory. It is used to regulate whether date separators appear in empty threads. #4742
  • Added the ability to choose PickerMediaMode that allows control if the camera recorder and/or take picture feature is allowed or not in MessageComposerView via xml attributes. #4812
    • streamUiMessageComposerAttachmentsPickerMediaMode
  • 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 AudioRecordAttachmentPreviewFactory as a part of async-voice-messaging feature. #4828
  • Added DefaultMessageComposerOverlappingContent as a part of async-voice-messaging feature. #4828
  • Added new custom views (AudioRecordPlayerView, AudioWavesSeekBar, WaveformView) as a part of async-voice-messaging feature. #4828
  • Added AudioRecordingAttachmentsGroupView in addition to MediaAttachmentsGroupView as a part of async-voice-messaging feature. #4828

⚠️ Changed

  • Replaced the method parameter replyMessageId: String with replyTo: Message inside ReplyMessageClickListener.onReplyClick(). The new parameter now contains the complete message to which the reply was made. #4639
  • Added the parameter parentId: String? to AttachmentGalleryResultItem. It is used to indicate when a message is belongs to a thread. Same has been added to the extension function Attachment.toAttachmentGalleryResultItem(). #4639
  • Added the parameter parentMessageId: String? to the class MessageListViewModel.ShowMessage. If the message you want to scroll to is a thread message, pass in its parent message ID, otherwise you can pass in null. #4639
  • 🚨 Breaking change: Removed ChatUI.showThreadSeparatorInEmptyThread. It has been replaced by MessageListController.showDateSeparatorInEmptyThread. If you are using our ViewModel factory, MessageListViewModelFactory.showDateSeparatorInEmptyThread will pass the parameter through to the MessageListController contained by MessageListViewMode. #4742
  • Create new bind() method on BaseChannelListItemViewHolder that takes as parameter ChannelItem. #4868
  • Added MessageComposerView.setCenterOverlapContent as a part of async-voice-messaging feature. #4828
  • FileAttachmentsView supports new audio recording view type as a part of async-voice-messaging feature. #4828
  • Added audio recording style customization into MessageComposerViewStyle as a part of async-voice-messaging feature. #4828
    • audioRecordingButtonVisible
    • audioRecordingHoldToRecordText
    • audioRecordingHoldToRecordTextColor
    • audioRecordingHoldToRecordBackgroundDrawable
    • audioRecordingHoldToRecordBackgroundDrawableTint
    • audioRecordingSlideToCancelText
    • audioRecordingMicIconDrawable
    • audioRecordingMicIconDrawableTint
    • audioRecordingLockIconDrawable
    • audioRecordingLockIconDrawableTint
    • audioRecordingLockedIconDrawable
    • audioRecordingLockedIconDrawableTint
  • Added audio recording xml attrs for MessageComposerView as a part of async-voice-messaging feature. #4828
    • streamUiMessageComposerAudioRecordingButtonVisible
    • streamUiMessageComposerAudioRecordingHoldToRecordText
    • streamUiMessageComposerAudioRecordingHoldToRecordTextColor
    • streamUiMessageComposerAudioRecordingHoldToRecordBackgroundDrawable
    • streamUiMessageComposerAudioRecordingHoldToRecordBackgroundDrawableTint
    • streamUiMessageComposerAudioRecordingSlideToCancelText
    • streamUiMessageComposerAudioRecordingMicIconDrawable
    • streamUiMessageComposerAudioRecordingMicIconDrawableTint
    • streamUiMessageComposerAudioRecordingLockIconDrawable
    • streamUiMessageComposerAudioRecordingLockIconDrawableTint
    • streamUiMessageComposerAudioRecordingLockedIconDrawable
    • streamUiMessageComposerAudioRecordingLockedIconDrawableTint

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 onChannelAvatarClick handler to MessageListHeader. #4545
  • Added ChatTheme.streamCdnImageResizing which 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 aforementioned ChatTheme.streamCdnImageResizing property with an instance that has StreamCdnImageResizing.imageResizingEnabled set to true.. Pricing can be found here. #4600
  • Added the composable content slot emptyThreadPlaceholderItemContent to MessageContainer. It is used to display placeholders inside empty threads if the feature was enabled by the MessageListController of the MessageListViewModel instance you have created. #4742
  • Added showDateSeparatorInEmptyThread: Boolean to MessagesViewModelFactory. It is used to regulate whether date separators appear in empty threads. #4742
  • Add ThreadMessagesStart that allows to control if the stack of thread messages starts at the bottom or the top. #4807
  • Add PickerMediaMode that allows control if the camera recorder and/or take picture feature is allowed or not. #4812
  • Added MessageTheme to customize the message components into ChatTheme. #4856
  • Added StatefulStreamMediaRecorder as a part of async-voice-messaging feature. #4828
  • Added AudioRecordAttachmentFactory as a part of async-voice-messaging feature. #4828
  • Added new components (RunningWaveForm, AudioWaveVSeekbar, AudioRecordAttachmentContent, AudioRecordGroupContent) as a part of async-voice-messaging feature. #4828

⚠️ Changed

  • 🚨 Breaking change: Renamed onHeaderActionClick to onHeaderTitleClick in MessagesScreen. Change made in order to better reflect the handler's behavior. #4535
  • 🚨 Breaking change: Renamed onHeaderActionClick to onHeaderTitleClick in MessageListHeader. Change made in order to better reflect the handler's behavior. #4535
  • Added onChannelAvatarClick handler to MessageListHeader. #4545
  • Added parentMessageId to MediaGalleryPreviewResult. 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 the parentMessageId value will be null. #4639
  • Added argument parentMessageId: String? to MessageListViewModel.scrollToMessage(). If the message you want to scroll to is a thread message, pass in its parent message ID, otherwise you can pass in null. #4639
  • Added parameter parentMessageId: String? to MessageListViewModelFactory. 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 in null. #4639

❌ Removed

  • Removed ImagePreviewAction, ImagePreviewOption, ImagePreviewResult, ImagePreviewResultType, ImagePreviewViewModel and ImagePreviewViewModelFactory. These were removed in favor of using the newer MediaGalleryPreviewActivity along with it's accompanying classes. The removed classes have their media gallery counterparts, for instance ImagePreviewAction becomes MediaGalleryPreviewAction, and so on. #4766