Skip to content

Conversation

@martinmitrevski
Copy link
Contributor

🔗 Issue Links

Provide all Linear and/or Github issues related to this PR, if applicable.

🎯 Goal

Describe why we are making this change.

📝 Summary

Provide bullet points with the most important changes in the codebase.

🛠 Implementation

Provide a detailed description of the implementation and explain your decisions if you find them relevant.

🎨 Showcase

Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable.

Before After
img img

🧪 Manual Testing Notes

Explain how this change can be tested manually, if applicable.

☑️ Contributor Checklist

  • I have signed the Stream CLA (required)
  • This change should be manually QAed
  • Changelog is updated with client-facing changes
  • Changelog is updated with new localization keys
  • New code is covered by unit tests
  • Documentation has been updated in the docs-content repo

@martinmitrevski martinmitrevski requested a review from a team as a code owner December 18, 2025 13:42
@martinmitrevski martinmitrevski marked this pull request as draft December 18, 2025 13:42
@github-actions
Copy link

1 Warning
⚠️ Big PR
1 Message
📖 There seems to be app changes but CHANGELOG wasn't modified.
Please include an entry if the PR includes user-facing changes.
You can find it at CHANGELOG.md.

Generated by 🚫 Danger

set { _availableReactions = newValue }
}

public var availableEmojis: [String] = [
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@github-actions
Copy link

Public Interface

+ public struct LiquidGlassModifier: ViewModifier  
+ 
+   public init(shape: BackgroundShape)
+   
+ 
+   public func body(content: Content)-> some View

+ public final class MoreReactionsViewOptions: Sendable  
+ 
+   public let onEmojiTap: @MainActor (String) -> Void
+   
+ 
+   public init(onEmojiTap: @escaping @MainActor (String) -> Void)

+ public final class ComposerInputTrailingViewOptions: @unchecked Sendable  
+ 
+   @Binding public var text: String
+   @Binding public var recordingState: RecordingState
+   public let sendButtonEnabled: Bool
+   public let startRecording: () -> Void
+   public let stopRecording: () -> Void
+   public let sendMessage: () -> Void
+   
+ 
+   public init(text: Binding<String>,recordingState: Binding<RecordingState>,sendButtonEnabled: Bool,startRecording: @escaping () -> Void,stopRecording: @escaping () -> Void,sendMessage: @escaping () -> Void)

+ public class RegularStyles: Styles  
+ 
+   public var composerPlacement: ComposerPlacement
+   
+ 
+   public init()
+   
+ 
+   public func makeComposerInputViewModifier(options: ComposerInputModifierOptions)-> some ViewModifier
+   public func makeComposerButtonViewModifier(options: ComposerButtonModifierOptions)-> some ViewModifier

+ public enum ComposerPlacement  
+ 
+   case docked
+   case floating

+ public class ComposerInputModifierOptions  
+ 
+   public let keyboardShown: Bool
+   
+ 
+   public init(keyboardShown: Bool)

+ extension Styles  
+ 
+   public func makeChannelListContentModifier(options: ChannelListContentModifierOptions)-> some ViewModifier
+   public func makeChannelListModifier(options: ChannelListModifierOptions)-> some ViewModifier
+   public func makeMessageListModifier(options: MessageListModifierOptions)-> some ViewModifier
+   public func makeMessageListContainerModifier(options: MessageListContainerModifierOptions)-> some ViewModifier
+   public func makeMessageViewModifier(for messageModifierInfo: MessageModifierInfo)-> some ViewModifier
+   public func makeBouncedMessageActionsModifier(viewModel: ChatChannelViewModel)-> some ViewModifier
+   public func makeComposerViewModifier(options: ComposerViewModifierOptions)-> some ViewModifier

+ public class ComposerButtonModifierOptions  
+ 
+   public init()

+ public struct StandardInputViewModifier: ViewModifier  
+ 
+   public init(keyboardShown: Bool)
+   
+ 
+   public func body(content: Content)-> some View

+ @MainActor public protocol Styles

+ public class LiquidGlassStyles: Styles  
+ 
+   public var composerPlacement: ComposerPlacement
+   
+ 
+   public init()
+   
+ 
+   public func makeComposerInputViewModifier(options: ComposerInputModifierOptions)-> some ViewModifier
+   public func makeComposerButtonViewModifier(options: ComposerButtonModifierOptions)-> some ViewModifier



 @MainActor public class Images  
-   public var messageListErrorIndicator: UIImage
+   public var availableEmojis: [String]
-   public var file7z: UIImage
+   public var messageListErrorIndicator: UIImage
-   public var fileAac: UIImage
+   public var file7z: UIImage
-   public var fileCsv: UIImage
+   public var fileAac: UIImage
-   public var fileDoc: UIImage
+   public var fileCsv: UIImage
-   public var fileDocx: UIImage
+   public var fileDoc: UIImage
-   public var fileHtml: UIImage
+   public var fileDocx: UIImage
-   public var fileMd: UIImage
+   public var fileHtml: UIImage
-   public var fileMp3: UIImage
+   public var fileMd: UIImage
-   public var fileOdt: UIImage
+   public var fileMp3: UIImage
-   public var filePdf: UIImage
+   public var fileOdt: UIImage
-   public var filePpt: UIImage
+   public var filePdf: UIImage
-   public var filePptx: UIImage
+   public var filePpt: UIImage
-   public var fileRar: UIImage
+   public var filePptx: UIImage
-   public var fileRtf: UIImage
+   public var fileRar: UIImage
-   public var fileTargz: UIImage
+   public var fileRtf: UIImage
-   public var fileTxt: UIImage
+   public var fileTargz: UIImage
-   public var fileXls: UIImage
+   public var fileTxt: UIImage
-   public var fileXlsx: UIImage
+   public var fileXls: UIImage
-   public var filezip: UIImage
+   public var fileXlsx: UIImage
-   public var fileFallback: UIImage
+   public var filezip: UIImage
-   public var documentPreviews: [String: UIImage]
+   public var fileFallback: UIImage
-   public var fileIcons: [AttachmentFileType: UIImage]
+   public var documentPreviews: [String: UIImage]
-   public var messageActionInlineReply: UIImage
+   public var fileIcons: [AttachmentFileType: UIImage]
-   public var messageActionThreadReply: UIImage
+   public var messageActionInlineReply: UIImage
-   public var messageActionEdit: UIImage
+   public var messageActionThreadReply: UIImage
-   public var messageActionCopy: UIImage
+   public var messageActionEdit: UIImage
-   public var messageActionBlockUser: UIImage
+   public var messageActionCopy: UIImage
-   public var messageActionMuteUser: UIImage
+   public var messageActionBlockUser: UIImage
-   public var messageActionDelete: UIImage
+   public var messageActionMuteUser: UIImage
-   public var messageActionResend: UIImage
+   public var messageActionDelete: UIImage
-   public var userAvatarPlaceholder1: UIImage
+   public var messageActionResend: UIImage
-   public var userAvatarPlaceholder2: UIImage
+   public var userAvatarPlaceholder1: UIImage
-   public var userAvatarPlaceholder3: UIImage
+   public var userAvatarPlaceholder2: UIImage
-   public var userAvatarPlaceholder4: UIImage
+   public var userAvatarPlaceholder3: UIImage
-   public var userAvatarPlaceholder5: UIImage
+   public var userAvatarPlaceholder4: UIImage
-   public var avatarPlaceholders: [UIImage]
+   public var userAvatarPlaceholder5: UIImage
-   public var imagePlaceholder: UIImage
+   public var avatarPlaceholders: [UIImage]
-   public var personPlaceholder: UIImage
+   public var imagePlaceholder: UIImage
-   public var fileAttachmentActionIcons: [LocalAttachmentState?: UIImage]
+   public var personPlaceholder: UIImage
-   public var attachmentPickerPhotos: UIImage
+   public var fileAttachmentActionIcons: [LocalAttachmentState?: UIImage]
-   public var attachmentPickerFolder: UIImage
+   public var attachmentPickerPhotos: UIImage
-   public var attachmentPickerCamera: UIImage
+   public var attachmentPickerFolder: UIImage
-   public var attachmentPickerPolls: UIImage
+   public var attachmentPickerCamera: UIImage
-   public var camera: UIImage
+   public var attachmentPickerPolls: UIImage
-   public var bigPlay: UIImage
+   public var camera: UIImage
-   public var play: UIImage
+   public var bigPlay: UIImage
-   public var playFilled: UIImage
+   public var play: UIImage
-   public var pause: UIImage
+   public var playFilled: UIImage
-   public var pauseFilled: UIImage
+   public var pause: UIImage
-   public var checkmarkFilled: UIImage
+   public var pauseFilled: UIImage
-   public var commandBan: UIImage
+   public var checkmarkFilled: UIImage
-   public var commandFlag: UIImage
+   public var commandBan: UIImage
-   public var commandGiphy: UIImage
+   public var commandFlag: UIImage
-   public var commandImgur: UIImage
+   public var commandGiphy: UIImage
-   public var commandMention: UIImage
+   public var commandImgur: UIImage
-   public var commandMute: UIImage
+   public var commandMention: UIImage
-   public var commandUnban: UIImage
+   public var commandMute: UIImage
-   public var commandUnmute: UIImage
+   public var commandUnban: UIImage
-   public var commandFallback: UIImage
+   public var commandUnmute: UIImage
-   public var commandIcons: [String: UIImage]
+   public var commandFallback: UIImage
-   public var searchIcon: UIImage
+   public var commandIcons: [String: UIImage]
-   public var searchCloseIcon: UIImage
+   public var searchIcon: UIImage
-   public var threadIcon: UIImage
+   public var searchCloseIcon: UIImage
-   public var noContent: UIImage
+   public var threadIcon: UIImage
-   public var noMedia: UIImage
+   public var noContent: UIImage
-   public var noThreads: UIImage
+   public var noMedia: UIImage
-   
+   public var noThreads: UIImage
- 
+   
-   public init()
+ 
+   public init()

 public struct ReactionsAnimatableView: View  
-   public init(message: ChatMessage,useLargeIcons: Bool = false,reactions: [MessageReactionType],onReactionTap: @escaping (MessageReactionType) -> Void)
+   public init(message: ChatMessage,useLargeIcons: Bool = false,reactions: [MessageReactionType],onReactionTap: @escaping (MessageReactionType) -> Void,onMoreReactionsTap: @escaping () -> Void)

 public struct AttachmentSourcePickerView: View  
-   public init(selected: AttachmentPickerState,onTap: @escaping (AttachmentPickerState) -> Void)
+   public init(selected: AttachmentPickerState,canSendPoll: Bool,onTap: @escaping (AttachmentPickerState) -> Void)

 public final class AttachmentPickerViewOptions: Sendable  
-   
+   public let selectedAssetIds: [String]?
- 
+   public let channelController: ChatChannelController
-   public init(attachmentPickerState: Binding<AttachmentPickerState>,filePickerShown: Binding<Bool>,cameraPickerShown: Binding<Bool>,addedFileURLs: Binding<[URL]>,onPickerStateChange: @escaping @MainActor (AttachmentPickerState) -> Void,photoLibraryAssets: PHFetchResult<PHAsset>?,onAssetTap: @escaping @MainActor (AddedAsset) -> Void,onCustomAttachmentTap: @escaping @MainActor (CustomAttachment) -> Void,isAssetSelected: @escaping @MainActor (String) -> Bool,addedCustomAttachments: [CustomAttachment],cameraImageAdded: @escaping @MainActor (AddedAsset) -> Void,askForAssetsAccessPermissions: @escaping @MainActor () -> Void,isDisplayed: Bool,height: CGFloat,popupHeight: CGFloat)
+   public let messageController: ChatMessageController?
+   public let canSendPoll: Bool
+   
+ 
+   public init(attachmentPickerState: Binding<AttachmentPickerState>,filePickerShown: Binding<Bool>,cameraPickerShown: Binding<Bool>,addedFileURLs: Binding<[URL]>,onPickerStateChange: @escaping @MainActor (AttachmentPickerState) -> Void,photoLibraryAssets: PHFetchResult<PHAsset>?,onAssetTap: @escaping @MainActor (AddedAsset) -> Void,onCustomAttachmentTap: @escaping @MainActor (CustomAttachment) -> Void,isAssetSelected: @escaping @MainActor (String) -> Bool,addedCustomAttachments: [CustomAttachment],cameraImageAdded: @escaping @MainActor (AddedAsset) -> Void,askForAssetsAccessPermissions: @escaping @MainActor () -> Void,isDisplayed: Bool,height: CGFloat,popupHeight: CGFloat,selectedAssetIds: [String]? = nil,channelController: ChatChannelController,messageController: ChatMessageController?,canSendPoll: Bool)

 public struct VoiceRecordingButton: View  
-   
- 
-   public init(viewModel: MessageComposerViewModel)

 public struct ChatChannelView: View, KeyboardReadable  
-   public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: ChatChannelViewModel? = nil,channelController: ChatChannelController,messageController: ChatMessageController? = nil,scrollToMessage: ChatMessage? = nil)
+   public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: ChatChannelViewModel? = nil,channelController: ChatChannelController,messageController: ChatMessageController? = nil,scrollToMessage: ChatMessage? = nil,composerPlacement: ComposerPlacement = .floating)

 public final class AttachmentSourcePickerViewOptions: Sendable  
-   public let onPickerStateChange: @MainActor (AttachmentPickerState) -> Void
+   public let canSendPoll: Bool
-   
+   public let onPickerStateChange: @MainActor (AttachmentPickerState) -> Void
- 
+   
-   public init(selected: AttachmentPickerState,onPickerStateChange: @escaping @MainActor (AttachmentPickerState) -> Void)
+ 
+   public init(selected: AttachmentPickerState,canSendPoll: Bool,onPickerStateChange: @escaping @MainActor (AttachmentPickerState) -> Void)

 extension ViewFactory  
-   public func supportedMoreChannelActions(options: SupportedMoreChannelActionsOptions)-> [ChannelAction]
+   public func makeMoreChannelActionsView(options: MoreChannelActionsViewOptions)-> some View
-   public func makeMoreChannelActionsView(options: MoreChannelActionsViewOptions)-> some View
+   public func makeChannelListItem(options: ChannelListItemOptions<ChannelDestination>)-> some View
-   public func makeChannelListItem(options: ChannelListItemOptions<ChannelDestination>)-> some View
+   public func makeChannelAvatarView(options: ChannelAvatarViewFactoryOptions)-> some View
-   public func makeChannelAvatarView(options: ChannelAvatarViewFactoryOptions)-> some View
+   public func makeChannelListBackground(options: ChannelListBackgroundOptions)-> some View
-   public func makeChannelListBackground(options: ChannelListBackgroundOptions)-> some View
+   public func makeChannelListItemBackground(options: ChannelListItemBackgroundOptions)-> some View
-   public func makeChannelListItemBackground(options: ChannelListItemBackgroundOptions)-> some View
+   public func makeChannelListDividerItem(options: ChannelListDividerItemOptions)-> some View
-   public func makeChannelListDividerItem(options: ChannelListDividerItemOptions)-> some View
+   public func makeTrailingSwipeActionsView(options: TrailingSwipeActionsViewOptions)-> TrailingSwipeActionsView
-   public func makeTrailingSwipeActionsView(options: TrailingSwipeActionsViewOptions)-> TrailingSwipeActionsView
+   public func makeLeadingSwipeActionsView(options: LeadingSwipeActionsViewOptions)-> EmptyView
-   public func makeLeadingSwipeActionsView(options: LeadingSwipeActionsViewOptions)-> EmptyView
+   public func makeChannelListTopView(options: ChannelListTopViewOptions)-> some View
-   public func makeChannelListTopView(options: ChannelListTopViewOptions)-> some View
+   public func makeChannelListFooterView(options: ChannelListFooterViewOptions)-> some View
-   public func makeChannelListFooterView(options: ChannelListFooterViewOptions)-> some View
+   public func makeChannelListStickyFooterView(options: ChannelListStickyFooterViewOptions)-> some View
-   public func makeChannelListStickyFooterView(options: ChannelListStickyFooterViewOptions)-> some View
+   public func makeSearchResultsView(options: SearchResultsViewOptions)-> some View
-   public func makeSearchResultsView(options: SearchResultsViewOptions)-> some View
+   public func makeChannelListSearchResultItem(options: ChannelListSearchResultItemOptions<ChannelDestination>)-> some View
-   public func makeChannelListSearchResultItem(options: ChannelListSearchResultItemOptions<ChannelDestination>)-> some View
+   public func makeChannelDestination(options: ChannelDestinationOptions)-> @MainActor (ChannelSelectionInfo) -> ChatChannelView<Self>
-   public func makeChannelListContentModifier(options: ChannelListContentModifierOptions)-> some ViewModifier
+   public func makeMessageThreadDestination(options: MessageThreadDestinationOptions)-> @MainActor (ChatChannel, ChatMessage) -> ChatChannelView<Self>
-   public func makeChannelListModifier(options: ChannelListModifierOptions)-> some ViewModifier
+   public func makeEmptyMessagesView(options: EmptyMessagesViewOptions)-> some View
-   public func makeChannelDestination(options: ChannelDestinationOptions)-> @MainActor (ChannelSelectionInfo) -> ChatChannelView<Self>
+   public func makeMessageAvatarView(options: MessageAvatarViewOptions)-> some View
-   public func makeMessageThreadDestination(options: MessageThreadDestinationOptions)-> @MainActor (ChatChannel, ChatMessage) -> ChatChannelView<Self>
+   public func makeQuotedMessageAvatarView(options: QuotedMessageAvatarViewOptions)-> some View
-   public func makeMessageListModifier(options: MessageListModifierOptions)-> some ViewModifier
+   public func makeChannelHeaderViewModifier(options: ChannelHeaderViewModifierOptions)-> some ChatChannelHeaderViewModifier
-   public func makeMessageListContainerModifier(options: MessageListContainerModifierOptions)-> some ViewModifier
+   public func makeChannelBarsVisibilityViewModifier(options: ChannelBarsVisibilityViewModifierOptions)-> some ViewModifier
-   public func makeMessageViewModifier(for messageModifierInfo: MessageModifierInfo)-> some ViewModifier
+   public func makeChannelLoadingView(options: ChannelLoadingViewOptions)-> some View
-   public func makeBouncedMessageActionsModifier(viewModel: ChatChannelViewModel)-> some ViewModifier
+   public func makeMessageThreadHeaderViewModifier(options: MessageThreadHeaderViewModifierOptions)-> some MessageThreadHeaderViewModifier
-   public func makeEmptyMessagesView(options: EmptyMessagesViewOptions)-> some View
+   public func makeMessageListBackground(options: MessageListBackgroundOptions)-> some View
-   public func makeMessageAvatarView(options: MessageAvatarViewOptions)-> some View
+   public func makeMessageContainerView(options: MessageContainerViewOptions)-> some View
-   public func makeQuotedMessageAvatarView(options: QuotedMessageAvatarViewOptions)-> some View
+   public func makeMessageTextView(options: MessageTextViewOptions)-> some View
-   public func makeChannelHeaderViewModifier(options: ChannelHeaderViewModifierOptions)-> some ChatChannelHeaderViewModifier
+   public func makeMessageDateView(options: MessageDateViewOptions)-> some View
-   public func makeChannelBarsVisibilityViewModifier(options: ChannelBarsVisibilityViewModifierOptions)-> some ViewModifier
+   public func makeMessageAuthorAndDateView(options: MessageAuthorAndDateViewOptions)-> some View
-   public func makeChannelLoadingView(options: ChannelLoadingViewOptions)-> some View
+   public func makeLastInGroupHeaderView(options: LastInGroupHeaderViewOptions)-> some View
-   public func makeMessageThreadHeaderViewModifier(options: MessageThreadHeaderViewModifierOptions)-> some MessageThreadHeaderViewModifier
+   public func makeMessageTranslationFooterView(options: MessageTranslationFooterViewOptions)-> some View
-   public func makeMessageListBackground(options: MessageListBackgroundOptions)-> some View
+   public func makeImageAttachmentView(options: ImageAttachmentViewOptions)-> some View
-   public func makeMessageContainerView(options: MessageContainerViewOptions)-> some View
+   public func makeGiphyAttachmentView(options: GiphyAttachmentViewOptions)-> some View
-   public func makeMessageTextView(options: MessageTextViewOptions)-> some View
+   public func makeLinkAttachmentView(options: LinkAttachmentViewOptions)-> some View
-   public func makeMessageDateView(options: MessageDateViewOptions)-> some View
+   public func makeFileAttachmentView(options: FileAttachmentViewOptions)-> some View
-   public func makeMessageAuthorAndDateView(options: MessageAuthorAndDateViewOptions)-> some View
+   public func makeVideoAttachmentView(options: VideoAttachmentViewOptions)-> some View
-   public func makeLastInGroupHeaderView(options: LastInGroupHeaderViewOptions)-> some View
+   public func makeGalleryView(options: GalleryViewOptions)-> some View
-   public func makeMessageTranslationFooterView(options: MessageTranslationFooterViewOptions)-> some View
+   public func makeGalleryHeaderView(options: GalleryHeaderViewOptions)-> some View
-   public func makeImageAttachmentView(options: ImageAttachmentViewOptions)-> some View
+   public func makeVideoPlayerView(options: VideoPlayerViewOptions)-> some View
-   public func makeGiphyAttachmentView(options: GiphyAttachmentViewOptions)-> some View
+   public func makeVideoPlayerHeaderView(options: VideoPlayerHeaderViewOptions)-> some View
-   public func makeLinkAttachmentView(options: LinkAttachmentViewOptions)-> some View
+   public func makeVideoPlayerFooterView(options: VideoPlayerFooterViewOptions)-> some View
-   public func makeFileAttachmentView(options: FileAttachmentViewOptions)-> some View
+   public func makeDeletedMessageView(options: DeletedMessageViewOptions)-> some View
-   public func makeVideoAttachmentView(options: VideoAttachmentViewOptions)-> some View
+   public func makeSystemMessageView(options: SystemMessageViewOptions)-> some View
-   public func makeGalleryView(options: GalleryViewOptions)-> some View
+   public func makeEmojiTextView(options: EmojiTextViewOptions)-> some View
-   public func makeGalleryHeaderView(options: GalleryHeaderViewOptions)-> some View
+   public func makeCustomAttachmentViewType(options: CustomAttachmentViewTypeOptions)-> some View
-   public func makeVideoPlayerView(options: VideoPlayerViewOptions)-> some View
+   public func makeScrollToBottomButton(options: ScrollToBottomButtonOptions)-> some View
-   public func makeVideoPlayerHeaderView(options: VideoPlayerHeaderViewOptions)-> some View
+   public func makeDateIndicatorView(options: DateIndicatorViewOptions)-> some View
-   public func makeVideoPlayerFooterView(options: VideoPlayerFooterViewOptions)-> some View
+   public func makeMessageListDateIndicator(options: MessageListDateIndicatorViewOptions)-> some View
-   public func makeDeletedMessageView(options: DeletedMessageViewOptions)-> some View
+   public func makeTypingIndicatorBottomView(options: TypingIndicatorBottomViewOptions)-> some View
-   public func makeSystemMessageView(options: SystemMessageViewOptions)-> some View
+   public func makeGiphyBadgeViewType(options: GiphyBadgeViewTypeOptions)-> some View
-   public func makeEmojiTextView(options: EmojiTextViewOptions)-> some View
+   public func makeMessageRepliesView(options: MessageRepliesViewOptions)-> some View
-   public func makeCustomAttachmentViewType(options: CustomAttachmentViewTypeOptions)-> some View
+   public func makeMessageRepliesShownInChannelView(options: MessageRepliesShownInChannelViewOptions)-> some View
-   public func makeScrollToBottomButton(options: ScrollToBottomButtonOptions)-> some View
+   public func makeMessageComposerViewType(options: MessageComposerViewTypeOptions)-> MessageComposerView<Self>
-   public func makeDateIndicatorView(options: DateIndicatorViewOptions)-> some View
+   public func makeLeadingComposerView(options: LeadingComposerViewOptions)-> some View
-   public func makeMessageListDateIndicator(options: MessageListDateIndicatorViewOptions)-> some View
+   @ViewBuilder public func makeComposerInputView(options: ComposerInputViewOptions)-> some View
-   public func makeTypingIndicatorBottomView(options: TypingIndicatorBottomViewOptions)-> some View
+   public func makeComposerTextInputView(options: ComposerTextInputViewOptions)-> some View
-   public func makeGiphyBadgeViewType(options: GiphyBadgeViewTypeOptions)-> some View
+   public func makeComposerInputTrailingView(options: ComposerInputTrailingViewOptions)-> some View
-   public func makeMessageRepliesView(options: MessageRepliesViewOptions)-> some View
+   public func makeTrailingComposerView(options: TrailingComposerViewOptions)-> some View
-   public func makeMessageRepliesShownInChannelView(options: MessageRepliesShownInChannelViewOptions)-> some View
+   public func makeComposerRecordingView(options: ComposerRecordingViewOptions)-> some View
-   public func makeMessageComposerViewType(options: MessageComposerViewTypeOptions)-> MessageComposerView<Self>
+   public func makeComposerRecordingLockedView(options: ComposerRecordingLockedViewOptions)-> some View
-   public func makeLeadingComposerView(options: LeadingComposerViewOptions)-> some View
+   public func makeComposerRecordingTipView(options: ComposerRecordingTipViewOptions)-> some View
-   @ViewBuilder public func makeComposerInputView(options: ComposerInputViewOptions)-> some View
+   public func makeAttachmentPickerView(options: AttachmentPickerViewOptions)-> some View
-   public func makeComposerTextInputView(options: ComposerTextInputViewOptions)-> some View
+   public func makeVoiceRecordingView(options: VoiceRecordingViewOptions)-> some View
-   public func makeTrailingComposerView(options: TrailingComposerViewOptions)-> some View
+   public func makeCustomAttachmentView(options: CustomComposerAttachmentViewOptions)-> some View
-   public func makeComposerRecordingView(options: ComposerRecordingViewOptions)-> some View
+   public func makeCustomAttachmentPreviewView(options: CustomAttachmentPreviewViewOptions)-> some View
-   public func makeComposerRecordingLockedView(options: ComposerRecordingLockedViewOptions)-> some View
+   public func makeAttachmentSourcePickerView(options: AttachmentSourcePickerViewOptions)-> some View
-   public func makeComposerRecordingTipView(options: ComposerRecordingTipViewOptions)-> some View
+   public func makePhotoAttachmentPickerView(options: PhotoAttachmentPickerViewOptions)-> some View
-   public func makeComposerViewModifier(options: ComposerViewModifierOptions)-> some ViewModifier
+   public func makeFilePickerView(options: FilePickerViewOptions)-> some View
-   public func makeAttachmentPickerView(options: AttachmentPickerViewOptions)-> some View
+   public func makeCameraPickerView(options: CameraPickerViewOptions)-> some View
-   public func makeVoiceRecordingView(options: VoiceRecordingViewOptions)-> some View
+   public func makeAssetsAccessPermissionView(options: AssetsAccessPermissionViewOptions)-> some View
-   public func makeCustomAttachmentView(options: CustomComposerAttachmentViewOptions)-> some View
+   public func makeSendInChannelView(options: SendInChannelViewOptions)-> some View
-   public func makeCustomAttachmentPreviewView(options: CustomAttachmentPreviewViewOptions)-> some View
+   public func makeMessageActionsView(options: MessageActionsViewOptions)-> some View
-   public func makeAttachmentSourcePickerView(options: AttachmentSourcePickerViewOptions)-> some View
+   public func makeReactionsUsersView(options: ReactionsUsersViewOptions)-> some View
-   public func makePhotoAttachmentPickerView(options: PhotoAttachmentPickerViewOptions)-> some View
+   public func makeBottomReactionsView(options: ReactionsBottomViewOptions)-> some View
-   public func makeFilePickerView(options: FilePickerViewOptions)-> some View
+   public func makeMessageReactionView(options: MessageReactionViewOptions)-> some View
-   public func makeCameraPickerView(options: CameraPickerViewOptions)-> some View
+   public func makeReactionsOverlayView(options: ReactionsOverlayViewOptions)-> some View
-   public func makeAssetsAccessPermissionView(options: AssetsAccessPermissionViewOptions)-> some View
+   public func makeReactionsContentView(options: ReactionsContentViewOptions)-> some View
-   public func makeSendInChannelView(options: SendInChannelViewOptions)-> some View
+   public func makeReactionsBackgroundView(options: ReactionsBackgroundOptions)-> some View
-   public func supportedMessageActions(options: SupportedMessageActionsOptions)-> [MessageAction]
+   public func makeMoreReactionsView(options: MoreReactionsViewOptions)-> some View
-   public func makeMessageActionsView(options: MessageActionsViewOptions)-> some View
+   public func makeQuotedMessageHeaderView(options: QuotedMessageHeaderViewOptions)-> some View
-   public func makeReactionsUsersView(options: ReactionsUsersViewOptions)-> some View
+   public func makeQuotedMessageView(options: QuotedMessageViewOptions)-> some View
-   public func makeBottomReactionsView(options: ReactionsBottomViewOptions)-> some View
+   public func makeQuotedMessageContentView(options: QuotedMessageContentViewOptions)-> some View
-   public func makeMessageReactionView(options: MessageReactionViewOptions)-> some View
+   public func makeCustomAttachmentQuotedView(options: CustomAttachmentQuotedViewOptions)-> some View
-   public func makeReactionsOverlayView(options: ReactionsOverlayViewOptions)-> some View
+   public func makeEditedMessageHeaderView(options: EditedMessageHeaderViewOptions)-> some View
-   public func makeReactionsContentView(options: ReactionsContentViewOptions)-> some View
+   public func makeCommandsContainerView(options: CommandsContainerViewOptions)-> some View
-   public func makeReactionsBackgroundView(options: ReactionsBackgroundOptions)-> some View
+   public func makeMessageReadIndicatorView(options: MessageReadIndicatorViewOptions)-> some View
-   public func makeQuotedMessageHeaderView(options: QuotedMessageHeaderViewOptions)-> some View
+   public func makeNewMessagesIndicatorView(options: NewMessagesIndicatorViewOptions)-> some View
-   public func makeQuotedMessageView(options: QuotedMessageViewOptions)-> some View
+   public func makeJumpToUnreadButton(options: JumpToUnreadButtonOptions)-> some View
-   public func makeQuotedMessageContentView(options: QuotedMessageContentViewOptions)-> some View
+   public func makeComposerPollView(options: ComposerPollViewOptions)-> some View
-   public func makeCustomAttachmentQuotedView(options: CustomAttachmentQuotedViewOptions)-> some View
+   public func makePollView(options: PollViewOptions)-> some View
-   public func makeEditedMessageHeaderView(options: EditedMessageHeaderViewOptions)-> some View
+   public func makeThreadDestination(options: ThreadDestinationOptions)-> @MainActor (ChatThread) -> ChatChannelView<Self>
-   public func makeCommandsContainerView(options: CommandsContainerViewOptions)-> some View
+   public func makeThreadListItem(options: ThreadListItemOptions<ThreadDestination>)-> some View
-   public func makeMessageReadIndicatorView(options: MessageReadIndicatorViewOptions)-> some View
+   public func makeNoThreadsView(options: NoThreadsViewOptions)-> some View
-   public func makeNewMessagesIndicatorView(options: NewMessagesIndicatorViewOptions)-> some View
+   public func makeThreadsListErrorBannerView(options: ThreadListErrorBannerViewOptions)-> some View
-   public func makeJumpToUnreadButton(options: JumpToUnreadButtonOptions)-> some View
+   public func makeThreadListLoadingView(options: ThreadListLoadingViewOptions)-> some View
-   public func makeComposerPollView(options: ComposerPollViewOptions)-> some View
+   public func makeThreadListContainerViewModifier(options: ThreadListContainerModifierOptions)-> some ViewModifier
-   public func makePollView(options: PollViewOptions)-> some View
+   public func makeThreadListHeaderViewModifier(options: ThreadListHeaderViewModifierOptions)-> some ViewModifier
-   public func makeThreadDestination(options: ThreadDestinationOptions)-> @MainActor (ChatThread) -> ChatChannelView<Self>
+   public func makeThreadListHeaderView(options: ThreadListHeaderViewOptions)-> some View
-   public func makeThreadListItem(options: ThreadListItemOptions<ThreadDestination>)-> some View
+   public func makeThreadListFooterView(options: ThreadListFooterViewOptions)-> some View
-   public func makeNoThreadsView(options: NoThreadsViewOptions)-> some View
+   public func makeThreadListBackground(options: ThreadListBackgroundOptions)-> some View
-   public func makeThreadsListErrorBannerView(options: ThreadListErrorBannerViewOptions)-> some View
+   public func makeThreadListItemBackground(options: ThreadListItemBackgroundOptions)-> some View
-   public func makeThreadListLoadingView(options: ThreadListLoadingViewOptions)-> some View
+   public func makeThreadListDividerItem(options: ThreadListDividerItemOptions)-> some View
-   public func makeThreadListContainerViewModifier(options: ThreadListContainerModifierOptions)-> some ViewModifier
+   public func makeAddUsersView(options: AddUsersViewOptions)-> some View
-   public func makeThreadListHeaderViewModifier(options: ThreadListHeaderViewModifierOptions)-> some ViewModifier
+   public func makeAttachmentTextView(options: AttachmentTextViewOptions)-> some View
-   public func makeThreadListHeaderView(options: ThreadListHeaderViewOptions)-> some View
-   public func makeThreadListFooterView(options: ThreadListFooterViewOptions)-> some View
-   public func makeThreadListBackground(options: ThreadListBackgroundOptions)-> some View
-   public func makeThreadListItemBackground(options: ThreadListItemBackgroundOptions)-> some View
-   public func makeThreadListDividerItem(options: ThreadListDividerItemOptions)-> some View
-   public func makeAddUsersView(options: AddUsersViewOptions)-> some View
-   public func makeAttachmentTextView(options: AttachmentTextViewOptions)-> some View

 public struct MessageComposerView: View, KeyboardReadable  
+   
+ 
+   public func sendMessage()

 public struct MessageListConfig  
-   
+   public var navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode
- 
+   public var supportedMessageActions: @MainActor (SupportedMessageActionsOptions) -> [MessageAction]
-   public init(messageListType: MessageListType = .messaging,typingIndicatorPlacement: TypingIndicatorPlacement = .bottomOverlay,groupMessages: Bool = true,messageDisplayOptions: MessageDisplayOptions = MessageDisplayOptions(),messagePaddings: MessagePaddings = MessagePaddings(),dateIndicatorPlacement: DateIndicatorPlacement = .overlay,pageSize: Int = 25,messagePopoverEnabled: Bool = true,doubleTapOverlayEnabled: Bool = false,becomesFirstResponderOnOpen: Bool = false,resignsFirstResponderOnScrollDown: Bool = true,updateChannelsFromMessageList: Bool = false,maxTimeIntervalBetweenMessagesInGroup: TimeInterval = 60,cacheSizeOnChatDismiss: Int = 1024 * 1024 * 100,iPadSplitViewEnabled: Bool = true,scrollingAnchor: UnitPoint = .center,showNewMessagesSeparator: Bool = true,highlightMessageWhenJumping: Bool = true,handleTabBarVisibility: Bool = true,messageListAlignment: MessageListAlignment = .standard,uniqueReactionsEnabled: Bool = false,localLinkDetectionEnabled: Bool = true,isMessageEditedLabelEnabled: Bool = true,markdownSupportEnabled: Bool = true,userBlockingEnabled: Bool = false,bouncedMessagesAlertActionsEnabled: Bool = true,skipEditedMessageLabel: @escaping (ChatMessage) -> Bool = { _ in false },draftMessagesEnabled: Bool = false,downloadFileAttachmentsEnabled: Bool = false,hidesCommandsOverlayOnMessageListTap: Bool = true,hidesAttachmentsPickersOnMessageListTap: Bool = true)
+   
+ 
+   public init(messageListType: MessageListType = .messaging,typingIndicatorPlacement: TypingIndicatorPlacement = .bottomOverlay,groupMessages: Bool = true,messageDisplayOptions: MessageDisplayOptions = MessageDisplayOptions(),messagePaddings: MessagePaddings = MessagePaddings(),dateIndicatorPlacement: DateIndicatorPlacement = .overlay,pageSize: Int = 25,messagePopoverEnabled: Bool = true,doubleTapOverlayEnabled: Bool = false,becomesFirstResponderOnOpen: Bool = false,resignsFirstResponderOnScrollDown: Bool = true,updateChannelsFromMessageList: Bool = false,maxTimeIntervalBetweenMessagesInGroup: TimeInterval = 60,cacheSizeOnChatDismiss: Int = 1024 * 1024 * 100,iPadSplitViewEnabled: Bool = true,scrollingAnchor: UnitPoint = .center,showNewMessagesSeparator: Bool = true,highlightMessageWhenJumping: Bool = true,handleTabBarVisibility: Bool = true,messageListAlignment: MessageListAlignment = .standard,uniqueReactionsEnabled: Bool = false,localLinkDetectionEnabled: Bool = true,isMessageEditedLabelEnabled: Bool = true,markdownSupportEnabled: Bool = true,userBlockingEnabled: Bool = false,bouncedMessagesAlertActionsEnabled: Bool = true,skipEditedMessageLabel: @escaping (ChatMessage) -> Bool = { _ in false },draftMessagesEnabled: Bool = false,downloadFileAttachmentsEnabled: Bool = false,hidesCommandsOverlayOnMessageListTap: Bool = true,hidesAttachmentsPickersOnMessageListTap: Bool = true,navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode = .inline,supportedMessageActions: @escaping @MainActor (SupportedMessageActionsOptions) -> [MessageAction] = MessageAction.defaultActions(for:))

 extension ChannelAction  
-   @MainActor public static func defaultActions(for channel: ChatChannel,chatClient: ChatClient,onDismiss: @escaping @MainActor () -> Void,onError: @escaping @MainActor (Error) -> Void)-> [ChannelAction]
+   @MainActor public static func defaultActions(for options: SupportedMoreChannelActionsOptions)-> [ChannelAction]

 public struct ChannelListConfig  
-   public var showChannelListDividerOnLastItem: Bool
+   public var navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode
-   public var channelItemMutedStyle: ChannelItemMutedLayoutStyle
+   public var showChannelListDividerOnLastItem: Bool
-   
+   public var channelItemMutedStyle: ChannelItemMutedLayoutStyle
- 
+   public var supportedMoreChannelActions: @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction]
-   public init(messageRelativeDateFormatEnabled: Bool = false,showChannelListDividerOnLastItem: Bool = true,channelItemMutedStyle: ChannelItemMutedLayoutStyle = .default)
+   
+ 
+   public init(channelItemMutedStyle: ChannelItemMutedLayoutStyle = .default,messageRelativeDateFormatEnabled: Bool = false,navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode = .inline,showChannelListDividerOnLastItem: Bool = true,supportedMoreChannelActions: @escaping @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction] = ChannelAction.defaultActions(for:))

 public struct AttachmentPickerTypeView: View  
-   public init(pickerTypeState: Binding<PickerTypeState>,channelConfig: ChannelConfig?)
+   public init(pickerTypeState: Binding<PickerTypeState>,channelConfig: ChannelConfig?,channelController: ChatChannelController,isSendMessageEnabled: Bool)

 public struct ComposerInputView: View, KeyboardReadable  
-   public init(factory: Factory,text: Binding<String>,selectedRangeLocation: Binding<Int>,command: Binding<ComposerCommand?>,addedAssets: [AddedAsset],addedFileURLs: [URL],addedCustomAttachments: [CustomAttachment],quotedMessage: Binding<ChatMessage?>,maxMessageLength: Int? = nil,cooldownDuration: Int,onCustomAttachmentTap: @escaping @MainActor (CustomAttachment) -> Void,removeAttachmentWithId: @escaping (String) -> Void)
+   public init(factory: Factory,channelController: ChatChannelController,text: Binding<String>,selectedRangeLocation: Binding<Int>,command: Binding<ComposerCommand?>,recordingState: Binding<RecordingState>,addedAssets: [AddedAsset],addedFileURLs: [URL],addedCustomAttachments: [CustomAttachment],addedVoiceRecordings: [AddedVoiceRecording],quotedMessage: Binding<ChatMessage?>,maxMessageLength: Int? = nil,cooldownDuration: Int,sendButtonEnabled: Bool,isSendMessageEnabled: Bool,onCustomAttachmentTap: @escaping @MainActor (CustomAttachment) -> Void,removeAttachmentWithId: @escaping (String) -> Void,sendMessage: @escaping @MainActor () -> Void,onImagePasted: @escaping @MainActor (UIImage) -> Void,startRecording: @escaping () -> Void,stopRecording: @escaping () -> Void)

 public struct MessageListView: View, KeyboardReadable  
-   public init(factory: Factory,channel: ChatChannel,messages: [ChatMessage],messagesGroupingInfo: [String: [String]],scrolledId: Binding<String?>,showScrollToLatestButton: Binding<Bool>,quotedMessage: Binding<ChatMessage?>,currentDateString: String? = nil,listId: String,isMessageThread: Bool = false,shouldShowTypingIndicator: Bool = false,scrollPosition: Binding<String?> = .constant(nil),loadingNextMessages: Bool = false,firstUnreadMessageId: Binding<MessageId?> = .constant(nil),onMessageAppear: @escaping @MainActor (Int, ScrollDirection) -> Void,onScrollToBottom: @escaping @MainActor () -> Void,onLongPress: @escaping @MainActor (MessageDisplayInfo) -> Void,onJumpToMessage: ((String) -> Bool)? = nil)
+   public init(factory: Factory,channel: ChatChannel,messages: [ChatMessage],messagesGroupingInfo: [String: [String]],scrolledId: Binding<String?>,showScrollToLatestButton: Binding<Bool>,quotedMessage: Binding<ChatMessage?>,currentDateString: String? = nil,listId: String,isMessageThread: Bool = false,shouldShowTypingIndicator: Bool = false,bottomInset: CGFloat = 0,scrollPosition: Binding<String?> = .constant(nil),loadingNextMessages: Bool = false,firstUnreadMessageId: Binding<MessageId?> = .constant(nil),onMessageAppear: @escaping @MainActor (Int, ScrollDirection) -> Void,onScrollToBottom: @escaping @MainActor () -> Void,onLongPress: @escaping @MainActor (MessageDisplayInfo) -> Void,onJumpToMessage: ((String) -> Bool)? = nil)

 public final class ComposerInputViewOptions: Sendable  
-   public let text: Binding<String>
+   public let channelController: ChatChannelController
-   public let selectedRangeLocation: Binding<Int>
+   public let text: Binding<String>
-   public let command: Binding<ComposerCommand?>
+   public let selectedRangeLocation: Binding<Int>
-   public let addedAssets: [AddedAsset]
+   public let command: Binding<ComposerCommand?>
-   public let addedFileURLs: [URL]
+   public let recordingState: Binding<RecordingState>
-   public let addedCustomAttachments: [CustomAttachment]
+   public let addedAssets: [AddedAsset]
-   public let quotedMessage: Binding<ChatMessage?>
+   public let addedFileURLs: [URL]
-   public let maxMessageLength: Int?
+   public let addedCustomAttachments: [CustomAttachment]
-   public let cooldownDuration: Int
+   public let addedVoiceRecordings: [AddedVoiceRecording]
-   public let onCustomAttachmentTap: @MainActor (CustomAttachment) -> Void
+   public let quotedMessage: Binding<ChatMessage?>
-   public let shouldScroll: Bool
+   public let maxMessageLength: Int?
-   public let removeAttachmentWithId: @MainActor (String) -> Void
+   public let cooldownDuration: Int
-   
+   public let sendButtonEnabled: Bool
- 
+   public let isSendMessageEnabled: Bool
-   public init(text: Binding<String>,selectedRangeLocation: Binding<Int>,command: Binding<ComposerCommand?>,addedAssets: [AddedAsset],addedFileURLs: [URL],addedCustomAttachments: [CustomAttachment],quotedMessage: Binding<ChatMessage?>,maxMessageLength: Int?,cooldownDuration: Int,onCustomAttachmentTap: @escaping @MainActor (CustomAttachment) -> Void,shouldScroll: Bool,removeAttachmentWithId: @escaping @MainActor (String) -> Void)
+   public let onCustomAttachmentTap: @MainActor (CustomAttachment) -> Void
+   public let shouldScroll: Bool
+   public let removeAttachmentWithId: @MainActor (String) -> Void
+   public let sendMessage: @MainActor () -> Void
+   public let onImagePasted: @MainActor (UIImage) -> Void
+   public let startRecording: @MainActor () -> Void
+   public let stopRecording: @MainActor () -> Void
+   
+ 
+   public init(channelController: ChatChannelController,text: Binding<String>,selectedRangeLocation: Binding<Int>,command: Binding<ComposerCommand?>,recordingState: Binding<RecordingState>,addedAssets: [AddedAsset],addedFileURLs: [URL],addedCustomAttachments: [CustomAttachment],addedVoiceRecordings: [AddedVoiceRecording],quotedMessage: Binding<ChatMessage?>,maxMessageLength: Int?,cooldownDuration: Int,sendButtonEnabled: Bool,isSendMessageEnabled: Bool,onCustomAttachmentTap: @escaping @MainActor (CustomAttachment) -> Void,shouldScroll: Bool,removeAttachmentWithId: @escaping @MainActor (String) -> Void,sendMessage: @escaping @MainActor () -> Void,onImagePasted: @escaping @MainActor (UIImage) -> Void,startRecording: @escaping @MainActor () -> Void,stopRecording: @escaping @MainActor () -> Void)

 public final class PhotoAttachmentPickerViewOptions: Sendable  
-   
+   public let selectedAssetIds: [String]?
- 
+   
-   public init(assets: PHFetchResultCollection,onAssetTap: @escaping @MainActor (AddedAsset) -> Void,isAssetSelected: @escaping @MainActor (String) -> Bool)
+ 
+   public init(assets: PHFetchResultCollection,onAssetTap: @escaping @MainActor (AddedAsset) -> Void,isAssetSelected: @escaping @MainActor (String) -> Bool,selectedAssetIds: [String]? = nil)

 public final class ComposerTextInputViewOptions: Sendable  
-   
+   public let onImagePasted: @MainActor (UIImage) -> Void
- 
+   
-   public init(text: Binding<String>,height: Binding<CGFloat>,selectedRangeLocation: Binding<Int>,placeholder: String,editable: Bool,maxMessageLength: Int?,currentHeight: CGFloat)
+ 
+   public init(text: Binding<String>,height: Binding<CGFloat>,selectedRangeLocation: Binding<Int>,placeholder: String,editable: Bool,maxMessageLength: Int?,currentHeight: CGFloat,onImagePasted: @escaping @MainActor (UIImage) -> Void)

 public struct TrailingComposerView: View  
-   public init(onTap: @escaping () -> Void)
+   public init(viewModel: MessageComposerViewModel,onTap: @escaping () -> Void)

 public struct PhotoAttachmentPickerView: View  
-   public init(assets: PHFetchResultCollection,onImageTap: @escaping (AddedAsset) -> Void,imageSelected: @escaping (String) -> Bool)
+   public init(assets: PHFetchResultCollection,onImageTap: @escaping (AddedAsset) -> Void,imageSelected: @escaping (String) -> Bool,selectedAssetIds: [String]? = nil)

 public struct PhotoAttachmentCell: View  
-   public init(assetLoader: PhotoAssetLoader,requestId: PHContentEditingInputRequestID? = nil,asset: PHAsset,onImageTap: @escaping (AddedAsset) -> Void,imageSelected: @escaping (String) -> Bool)
+   public init(assetLoader: PhotoAssetLoader,requestId: PHContentEditingInputRequestID? = nil,asset: PHAsset,onImageTap: @escaping (AddedAsset) -> Void,imageSelected: @escaping (String) -> Bool,selectedAssetIds: Set<String>? = nil)

 public class DefaultViewFactory: ViewFactory  
-   public static let shared
+   public var styles
+   public static let shared

 public struct AttachmentPickerView: View  
-   public init(viewFactory: Factory,selectedPickerState: Binding<AttachmentPickerState>,filePickerShown: Binding<Bool>,cameraPickerShown: Binding<Bool>,addedFileURLs: Binding<[URL]>,onPickerStateChange: @escaping @MainActor (AttachmentPickerState) -> Void,photoLibraryAssets: PHFetchResult<PHAsset>? = nil,onAssetTap: @escaping @MainActor (AddedAsset) -> Void,onCustomAttachmentTap: @escaping @MainActor (CustomAttachment) -> Void,isAssetSelected: @escaping @MainActor (String) -> Bool,addedCustomAttachments: [CustomAttachment],cameraImageAdded: @escaping @MainActor (AddedAsset) -> Void,askForAssetsAccessPermissions: @escaping () -> Void,isDisplayed: Bool,height: CGFloat)
+   public init(viewFactory: Factory,selectedPickerState: Binding<AttachmentPickerState>,filePickerShown: Binding<Bool>,cameraPickerShown: Binding<Bool>,addedFileURLs: Binding<[URL]>,onPickerStateChange: @escaping @MainActor (AttachmentPickerState) -> Void,photoLibraryAssets: PHFetchResult<PHAsset>? = nil,onAssetTap: @escaping @MainActor (AddedAsset) -> Void,onCustomAttachmentTap: @escaping @MainActor (CustomAttachment) -> Void,isAssetSelected: @escaping @MainActor (String) -> Bool,addedCustomAttachments: [CustomAttachment],cameraImageAdded: @escaping @MainActor (AddedAsset) -> Void,askForAssetsAccessPermissions: @escaping () -> Void,isDisplayed: Bool,height: CGFloat,selectedAssetIds: [String]? = nil,channelController: ChatChannelController,messageController: ChatMessageController?,canSendPoll: Bool)

- public enum RecordingState: Equatable  
+ public enum RecordingState: Equatable, Sendable  

 public final class ReactionsContentViewOptions: Sendable  
-   
+   public let onMoreReactionsTap: @MainActor () -> Void
- 
+   
-   public init(message: ChatMessage,contentRect: CGRect,onReactionTap: @escaping @MainActor (MessageReactionType) -> Void)
+ 
+   public init(message: ChatMessage,contentRect: CGRect,onReactionTap: @escaping @MainActor (MessageReactionType) -> Void,onMoreReactionsTap: @escaping @MainActor () -> Void)

@Stream-SDK-Bot
Copy link
Collaborator

SDK Size

title develop branch diff status
StreamChatSwiftUI 9.78 MB 10.34 MB +582 KB 🔴

@Stream-SDK-Bot
Copy link
Collaborator

StreamChatSwiftUI XCSize

Object Diff (bytes)
MessageViewFactoryOptions.o +29489
AttachmentViewFactoryOptions.o +24613
ChannelViewFactoryOptions.o +22456
ComposerViewFactoryOptions.o +22129
SearchResultsView.o +18872
Show 272 more objects
Object Diff (bytes)
TaskFetchOriginalData.o +16223
ChatChannelView.o +14149
DefaultViewFactory.o -12975
ReactionsOverlayView.o +12539
TaskFetchOriginalImageData.o -12493
MessageRepliesView.o +12209
L10n.o +12032
ChatThreadListNavigatableItem.o +11722
MessageListView.o +11471
MessageContainerView.o +11429
MoreReactionsView.o +11340
Styles.o +11212
MessageComposerView.o +11103
ChatChannelList.o +10312
ChatChannelNavigatableListItem.o +10195
EmptyViewFactoryOptions.o +9712
ReactionsViewFactoryOptions.o +9664
ChatThreadList.o +9225
LiquidGlassModifiers.o +9208
ChatChannelSwipeableListItem.o +8879
TaskFetchDecodedImage.o -8659
FrameStore.o -8656
ChatChannelHeaderViewModifier.o +8524
LeadingComposerView.o +8422
ImagePipeline+Cache.o +8411
ReactionsIconProvider.o +7948
ChatChannelListItem.o +7876
PinnedMessagesView.o +7643
ChatChannelListViewModel.o +7351
MessageView.o +7046
NukeImageLoader.o +6566
ReactionsOverlayContainer.o +6556
ThreadViewFactoryOptions.o +6348
ImageView.o -6045
ChatThreadListItem.o +6036
VideoAttachmentView.o +5954
ImagePipeline.o -5784
GiphyAttachmentView.o +5765
TaskLoadImage.o +5644
ResumableData.o -5589
ImagePipelineError.o -5509
LazyImage.o -5291
UIImage+SwiftyGif.o +5211
AudioSessionFeedbackGenerator.o +5154
ComposerHelperViews.o +5062
ImageTask.o +5053
QuotedMessageView.o +4904
ImageCache.o +4887
ImagePipeline+Error.o +4823
TaskFetchOriginalImage.o +4688
ImagePipeline+Configuration.o +4617
ImagePipelineCache.o -4488
PollAttachmentView.o +4360
ImagePipelineConfiguration.o -4359
ImageAttachmentView.o +3979
CreatePollView.o +3949
MessageComposerViewModel.o +3920
Image.o -3848
LazyImageState.o -3800
ImageRequest.o +3731
ReactionsView.o +3729
VoiceRecordingContainerView.o +3686
MessageListHelperViews.o +3660
Animator.o -3618
OperationTask.o -3533
TrailingInputComposerView.o +3517
DataLoader.o +3307
FileAttachmentView.o +3153
ChatChannelViewModel.o +2812
GalleryView.o +2807
MessageListConfig.o +2762
StringExtensions.o -2691
MediaAttachmentsView.o +2665
DependencyInjection.o -2664
ReactionsUsersView.o -2577
AsyncPipelineTask.o +2555
ImageRequestKeys.o -2453
LinkAttachmentView.o +2427
ChatChannelInfoView.o +2294
ImagePipelineTask.o -2283
CreatePollViewModel.o -2242
GIFImageView.o -2229
ChatChannelInfoHelperViews.o +2223
UIImageView+SwiftyGif.o +2206
MessageBubble.o +2110
MoreChannelActionsView.o +2091
DefaultMessageActions.o +2084
ChannelListConfig.o +2055
NukeVideoPlayerView.o -1909
PhotoAttachmentPickerView.o +1907
AnimatedImageView.o -1900
Graphics.o +1889
ChatChannelListView.o +1826
DateUtils.o -1813
ChatChannelInfoViewModel.o +1776
LazyImageExtensions.o -1604
PollAttachmentViewModel.o -1591
ChannelHeaderLoader.o +1551
DelayedRenderingViewModifier.o -1487
PollCommentsView.o +1483
Log.o +1477
AlertBannerViewModifier.o +1460
StreamLazyImage.o +1457
MentionsCommandHandler.o +1447
MessageComposerViewModel+Recording.o +1435
ZoomableScrollView.o +1395
VideoPreviewLoader.o +1353
PollResultsView.o +1342
ReactionsHelperViews.o +1330
PhotoAssetsUtils.o +1310
MessageActionsViewModel.o +1276
LinkTextView.o +1239
ChatInfoParticipantsView.o +1229
TaskLoadData.o -1205
AsyncTask.o -1193
InstantCommandsView.o +1172
ImageProcessingOptions.o +1152
AddUsersView.o +1149
ParticipantInfoView.o +1136
TaskFetchWithPublisher.o +1126
LoadingView.o +1102
BouncedMessageActionsModifier.o +1082
ImageProcessing.o -1081
TrailingComposerView.o +1077
ComposerModels.o -1064
FileAttachmentsView.o +1030
BottomReactionsView.o +1020
DeletedMessageView.o +999
ChannelAvatarsMerger.o -989
WaveformView.o +970
PollAllOptionsView.o +959
SwiftyGifManager.o +935
ImagePipeline+Delegate.o +934
LazyImageView.o +924
ImagePipelineDelegate.o -922
MessageActionsView.o +909
ChatChannelHelpers.o +905
FileAttachmentPreview.o +892
MediaAttachmentsViewModel.o +862
ImageCaching.o -852
AddedImageAttachmentsView.o +838
LockedView.o +833
ReactionsBubbleView.o +832
DefaultChannelActions.o +830
Atomic.o +823
SearchBar.o +792
Deprecated.o -789
MentionUsersView.o +733
ComposerTextInputView.o +730
DataCache.o +726
FetchImage.o -724
SwiftUI+UIAlertController.o +706
TitleWithCloseButton.o +697
ImageDecoders+Default.o -662
ChatChannelExtensions.o -628
AnimatedFrame.o -615
ImagePublisher.o -592
ChatThreadListLoadingView.o +592
ChatChannelHelperViews.o +587
ImageProcessors+Resize.o -571
GridMediaView.o +568
ComposerConfig.o -564
AudioVisualizationView.o +563
AttachmentPickerView.o +560
DiscardAttachmentButton.o +560
NoContentView.o +554
GalleryHeaderView.o +546
ImageDecoders+Video.o -544
InputTextView.o +541
ColorPalette.o +539
AttachmentPickerTypeView.o +537
Images.o +529
ReactionUserView.o +527
WebView.o +515
ImageResponse.o -512
ChatMessage+Extensions.o +508
FilePickerView.o +495
AutoLayoutHelpers.o +479
ChatThreadListView.o +475
FileAttachmentsViewModel.o +469
RecordingView.o +462
ViewFactory.o -434
MoreChannelActionsFullScreenWrappingView.o +433
NSLayoutConstraint+Extensions.o +430
AudioRecordingNameFormatter.o -420
ReactionsOverlayViewModel.o +402
AddedVoiceRecordingsView.o +397
ImageSourceHelpers.o -397
MarkdownFormatter.o +391
AttachmentUploadingStateView.o +385
MessageAvatarView.o +384
ShareButtonView.o +384
VideoPlayerView.o +382
MessageTranslationFooterView.o +381
GIFAnimatable.o -372
MessagePreviewFormatter.o -370
TypingIndicatorView.o +368
AttachmentDownloadingStateView.o +361
MessageActionsResolver.o +327
ChatChannelNamer.o -322
MessageRelativeDateFormatter.o +316
SwiftUICore.tbd +312
MessageThreadHeaderViewModifier.o +312
SendInChannelView.o +306
ChatThreadListHeaderView.o -294
ActionBannerView.o +293
ImageEncoding.o -287
JumpToUnreadButton.o +286
StreamCore_-14BA7DE23376E301_PackageProduct +284
ImageEncoders+Default.o +284
Modifiers.o -278
ImagePrefetcher.o +255
MoreChannelActionsViewModel.o -251
SwiftUI.tbd +248
ImageCDN.o -244
ImageContainer.o +231
AssetType.o +214
ImagePickerView.o +214
NukeImageProcessor.o +207
ImageDecoding.o -204
ViewModelsFactory.o -196
ChatChannelDataSource.o +194
PollCommentsViewModel.o +188
ImageEncoders+ImageIO.o +186
StreamChat_-14BA7DE24FFA260A_PackageProduct -180
ChatClient+Extensions.o +178
Shimmer.o +168
CommandsContainerView.o +166
PercentageProgressView.o +159
HideTabBarModifier.o +159
SendMessageButton.o +158
GiphyCommandHandler.o -156
LinkedList.o +156
OnLoadViewModifier.o +151
ChatThreadListFooterView.o +151
FloatingBannerViewModifier.o +147
ChatThreadListHeaderViewModifier.o +145
Internal.o -145
AddUsersViewModel.o -144
MessageViewModel.o -144
KeyboardHandling.o +137
VideoPlayerFooterView.o +132
ChatChannelListHeader.o +128
GiphyBadgeView.o +127
NoChannelsView.o -124
SnapshotCreator.o +120
MessageListDateUtils.o +120
PollOptionAllVotesView.o +119
DiscardButtonView.o +114
ImageDecoderRegistry.o -112
UIImageView.o -108
AddedFileAttachmentsView.o -107
ImageProcessors+Composition.o -103
ActionItemView.o +99
ViewExtensions.o +86
Utils.o +84
NavigationBarThemeViewModifier.o +83
AVDataAsset.o -83
DataPublisher.o +78
MessageCachingUtils.o -73
ChatThreadListViewModel.o -69
ImageViewExtensions.o +68
ChannelControllerFactory.o -68
NavigationContainerView.o +64
SlowModeView.o -64
NoThreadsView.o -62
RecordingTipView.o -58
ImageProcessors.o -52
ImageDecompression.o -50
VideoDurationFormatter.o -48
Errors.o +48
Foundation.tbd -48

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants