Skip to content

Fix message attachments sizes and message content width on iPad#1335

Open
laevandus wants to merge 9 commits intodevelopfrom
fix/message-list-attachment-width
Open

Fix message attachments sizes and message content width on iPad#1335
laevandus wants to merge 9 commits intodevelopfrom
fix/message-list-attachment-width

Conversation

@laevandus
Copy link
Copy Markdown
Contributor

@laevandus laevandus commented Mar 26, 2026

πŸ”— Issue Links

Fixes IOS-1552

🎯 Goal

Fix issues with message attachment sizes

πŸ“ Summary

  • Attachment previews should use width of 256 points (before it depended on the content width)
  • Message content width should be a little bit over the half on iPad
  • Add MessageListConfig.attachmentPreviewWidth for easily changing attachment preview sizes
  • Bubble was not shown for quoted + file and quoted + image messages

πŸ›  Implementation

🎨 Showcase

Attachment resize and content width issue on iPad

Before After

Attachment size issues

There are subtle size issues where attachments appeared wider than they should have.

Before After

πŸ§ͺ Manual Testing Notes

  1. Run the demo app on iPad
  2. Close sidebar and reopen it
    Result: attachment size does not change

β˜‘οΈ 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

Summary by CodeRabbit

  • New Features

    • Added a setting to control attachment preview width.
  • Bug Fixes

    • Attachment previews now render at a fixed, consistent width.
    • Quoted messages display the correct bubble when they include file or image attachments.
    • Improved alignment and sizing of various attachment views for consistent layout.
  • Tests

    • Added/updated snapshot tests for quoted attachments, poll layouts, and message item rendering.
  • Documentation

    • Updated changelog with the above fixes.

@laevandus laevandus requested a review from a team as a code owner March 26, 2026 10:45
@laevandus laevandus marked this pull request as draft March 26, 2026 10:45
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 26, 2026

πŸ“ Walkthrough

Walkthrough

Adds a configurable attachment preview width and enforces it through view factories and attachment views; tightens logic for quoted-message bubbles with single attachments; adjusts content-width/layout calculations for avatars, spacers, and action labels; updates snapshot tests and CHANGELOG.

Changes

Cohort / File(s) Summary
Configuration & Options
Sources/StreamChatSwiftUI/ChatMessageList/MessageListConfig.swift, Sources/StreamChatSwiftUI/ViewFactory/Options/ComposerViewFactoryOptions.swift
Added public attachmentPreviewWidth: CGFloat (default 256) to MessageListConfig; added availableWidth property and initializer param to PollViewOptions; adjusted iPad spacer calc to (availableWidth * 0.4).rounded().
View Factory Width Clamping
Sources/StreamChatSwiftUI/ViewFactory/DefaultViewFactory.swift
Injected utils and now clamp forwarded attachment/poll widths with min(options.availableWidth, utils.messageListConfig.attachmentPreviewWidth) when constructing attachment/poll views.
Attachment & Poll Views
Sources/StreamChatSwiftUI/ChatMessageList/GiphyAttachmentView.swift, Sources/StreamChatSwiftUI/ChatMessageList/Polls/PollAttachmentView.swift, Sources/StreamChatSwiftUI/ChatMessageList/MessageAttachmentsView.swift, Sources/StreamChatSwiftUI/ChatMessageList/LinkAttachmentView.swift, Sources/StreamChatSwiftUI/ChatMessageList/AsyncVoiceMessages/VoiceRecordingContainerView.swift
Threaded width into attachment/poll views and applied explicit .frame(width:)/.frame(maxWidth:) and alignment changes; GiphyAttachmentView/PollAttachmentView now inject utils; MessageAttachmentsView tightened caption-less predicates to require text.isEmpty && quotedMessage == nil.
Message Layout Adjustments
Sources/StreamChatSwiftUI/ChatMessageList/MessageItemView.swift, Sources/StreamChatSwiftUI/ChatMessageList/MessageView.swift, Sources/StreamChatSwiftUI/ChatMessageList/QuotedMessageView/ChatQuotedMessageView.swift
Conditionally include avatar width in content width calculation only when avatars are shown; pass availableWidth into PollViewOptions; combine frame modifiers in quoted-message view to set width and height together.
Actions & Reactions Layout
Sources/StreamChatSwiftUI/ChatMessageList/Reactions/ReactionsOverlayView.swift, Sources/StreamChatSwiftUI/ChatMessageList/GiphyAttachmentView.swift
Adjusted message-actions sizing to use .frame(minWidth:250) + .fixedSize(...) instead of computed width; limited action button labels with .lineLimit(1) and .minimumScaleFactor(0.5).
Tests & Changelog
CHANGELOG.md, StreamChatSwiftUITests/Tests/ChatChannel/MessageView_Tests.swift, .../PollAttachmentView_Tests.swift, .../ViewFactory_Tests.swift, .../MessageItemView_Tests.swift
Added snapshot tests for quoted messages with single attachments and a portrait-image reaction case; updated tests to pass new width/availableWidth args; updated changelog with attachment preview and quoted-message fixes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Poem

🐰 I nudged the preview, snug and neat,

Polls now measure where they meet,
Quotes will show the files they hold,
Avatars counted, not just told,
A hop, a tweak β€” the layout's sweet!

πŸš₯ Pre-merge checks | βœ… 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 9.09% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
βœ… Passed checks (2 passed)
Check name Status Explanation
Description Check βœ… Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check βœ… Passed The pull request title accurately summarizes the main change: fixing message attachment sizes and content width on iPad, which aligns with the core objectives and modifications across multiple attachment-related files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
πŸ“ Generate docstrings
  • Create stacked PR
  • Commit on current branch
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/message-list-attachment-width

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

# Conflicts:
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messageItemView_incomingAvatarHidden_snapshot.small-dark.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewPendingGiphy_snapshot.small-dark.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMeTheming_snapshot.default-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.default-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.extraExtraExtraLarge-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.rightToLeftLayout-default.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.small-dark.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.default-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.extraExtraExtraLarge-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.rightToLeftLayout-default.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.small-dark.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.default-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.extraExtraExtraLarge-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.rightToLeftLayout-default.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.small-dark.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.default-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.extraExtraExtraLarge-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.rightToLeftLayout-default.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.small-dark.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.default-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.extraExtraExtraLarge-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.rightToLeftLayout-default.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.small-dark.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.default-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.extraExtraExtraLarge-light.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.rightToLeftLayout-default.png
#	StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.small-dark.png
@laevandus laevandus marked this pull request as ready for review March 26, 2026 13:36
@laevandus laevandus force-pushed the fix/message-list-attachment-width branch from 44302cb to 2a72a64 Compare March 26, 2026 13:38
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (3)
Sources/StreamChatSwiftUI/ViewFactory/Options/ComposerViewFactoryOptions.swift (1)

491-498: Source-breaking API change in PollViewOptions.

Adding availableWidth as a required parameter without a default value is a source-breaking change. External integrators using PollViewOptions(message:poll:isFirst:) will encounter compile errors.

Since this is a v5 beta release (per CHANGELOG), API changes may be acceptable. However, if backward compatibility is desired, consider adding a default value or a deprecated convenience initializer:

public init(message: ChatMessage, poll: Poll, isFirst: Bool, availableWidth: CGFloat = 256) {
    ...
}
πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Sources/StreamChatSwiftUI/ViewFactory/Options/ComposerViewFactoryOptions.swift`
around lines 491 - 498, The new initializer for
PollViewOptions/ComposerViewFactoryOptions added a required availableWidth
parameter and breaks callers using PollViewOptions(message:poll:isFirst:);
update the API to restore backward compatibility by giving availableWidth a
sensible default (e.g., 256) in the public init (the init(message: ChatMessage,
poll: Poll, isFirst: Bool, availableWidth: CGFloat) initializer) or add a
deprecated convenience initializer overload that omits availableWidth and
forwards to the new init with a default value so existing call sites continue to
compile.
Sources/StreamChatSwiftUI/ChatMessageList/MessageListConfig.swift (1)

118-120: Consider documenting the default value.

The documentation comment could mention the default value (256 points) to help developers understand the baseline behavior without needing to check the initializer.

πŸ“ Suggested improvement
-    /// The width used for attachment previews in the message list.
+    /// The width used for attachment previews in the message list.
+    ///
+    /// The default value is 256 points.
     public let attachmentPreviewWidth: CGFloat
πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Sources/StreamChatSwiftUI/ChatMessageList/MessageListConfig.swift` around
lines 118 - 120, Add the default value (256 points) to the documentation for
MessageListConfig's attachmentPreviewWidth property: update the doc comment for
attachmentPreviewWidth to state that its default is 256 (used when not
overridden in the MessageListConfig initializer), referencing the
MessageListConfig type and the attachmentPreviewWidth property so readers can
quickly find the initializer and understand the baseline behavior.
Sources/StreamChatSwiftUI/ChatMessageList/GiphyAttachmentView.swift (1)

15-15: Remove unused injection.

The @Injected(\.utils) property is added but never used in this view. This adds unnecessary overhead.

πŸ”§ Suggested fix
-    `@Injected`(\.utils) private var utils
πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Sources/StreamChatSwiftUI/ChatMessageList/GiphyAttachmentView.swift` at line
15, Remove the unused `@Injected`(\.utils) private var utils property from
GiphyAttachmentView.swift: locate the declaration of utils in the
GiphyAttachmentView type and delete that property (and any now-unreferenced
imports or comments related only to utils) so the view no longer contains an
unused injection.
πŸ€– Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@Sources/StreamChatSwiftUI/ChatMessageList/Polls/PollAttachmentView.swift`:
- Line 13: The file declares an unused dependency injection property
`@Injected`(\.utils) var utils in PollAttachmentView which is never referenced;
remove that property declaration from the PollAttachmentView implementation to
eliminate the unused symbol and clean up imports/usages (ensure no other code in
the file relies on utils after removal).

---

Nitpick comments:
In `@Sources/StreamChatSwiftUI/ChatMessageList/GiphyAttachmentView.swift`:
- Line 15: Remove the unused `@Injected`(\.utils) private var utils property from
GiphyAttachmentView.swift: locate the declaration of utils in the
GiphyAttachmentView type and delete that property (and any now-unreferenced
imports or comments related only to utils) so the view no longer contains an
unused injection.

In `@Sources/StreamChatSwiftUI/ChatMessageList/MessageListConfig.swift`:
- Around line 118-120: Add the default value (256 points) to the documentation
for MessageListConfig's attachmentPreviewWidth property: update the doc comment
for attachmentPreviewWidth to state that its default is 256 (used when not
overridden in the MessageListConfig initializer), referencing the
MessageListConfig type and the attachmentPreviewWidth property so readers can
quickly find the initializer and understand the baseline behavior.

In
`@Sources/StreamChatSwiftUI/ViewFactory/Options/ComposerViewFactoryOptions.swift`:
- Around line 491-498: The new initializer for
PollViewOptions/ComposerViewFactoryOptions added a required availableWidth
parameter and breaks callers using PollViewOptions(message:poll:isFirst:);
update the API to restore backward compatibility by giving availableWidth a
sensible default (e.g., 256) in the public init (the init(message: ChatMessage,
poll: Poll, isFirst: Bool, availableWidth: CGFloat) initializer) or add a
deprecated convenience initializer overload that omits availableWidth and
forwards to the new init with a default value so existing call sites continue to
compile.
πŸͺ„ Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
βš™οΈ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6d953d8f-2cee-410b-81c8-8ad2f25bd77f

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between a362e37 and 2a72a64.

β›” Files ignored due to path filters (58)
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messageContainerCurrentUserColor_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messageContainerEditedAIGenerated_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messageContainerEdited_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messageContainerViewSentThisUser_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_messageItemView_incomingAvatarHidden_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_singleImageNoCaption_notFirstInGroup_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_singleImageNoCaption_outgoing_firstInGroup_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_singleImageNoCaption_portrait_outgoing_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_singleImageWithCaption_outgoing_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_singleVideoNoCaption_outgoing_firstInGroup_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_linkAttachmentView_shouldNotRenderLinkPreviewWithOtherAttachments.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_linkAttachmentView_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewFileText_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewFile_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewGiphy_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewImage_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewImage_snapshot2Images.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewImage_snapshot3Images.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewImage_snapshot3ImagesAndVideo.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewImage_snapshotQuoted.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewPendingGiphy_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewPendingGiphy_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewPendingGiphy_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewPendingGiphy_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewQuoted_singleFileAttachment_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewQuoted_singleFileAttachment_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewQuoted_singleFileAttachment_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewQuoted_singleFileAttachment_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewQuoted_singleImageAttachment_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewQuoted_singleImageAttachment_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewQuoted_singleImageAttachment_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewQuoted_singleImageAttachment_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVideo_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMeTheming_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.small-dark.png is excluded by !**/*.png
πŸ“’ Files selected for processing (13)
  • CHANGELOG.md
  • Sources/StreamChatSwiftUI/ChatMessageList/GiphyAttachmentView.swift
  • Sources/StreamChatSwiftUI/ChatMessageList/MessageAttachmentsView.swift
  • Sources/StreamChatSwiftUI/ChatMessageList/MessageItemView.swift
  • Sources/StreamChatSwiftUI/ChatMessageList/MessageListConfig.swift
  • Sources/StreamChatSwiftUI/ChatMessageList/MessageView.swift
  • Sources/StreamChatSwiftUI/ChatMessageList/Polls/PollAttachmentView.swift
  • Sources/StreamChatSwiftUI/ChatMessageList/QuotedMessageView/ChatQuotedMessageView.swift
  • Sources/StreamChatSwiftUI/ViewFactory/DefaultViewFactory.swift
  • Sources/StreamChatSwiftUI/ViewFactory/Options/ComposerViewFactoryOptions.swift
  • StreamChatSwiftUITests/Tests/ChatChannel/MessageView_Tests.swift
  • StreamChatSwiftUITests/Tests/ChatChannel/PollAttachmentView_Tests.swift
  • StreamChatSwiftUITests/Tests/Utils/ViewFactory_Tests.swift

@Injected(\.fonts) var fonts
@Injected(\.colors) var colors
@Injected(\.tokens) var tokens
@Injected(\.utils) var utils
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟑 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if utils is actually used anywhere in PollAttachmentView.swift
rg -n 'utils\.' Sources/StreamChatSwiftUI/ChatMessageList/Polls/PollAttachmentView.swift

Repository: GetStream/stream-chat-swiftui

Length of output: 55


Remove unused utils injection.

The @Injected(\.utils) var utils property at line 13 is declared but never used in this file. Remove it.

πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Sources/StreamChatSwiftUI/ChatMessageList/Polls/PollAttachmentView.swift` at
line 13, The file declares an unused dependency injection property
`@Injected`(\.utils) var utils in PollAttachmentView which is never referenced;
remove that property declaration from the PollAttachmentView implementation to
eliminate the unused symbol and clean up imports/usages (ensure no other code in
the file relies on utils after removal).

Copy link
Copy Markdown
Contributor

@martinmitrevski martinmitrevski left a comment

Choose a reason for hiding this comment

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

some checks are failing here

Copy link
Copy Markdown
Contributor

@martinmitrevski martinmitrevski left a comment

Choose a reason for hiding this comment

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

This is broken in this PR:
Image

@laevandus laevandus marked this pull request as draft March 27, 2026 07:29
@laevandus laevandus marked this pull request as ready for review March 27, 2026 08:08
@laevandus
Copy link
Copy Markdown
Contributor Author

This is broken in this PR: Image

Fixed it and added snapshot test

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
StreamChatSwiftUITests/Tests/ChatChannel/MessageItemView_Tests.swift (1)

1061-1061: Consider adding explicit size for consistency with other AssertSnapshot usages.

All other AssertSnapshot calls in this file pass an explicit size parameter (e.g., AssertSnapshot(view, size: CGSize(width: 375, height: 200))). While the view is already framed at 375Γ—340, adding the explicit size maintains consistency.

Suggested change
         // Then
-        AssertSnapshot(view)
+        AssertSnapshot(view, size: CGSize(width: 375, height: 340))
πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@StreamChatSwiftUITests/Tests/ChatChannel/MessageItemView_Tests.swift` at line
1061, The AssertSnapshot call is missing an explicit size argument; update the
AssertSnapshot(view) invocation to include the explicit CGSize matching the
view's frame (use AssertSnapshot(view, size: CGSize(width: 375, height: 340)))
so it matches other usages and the view's framed dimensions; change the call
where AssertSnapshot is invoked for this test in MessageItemView_Tests.swift.
πŸ€– Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@StreamChatSwiftUITests/Tests/ChatChannel/MessageItemView_Tests.swift`:
- Line 1061: The AssertSnapshot call is missing an explicit size argument;
update the AssertSnapshot(view) invocation to include the explicit CGSize
matching the view's frame (use AssertSnapshot(view, size: CGSize(width: 375,
height: 340))) so it matches other usages and the view's framed dimensions;
change the call where AssertSnapshot is invoked for this test in
MessageItemView_Tests.swift.

ℹ️ Review info
βš™οΈ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 648e2f59-dc7a-44c7-bcda-7c37dce31063

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 2a72a64 and 17810eb.

β›” Files ignored due to path filters (31)
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_portraitImageWithOneReaction_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_portraitImageWithOneReaction_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_portraitImageWithOneReaction_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageItemView_Tests/test_portraitImageWithOneReaction_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_linkAttachmentView_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewGiphy_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMeTheming_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromMe_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingFromParticipant_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMeMultiple_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromMe_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipantMultiple_snapshot.small-dark.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.default-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.extraExtraExtraLarge-light.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.rightToLeftLayout-default.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageView_Tests/test_messageViewVoiceRecordingWithTextFromParticipant_snapshot.small-dark.png is excluded by !**/*.png
πŸ“’ Files selected for processing (5)
  • Sources/StreamChatSwiftUI/ChatMessageList/AsyncVoiceMessages/VoiceRecordingContainerView.swift
  • Sources/StreamChatSwiftUI/ChatMessageList/LinkAttachmentView.swift
  • Sources/StreamChatSwiftUI/ChatMessageList/MessageAttachmentsView.swift
  • Sources/StreamChatSwiftUI/ViewFactory/DefaultViewFactory.swift
  • StreamChatSwiftUITests/Tests/ChatChannel/MessageItemView_Tests.swift
🚧 Files skipped from review as they are similar to previous changes (2)
  • Sources/StreamChatSwiftUI/ViewFactory/DefaultViewFactory.swift
  • Sources/StreamChatSwiftUI/ChatMessageList/MessageAttachmentsView.swift

Copy link
Copy Markdown
Contributor

@martinmitrevski martinmitrevski left a comment

Choose a reason for hiding this comment

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

this doesn't look good as well
Image

@laevandus laevandus marked this pull request as draft March 27, 2026 13:44
@laevandus
Copy link
Copy Markdown
Contributor Author

this doesn't look good as well Image

Message actions should be 250 points according to Figma. Fixed the width issue where it started growing too much.

@laevandus laevandus marked this pull request as ready for review March 27, 2026 14:45
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
Sources/StreamChatSwiftUI/ChatMessageList/Reactions/ReactionsOverlayView.swift (1)

249-250: LGTM β€” layout fix aligns with design spec.

The combination of .frame(minWidth: 250) with .fixedSize(horizontal: true, vertical: false) correctly constrains the message actions to at least 250 points while allowing natural content-based sizing. This addresses the reported issue of message actions growing too wide.

Optional: Consider extracting 250 into a named constant (e.g., private let messageActionsMinWidth: CGFloat = 250) to document the Figma spec and ease future adjustments.

,

πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Sources/StreamChatSwiftUI/ChatMessageList/Reactions/ReactionsOverlayView.swift`
around lines 249 - 250, Replace the magic literal 250 used in
ReactionsOverlayView within the .frame(minWidth: 250, alignment: ...) call with
a named constant to document the layout spec and make adjustments easier;
introduce a private let (e.g., messageActionsMinWidth: CGFloat = 250) scoped
near the ReactionsOverlayView type and update the .frame call to use
messageActionsMinWidth, leaving .fixedSize(horizontal: true, vertical: false)
unchanged.
πŸ€– Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@Sources/StreamChatSwiftUI/ChatMessageList/Reactions/ReactionsOverlayView.swift`:
- Around line 249-250: Replace the magic literal 250 used in
ReactionsOverlayView within the .frame(minWidth: 250, alignment: ...) call with
a named constant to document the layout spec and make adjustments easier;
introduce a private let (e.g., messageActionsMinWidth: CGFloat = 250) scoped
near the ReactionsOverlayView type and update the .frame call to use
messageActionsMinWidth, leaving .fixedSize(horizontal: true, vertical: false)
unchanged.

ℹ️ Review info
βš™οΈ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 784301f9-74fe-4105-a126-8ddcb2d73e8c

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 17810eb and 4e16e14.

β›” Files ignored due to path filters (4)
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/ReactionsOverlayView_Tests/test_reactionsOverlayView_noReactions.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/ReactionsOverlayView_Tests/test_reactionsOverlayView_snapshot.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/ReactionsOverlayView_Tests/test_reactionsOverlayView_translated.1.png is excluded by !**/*.png
  • StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/ReactionsOverlayView_Tests/test_reactionsOverlay_veryLongMessage.1.png is excluded by !**/*.png
πŸ“’ Files selected for processing (1)
  • Sources/StreamChatSwiftUI/ChatMessageList/Reactions/ReactionsOverlayView.swift

@Stream-SDK-Bot
Copy link
Copy Markdown
Collaborator

SDK Size

title develop branch diff status
StreamChatSwiftUI 8.67 MB 8.68 MB +3 KB 🟒

@Stream-SDK-Bot
Copy link
Copy Markdown
Collaborator

StreamChatSwiftUI XCSize

Object Diff (bytes)
DefaultViewFactory.o +1564
GiphyAttachmentView.o +1035
VoiceRecordingContainerView.o +708
MessageAttachmentsView.o +702
LinkAttachmentView.o +628
Show 8 more objects
Object Diff (bytes)
PollAttachmentView.o +604
MessageItemView.o +448
ChatQuotedMessageView.o -274
ReactionsOverlayView.o +244
ComposerViewFactoryOptions.o +140
MessageListConfig.o +131
SystemMessageView.o +120
MessageContainerView.o -96

@github-actions
Copy link
Copy Markdown

Public Interface

 public struct PollAttachmentView: View  
-   public init(factory: Factory,message: ChatMessage,poll: Poll,isFirst: Bool)
+   public init(factory: Factory,message: ChatMessage,poll: Poll,isFirst: Bool,width: CGFloat)

 public final class PollViewOptions: Sendable  
-   
+   public let availableWidth: CGFloat
- 
+   
-   public init(message: ChatMessage,poll: Poll,isFirst: Bool)
+ 
+   public init(message: ChatMessage,poll: Poll,isFirst: Bool,availableWidth: CGFloat)

 @MainActor public final class MessageListConfig  
-   public let bouncedMessagesAlertActionsEnabled: Bool
+   public let attachmentPreviewWidth: CGFloat
-   public let skipEditedMessageLabel: (ChatMessage) -> Bool
+   public let bouncedMessagesAlertActionsEnabled: Bool
-   public let draftMessagesEnabled: Bool
+   public let skipEditedMessageLabel: (ChatMessage) -> Bool
-   public let downloadFileAttachmentsEnabled: Bool
+   public let draftMessagesEnabled: Bool
-   public let highlightMessageWhenJumping: Bool
+   public let downloadFileAttachmentsEnabled: Bool
-   public var navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode
+   public let highlightMessageWhenJumping: Bool
-   public var supportedMessageActions: @MainActor (SupportedMessageActionsOptions) -> [MessageAction]
+   public var navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode
-   
+   public var supportedMessageActions: @MainActor (SupportedMessageActionsOptions) -> [MessageAction]
- 
+   
-   public init(messageListType: MessageListType = .messaging,typingIndicatorPlacement: TypingIndicatorPlacement = .automatic,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:))
+ 
+   public init(messageListType: MessageListType = .messaging,typingIndicatorPlacement: TypingIndicatorPlacement = .automatic,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,attachmentPreviewWidth: CGFloat = 256,navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode = .inline,supportedMessageActions: @escaping @MainActor (SupportedMessageActionsOptions) -> [MessageAction] = MessageAction.defaultActions(for:))

@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
78.0% Coverage on New Code (required β‰₯ 80%)

See analysis details on SonarQube Cloud

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.

3 participants