Skip to content

Conversation

@Stream-SDK-Bot
Copy link
Collaborator

✅ Added

  • Add the makeAttachmentTextView method to ViewFactory #1013
  • Allow dismissing commands overlay when tapping the message list #1024
  • Allows dismissing the keyboard attachments picker when tapping the message list #1024

🐞 Fixed

  • Fix composer not being locked after the channel was frozen #1015
  • Fix PollOptionAllVotesView not updated on poll cast events #1025
  • Fix action sheet not showing when discarding Poll creation on iOS 26 #1027

Stream Bot and others added 16 commits October 8, 2025 08:10
* Remove trailing_whitespace from SwiftLint rules due to multi-line string issues

* Lint everything

* Rename deprecated rule

---------

Co-authored-by: Alexey Alter-Pesotskiy <alex@testableapple.com>
Bumps [sinatra](https://github.com/sinatra/sinatra) from 4.1.1 to 4.2.0.
- [Changelog](https://github.com/sinatra/sinatra/blob/main/CHANGELOG.md)
- [Commits](sinatra/sinatra@v4.1.1...v4.2.0)

---
updated-dependencies:
- dependency-name: sinatra
  dependency-version: 4.2.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ist tap (#1024)

* Hide commands overlay when keyboard disappears

* Allow hiding keyboard attachments picker when tapping the message list

* Update CHANGELOG.md

* Use the same implementation strategy for the commands overlay

* Rename the notifications names to be more consistent with the rest of the codebase

* Allow the attachments picker by default as well

* Add test coverage to the view
* Fix PollOptionAllVotesView not updated on poll events

* Update CHANGELOG.md
…1027)

* Fix action sheet not showing when discarding Poll creation on iOS 26

* Update CHANGELOG.md
@Stream-SDK-Bot Stream-SDK-Bot requested a review from a team as a code owner October 22, 2025 16:34
@github-actions
Copy link

1 Warning
⚠️ Big PR

Generated by 🚫 Danger

@github-actions
Copy link

Public Interface

+ public class AttachmentTextViewOptions  
+ 
+   public let message: ChatMessage
+   
+ 
+   public init(mesage: ChatMessage)

- extension PresentationMode: Equatable  
- 
-   public static func ==(lhs: PresentationMode,rhs: PresentationMode)-> Bool

 public struct MessageListConfig  
-   public let bouncedMessagesAlertActionsEnabled: Bool
+   public let hidesCommandsOverlayOnMessageListTap: Bool
-   public let skipEditedMessageLabel: (ChatMessage) -> Bool
+   public let hidesAttachmentsPickersOnMessageListTap: Bool
-   public let draftMessagesEnabled: Bool
+   public let bouncedMessagesAlertActionsEnabled: Bool
-   public let downloadFileAttachmentsEnabled: Bool
+   public let skipEditedMessageLabel: (ChatMessage) -> Bool
-   
+   public let draftMessagesEnabled: Bool
- 
+   public let downloadFileAttachmentsEnabled: Bool
-   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,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)
+   
+ 
+   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,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)

 extension ViewFactory  
+   public func makeAttachmentTextView(options: AttachmentTextViewOptions)-> some View

 public struct AttachmentTextView: View  
-   public init(message: ChatMessage,injectedBackgroundColor: UIColor? = nil)
+   public init(factory: Factory = DefaultViewFactory.shared,message: ChatMessage,injectedBackgroundColor: UIColor? = nil)

 open class MessageComposerViewModel: ObservableObject  
-   public var sendButtonEnabled: Bool
+   public var isSendMessageEnabled: Bool
-   public var sendInChannelShown: Bool
+   public var sendButtonEnabled: Bool
-   public var isDirectChannel: Bool
+   public var sendInChannelShown: Bool
-   public var showCommandsOverlay: Bool
+   public var isDirectChannel: Bool
-   public var inputComposerShouldScroll: Bool
+   public var showCommandsOverlay: Bool
-   
+   public var inputComposerShouldScroll: Bool
- 
+   
-   public init(channelController: ChatChannelController,messageController: ChatMessageController?,eventsController: EventsController? = nil,quotedMessage: Binding<ChatMessage?>? = nil)
+ 
-   
+   public init(channelController: ChatChannelController,messageController: ChatMessageController?,eventsController: EventsController? = nil,quotedMessage: Binding<ChatMessage?>? = nil)
- 
+   
-   public func fillEditedMessage(_ editedMessage: ChatMessage?)
+ 
-   public func fillDraftMessage()
+   public func fillEditedMessage(_ editedMessage: ChatMessage?)
-   public func updateDraftMessage(quotedMessage: ChatMessage?,isSilent: Bool = false,extraData: [String: RawJSON] = [:])
+   public func fillDraftMessage()
-   public func deleteDraftMessage()
+   public func updateDraftMessage(quotedMessage: ChatMessage?,isSilent: Bool = false,extraData: [String: RawJSON] = [:])
-   open func sendMessage(quotedMessage: ChatMessage?,editedMessage: ChatMessage?,isSilent: Bool = false,skipPush: Bool = false,skipEnrichUrl: Bool = false,extraData: [String: RawJSON] = [:],completion: @escaping () -> Void)
+   public func deleteDraftMessage()
-   public func change(pickerState: AttachmentPickerState)
+   open func sendMessage(quotedMessage: ChatMessage?,editedMessage: ChatMessage?,isSilent: Bool = false,skipPush: Bool = false,skipEnrichUrl: Bool = false,extraData: [String: RawJSON] = [:],completion: @escaping () -> Void)
-   public func imageTapped(_ addedAsset: AddedAsset)
+   public func change(pickerState: AttachmentPickerState)
-   public func imagePasted(_ image: UIImage)
+   public func imageTapped(_ addedAsset: AddedAsset)
-   public func removeAttachment(with id: String)
+   public func imagePasted(_ image: UIImage)
-   public func cameraImageAdded(_ image: AddedAsset)
+   public func removeAttachment(with id: String)
-   public func isImageSelected(with id: String)-> Bool
+   public func cameraImageAdded(_ image: AddedAsset)
-   public func customAttachmentTapped(_ attachment: CustomAttachment)
+   public func isImageSelected(with id: String)-> Bool
-   public func isCustomAttachmentSelected(_ attachment: CustomAttachment)-> Bool
+   public func customAttachmentTapped(_ attachment: CustomAttachment)
-   public func askForPhotosPermission()
+   public func isCustomAttachmentSelected(_ attachment: CustomAttachment)-> Bool
-   public func handleCommand(for text: Binding<String>,selectedRangeLocation: Binding<Int>,command: Binding<ComposerCommand?>,extraData: [String: Any])
+   public func askForPhotosPermission()
-   open func convertAddedAssetsToPayloads()throws -> [AnyAttachmentPayload]
+   public func handleCommand(for text: Binding<String>,selectedRangeLocation: Binding<Int>,command: Binding<ComposerCommand?>,extraData: [String: Any])
-   public func checkForMentionedUsers(commandId: String?,extraData: [String: Any])
+   open func convertAddedAssetsToPayloads()throws -> [AnyAttachmentPayload]
-   public func clearRemovedMentions()
+   public func checkForMentionedUsers(commandId: String?,extraData: [String: Any])
-   public func clearInputData()
+   public func clearRemovedMentions()
-   public func checkChannelCooldown()
+   public func clearInputData()
+   public func checkChannelCooldown()

@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
3.4% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@Stream-SDK-Bot
Copy link
Collaborator Author

SDK Size

title previous release current release diff status
StreamChatSwiftUI 9.57 MB 9.58 MB +13 KB 🟢

@Stream-SDK-Bot
Copy link
Collaborator Author

StreamChatSwiftUI XCSize

Object Diff (bytes)
MessageComposerView.o +2792
ImageAttachmentView.o +1516
PollOptionAllVotesViewModel.o +993
SearchResultsView.o +920
MessageView.o +897
Show 42 more objects
Object Diff (bytes)
ChatThreadListItem.o +728
ChatThreadListNavigatableItem.o +716
AttachmentPickerTypeView.o +666
ChatChannelNavigatableListItem.o +648
ChatChannelList.o +648
DefaultViewFactory.o +510
ChatChannelHeaderViewModifier.o +504
ChatThreadList.o +484
MessageRepliesView.o +456
VideoAttachmentView.o +448
CreatePollView.o -418
TrailingComposerView.o +406
VoiceRecordingContainerView.o +396
PinnedMessagesView.o +396
ChatChannelListItem.o +384
MessageContainerView.o +372
ChatChannelListViewModel.o +363
ChatChannelSwipeableListItem.o +280
MessageListConfig.o +256
LinkAttachmentView.o -251
ReactionsOverlayView.o +224
MessageComposerViewModel.o +223
ComposerHelperViews.o +168
GalleryView.o +156
ReactionsOverlayContainer.o +124
MessageBubble.o +112
QuotedMessageView.o +104
ReactionsView.o +99
ViewFactory.o +92
PollOptionAllVotesView.o +92
ChatChannelView.o -88
DeletedMessageView.o +60
MessageActionsViewModel.o +60
ReactionsHelperViews.o +60
PollAttachmentView.o +60
MediaAttachmentsViewModel.o +60
MediaAttachmentsView.o +60
GiphyAttachmentView.o +59
MessageListHelperViews.o +52
LinkTextView.o +48
ReactionsBubbleView.o +48
FileAttachmentView.o +48

@testableapple
Copy link
Contributor

/release merge

@testableapple
Copy link
Contributor

/merge release

@testableapple
Copy link
Contributor

Publication of the release has been launched 👍

@github-actions github-actions bot merged commit 5aa483a into main Oct 22, 2025
8 of 12 checks passed
@github-actions github-actions bot deleted the release/4.91.0 branch October 22, 2025 18:20
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.

5 participants