Skip to content

Conversation

testableapple
Copy link
Contributor

🔗 Issue Links

Resolve https://linear.app/stream/issue/IOS-1191

🎯 Goal

Fix composer not being locked after the channel was frozen

🎨 Showcase

Before After
Simulator Screenshot - iPhone 16e - 2025-10-14 at 18 13 32 Simulator Screenshot - iPhone 16e - 2025-10-14 at 18 12 11

🧪 Manual Testing Notes

  1. Log in as R2-D2
  2. Open channel Frozen
  3. Try to send a message

☑️ 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

@testableapple testableapple marked this pull request as draft October 14, 2025 17:16
@testableapple testableapple marked this pull request as ready for review October 14, 2025 18:42
Copy link

Public Interface

 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()

@Stream-SDK-Bot
Copy link
Collaborator

SDK Size

title develop branch diff status
StreamChatSwiftUI 9.57 MB 9.58 MB +16 KB 🟢

Copy link

@Stream-SDK-Bot
Copy link
Collaborator

StreamChatSwiftUI XCSize

Object Diff (bytes)
AttachmentPickerTypeView.o +666
TrailingComposerView.o +406
MessageComposerView.o +381
MessageComposerViewModel.o +224

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants