Skip to content

Conversation

@xsahil03x
Copy link
Member

@xsahil03x xsahil03x commented Jul 1, 2025

Linear: FLU-179

Description of the pull request

This commit introduces significant enhancements to the attachment picker:

Core Changes:

  • StreamAttachmentPickerController: Now handles a more generic AttachmentPickerValue which includes poll, attachments, and extraData for custom values.
  • AttachmentPickerOption: A new base class for picker options, with two concrete implementations:
    • TabbedAttachmentPickerOption: For options that display custom UI within a tabbed interface (common on mobile).
    • SystemAttachmentPickerOption: For options that integrate with system pickers (e.g., file dialogs, camera).
  • AttachmentPickerType: A sealed class hierarchy representing the types of attachments an option can support (e.g., images, videos, files, poll, and custom types).
  • StreamAttachmentPickerResult: A sealed class hierarchy for results from the picker, including AttachmentsPicked, PollCreated, AttachmentPickerError, and a base CustomAttachmentPickerResult for extensions.

UI and Integration:

  • StreamMessageInput:
    • Now accepts customAttachmentPickerOptions to extend the picker.
    • Includes onCustomAttachmentPickerResult to handle results from custom options.
    • Updated logic for determining allowed attachment types, considering permissions and context (e.g., no polls in threads or during editing).
  • showStreamAttachmentPickerModalBottomSheet:
    • Now determines whether to show a tabbed or system picker based on platform and useSystemAttachmentPicker.
    • Validates that custom options provided match the picker type being used (e.g., TabbedAttachmentPickerOption for tabbed interface).
    • Returns a StreamAttachmentPickerResult.
  • Replaced StreamMobileAttachmentPickerBottomSheet with StreamTabbedAttachmentPickerBottomSheet.
  • Replaced StreamWebOrDesktopAttachmentPickerBottomSheet with StreamSystemAttachmentPickerBottomSheet.
  • StreamGalleryPicker now accepts a GalleryPickerConfig for its settings.

Screenshots / Videos

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Introduced a modular and extensible attachment picker system with tabbed and system-integrated modes.
    • Added support for custom attachment picker options and custom result callbacks in message input.
    • Added gallery picker configuration and extra data support for attachment pickers.
    • Exposed new controller and result classes to manage attachments and picker outcomes.
  • Refactor

    • Restructured attachment picker UI and logic for improved modularity and clarity.
    • Unified attachment and poll handling with a result-based approach.
    • Updated public APIs to use new configuration objects and option classes.
    • Replaced legacy enums and classes with sealed class hierarchies for attachment types and picker options.
  • Documentation

    • Enhanced documentation and usage examples for attachment picker customization and modes.
  • Style

    • Modernized code using Dart switch expressions for better readability.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 1, 2025

Walkthrough

The attachment picker system for the Flutter chat UI was extensively refactored and modularized. New controller, option, and result classes were introduced, supporting both tabbed and system picker modes. The API was extended for custom picker options and results, with improved configuration and state management. Deprecated logic was removed, and exports updated.

Changes

File(s) Change Summary
.../stream_chat_flutter.dart Added exports for attachment picker controller, option, and result modules.
.../edit_message_sheet.dart Removed explicit restriction on poll picker type for message editing; all picker types now allowed.
.../stream_message_input.dart Added support for custom attachment picker options and result callbacks; unified attachment and poll handling; refactored allowed types logic.
.../attachment_picker/options/stream_gallery_picker.dart Refactored to use a single GalleryPickerConfig object for thumbnail configuration; updated constructor and internal usage.
.../attachment_picker/stream_attachment_picker.dart Major refactor: removed old controller and option classes; introduced new modular option classes and bottom sheets for system/tabbed modes; updated builders and UI logic.
.../attachment_picker/stream_attachment_picker_bottom_sheet.dart Updated modal bottom sheet to support tabbed and system picker modes; added configuration parameters; improved documentation and validation of custom options.
.../attachment_picker/stream_attachment_picker_controller.dart New file: Introduced StreamAttachmentPickerController and AttachmentPickerValue for managing attachments, polls, and extra data with constraints and caching.
.../attachment_picker/stream_attachment_picker_option.dart New file: Introduced abstract and concrete option classes for system/tabbed picker options, picker type hierarchy, and enablement logic.
.../attachment_picker/stream_attachment_picker_result.dart New file: Introduced sealed class hierarchy for picker results: attachments picked, poll created, errors, and extensible custom results.
.../utils/extensions.dart Refactored switch statements to use Dart switch expressions for FileTypeX.toAttachmentType and AttachmentPickerTypeX.fileType; improved error messages.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant StreamMessageInput
    participant AttachmentPickerModal
    participant StreamAttachmentPickerController
    participant CustomOptionHandler

    User->>StreamMessageInput: Press attachment button
    StreamMessageInput->>AttachmentPickerModal: showStreamAttachmentPickerModalBottomSheet
    AttachmentPickerModal->>StreamAttachmentPickerController: Initialize or update controller
    AttachmentPickerModal->>User: Show picker UI (tabbed or system)
    User->>AttachmentPickerModal: Select option / pick attachments / create poll
    alt Attachments picked
        AttachmentPickerModal->>StreamMessageInput: AttachmentsPicked result
        StreamMessageInput->>StreamAttachmentPickerController: Update attachments
    else Poll created
        AttachmentPickerModal->>StreamMessageInput: PollCreated result
        StreamMessageInput->>StreamAttachmentPickerController: Update poll
    else Custom option
        AttachmentPickerModal->>CustomOptionHandler: CustomAttachmentPickerResult
        CustomOptionHandler->>StreamMessageInput: Handle custom result
    else Error
        AttachmentPickerModal->>StreamMessageInput: AttachmentPickerError
        StreamMessageInput->>User: Show error
    end
Loading

Assessment against linked issues

Objective Addressed Explanation
Refactor AttachmentPicker to support non attachment types (FLU-179)

Assessment against linked issues: Out-of-scope changes

No out-of-scope changes detected related to the linked issue.

Possibly related PRs

Poem

In the warren of widgets, a picker anew,
With tabs and with system, more options to view!
Attachments and polls, now easy to send,
Custom results handled—oh, what a trend!
🐇 With carrots and code, we leap and we cheer,
For modular pickers are finally here!


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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@xsahil03x
Copy link
Member Author

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 1, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@xsahil03x xsahil03x force-pushed the refactor/stream-attachment-picker branch from 1ba1ab7 to 0a2e2db Compare July 1, 2025 14:43
@xsahil03x xsahil03x changed the title refactor(ui)!: Add support for non-attachment types in attachment picker refactor(ui)!: add support for non-attachment types in attachment picker Jul 1, 2025
@codecov
Copy link

codecov bot commented Jul 1, 2025

Codecov Report

Attention: Patch coverage is 2.60586% with 299 lines in your changes missing coverage. Please review.

Please upload report for BASE (v10.0.0@cc69eb3). Learn more about missing BASE report.

Files with missing lines Patch % Lines
...ut/attachment_picker/stream_attachment_picker.dart 0.00% 122 Missing ⚠️
...nt_picker/stream_attachment_picker_controller.dart 1.12% 88 Missing ⚠️
...er/lib/src/message_input/stream_message_input.dart 0.00% 26 Missing ⚠️
..._picker/stream_attachment_picker_bottom_sheet.dart 0.00% 25 Missing ⚠️
...chment_picker/stream_attachment_picker_option.dart 23.07% 20 Missing ⚠️
.../stream_chat_flutter/lib/src/utils/extensions.dart 0.00% 9 Missing ⚠️
...chment_picker/stream_attachment_picker_result.dart 0.00% 5 Missing ⚠️
...tachment_picker/options/stream_gallery_picker.dart 20.00% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             v10.0.0    #2293   +/-   ##
==========================================
  Coverage           ?   63.97%           
==========================================
  Files              ?      414           
  Lines              ?    25633           
  Branches           ?        0           
==========================================
  Hits               ?    16398           
  Misses             ?     9235           
  Partials           ?        0           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@xsahil03x
Copy link
Member Author

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 1, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Contributor

@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 (1)
packages/stream_chat_flutter/lib/src/message_input/attachment_picker/options/stream_gallery_picker.dart (1)

144-147: Test coverage gap for configuration usage.

While the implementation is correct, the static analysis correctly identifies that these lines lack test coverage. Consider adding tests to verify that the config properties are properly passed through to the StreamPhotoGallery widget.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1ba1ab7 and d9c04cb.

📒 Files selected for processing (10)
  • packages/stream_chat_flutter/lib/src/bottom_sheets/edit_message_sheet.dart (0 hunks)
  • packages/stream_chat_flutter/lib/src/message_input/attachment_picker/options/stream_gallery_picker.dart (5 hunks)
  • packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart (7 hunks)
  • packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker_bottom_sheet.dart (8 hunks)
  • packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker_controller.dart (1 hunks)
  • packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker_option.dart (1 hunks)
  • packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker_result.dart (1 hunks)
  • packages/stream_chat_flutter/lib/src/message_input/stream_message_input.dart (4 hunks)
  • packages/stream_chat_flutter/lib/src/utils/extensions.dart (1 hunks)
  • packages/stream_chat_flutter/lib/stream_chat_flutter.dart (1 hunks)
💤 Files with no reviewable changes (1)
  • packages/stream_chat_flutter/lib/src/bottom_sheets/edit_message_sheet.dart
✅ Files skipped from review due to trivial changes (1)
  • packages/stream_chat_flutter/lib/stream_chat_flutter.dart
🚧 Files skipped from review as they are similar to previous changes (5)
  • packages/stream_chat_flutter/lib/src/message_input/stream_message_input.dart
  • packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker_result.dart
  • packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker_option.dart
  • packages/stream_chat_flutter/lib/src/utils/extensions.dart
  • packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker_controller.dart
🧰 Additional context used
🪛 GitHub Check: codecov/patch
packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart

[warning] 14-14: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L14
Added line #L14 was not covered by tests


[warning] 28-31: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L28-L31
Added lines #L28 - L31 were not covered by tests


[warning] 33-33: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L33
Added line #L33 was not covered by tests


[warning] 35-39: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L35-L39
Added lines #L35 - L39 were not covered by tests


[warning] 41-41: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L41
Added line #L41 was not covered by tests


[warning] 43-45: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L43-L45
Added lines #L43 - L45 were not covered by tests


[warning] 61-61: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L61
Added line #L61 was not covered by tests


[warning] 83-83: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L83
Added line #L83 was not covered by tests


[warning] 90-91: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L90-L91
Added lines #L90 - L91 were not covered by tests


[warning] 93-95: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L93-L95
Added lines #L93 - L95 were not covered by tests


[warning] 97-97: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L97
Added line #L97 was not covered by tests


[warning] 99-100: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L99-L100
Added lines #L99 - L100 were not covered by tests


[warning] 108-108: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L108
Added line #L108 was not covered by tests


[warning] 112-112: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L112
Added line #L112 was not covered by tests


[warning] 122-122: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L122
Added line #L122 was not covered by tests


[warning] 124-124: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L124
Added line #L124 was not covered by tests


[warning] 135-135: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L135
Added line #L135 was not covered by tests


[warning] 154-155: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L154-L155
Added lines #L154 - L155 were not covered by tests


[warning] 166-167: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L166-L167
Added lines #L166 - L167 were not covered by tests


[warning] 171-172: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L171-L172
Added lines #L171 - L172 were not covered by tests


[warning] 176-176: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L176
Added line #L176 was not covered by tests


[warning] 194-195: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L194-L195
Added lines #L194 - L195 were not covered by tests


[warning] 197-200: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L197-L200
Added lines #L197 - L200 were not covered by tests


[warning] 202-202: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L202
Added line #L202 was not covered by tests


[warning] 426-426: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L426
Added line #L426 was not covered by tests


[warning] 434-434: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L434
Added line #L434 was not covered by tests


[warning] 439-440: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L439-L440
Added lines #L439 - L440 were not covered by tests


[warning] 442-442: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L442
Added line #L442 was not covered by tests


[warning] 446-446: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart#L446
Added line #L446 was not covered by tests

packages/stream_chat_flutter/lib/src/message_input/attachment_picker/options/stream_gallery_picker.dart

[warning] 144-147: packages/stream_chat_flutter/lib/src/message_input/attachment_picker/options/stream_gallery_picker.dart#L144-L147
Added lines #L144 - L147 were not covered by tests

🔇 Additional comments (11)
packages/stream_chat_flutter/lib/src/message_input/attachment_picker/options/stream_gallery_picker.dart (2)

27-30: Excellent API consolidation with backward compatibility.

The refactoring to consolidate thumbnail-related parameters into a single GalleryPickerConfig object significantly improves the API design. Using a default config ensures backward compatibility while making the interface cleaner and more maintainable.


163-184: Well-designed configuration class with sensible defaults.

The GalleryPickerConfig class provides a clean abstraction for gallery picker configuration with appropriate default values that match the original behavior. The const constructor and immutable design follow Flutter best practices.

packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker_bottom_sheet.dart (4)

7-60: Comprehensive documentation for dual picker modes.

The extensive documentation clearly explains the two picker modes (tabbed vs system) with practical examples. This will significantly help developers understand when and how to use each mode.


118-145: Robust type validation for system picker options.

The validation logic that ensures only SystemAttachmentPickerOption instances are used with the system picker is excellent. The clear error message will help developers quickly identify configuration issues.


147-164: Consistent validation pattern for tabbed picker options.

The validation logic mirrors the system picker validation, ensuring type safety across both picker modes. The consistent error messaging pattern improves the developer experience.


180-217: Clean builder refactoring with enhanced controller management.

The renamed StreamAttachmentPickerBottomSheetBuilder properly handles the new initialExtraData parameter and maintains good controller lifecycle management. The controller update logic correctly handles all scenarios.

packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart (5)

12-54: Excellent architectural separation with clear responsibilities.

The new StreamSystemAttachmentPickerBottomSheet and StreamTabbedAttachmentPickerBottomSheet classes provide a clean separation of concerns between system-integrated and tabbed picker interfaces. The ValueListenableBuilder approach ensures reactive UI updates.


170-178: Modern Dart switch expressions improve readability.

The use of modern Dart switch expressions for determining colors and enabled states makes the code more concise and readable compared to traditional if-else chains.


434-444: Improved error handling with structured results.

The _handleSingePick function properly wraps operations in try-catch blocks and returns structured StreamAttachmentPickerResult types. This provides better error handling and type safety compared to the previous implementation.


458-564: Enhanced option configuration with predicates.

The new TabbedAttachmentPickerOption approach with isEnabled predicates provides much more flexibility for controlling when options are available based on current state. This is a significant improvement over static configuration.


588-660: Comprehensive system picker implementation.

The systemAttachmentPickerBuilder provides a clean alternative interface for platforms that prefer native file dialogs. The consistent error handling and result types maintain API uniformity across picker modes.

@xsahil03x
Copy link
Member Author

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 11, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Contributor

@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 (2)
packages/stream_chat_flutter/CHANGELOG.md (1)

11-11: Consider switching the migration-guide link to an absolute URL.

Using a relative link (../../migrations/v10-migration.md) can break when the changelog is rendered on external sites (e.g., pub.dev). An absolute GitHub URL guarantees the link always resolves.

-For more details, please refer to the [migration guide](../../migrations/v10-migration.md).
+For more details, see the [migration guide](https://github.com/GetStream/stream-chat-flutter/blob/main/migrations/v10-migration.md).
migrations/v10-migration.md (1)

31-32: Remove trailing colons in headings to satisfy markdownlint (MD026)

Headings ending with : violate MD026. Dropping the colon keeps the text identical while clearing the linter noise:

-#### Key Changes:
+#### Key Changes
...
-#### Migration Steps:
+#### Migration Steps

Apply the same tweak to all other headings flagged by the linter (lines listed in this comment).
This keeps the guide tidy and CI-friendly.

Also applies to: 37-38, 63-64, 69-70, 118-119, 123-124, 162-163, 167-168, 369-370, 374-375

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d9c04cb and fbcca94.

📒 Files selected for processing (3)
  • migrations/v10-migration.md (3 hunks)
  • packages/stream_chat_flutter/CHANGELOG.md (1 hunks)
  • packages/stream_chat_flutter/lib/stream_chat_flutter.dart (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • packages/stream_chat_flutter/lib/stream_chat_flutter.dart
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
migrations/v10-migration.md

31-31: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


37-37: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


63-63: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


69-69: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


118-118: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


123-123: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


162-162: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


167-167: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


369-369: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


374-374: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

🪛 LanguageTool
packages/stream_chat_flutter/CHANGELOG.md

[style] ~17-~17: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...bs like contact and location pickers. - Added onCustomAttachmentPickerResult callba...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: analyze
  • GitHub Check: build (android)
  • GitHub Check: test
🔇 Additional comments (2)
packages/stream_chat_flutter/CHANGELOG.md (2)

5-9: Changelog entries are clear and follow existing style.

The wording, back-tick formatting for identifiers, and period usage match the convention used throughout earlier sections. No action required.


15-17: Minor wording duplicate, but acceptable.

Three consecutive bullets start with “Added …”, which is fine for enumerations and consistent with prior sections. No change needed.

@xsahil03x xsahil03x merged commit 74188e3 into v10.0.0 Jul 11, 2025
9 checks passed
@xsahil03x xsahil03x deleted the refactor/stream-attachment-picker branch July 11, 2025 11:07
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.

3 participants