-
Notifications
You must be signed in to change notification settings - Fork 114
New Composer implementation, added styles #1071
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
martinmitrevski
wants to merge
20
commits into
v5
Choose a base branch
from
new-compsoer
base: v5
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Generated by 🚫 Danger |
…into new-compsoer
# Conflicts: # Sources/StreamChatSwiftUI/Utils/Common/ChatClient+Extensions.swift
martinmitrevski
commented
Dec 23, 2025
| set { _availableReactions = newValue } | ||
| } | ||
|
|
||
| public var availableEmojis: [String] = [ |
Contributor
Author
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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) |
Collaborator
SDK Size
|
Collaborator
StreamChatSwiftUI XCSize
Show 272 more objects
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🔗 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.
🧪 Manual Testing Notes
Explain how this change can be tested manually, if applicable.
☑️ Contributor Checklist
docs-contentrepo