Skip to content

fix(ui, persistence, samples): more QA fixes#2629

Open
xsahil03x wants to merge 14 commits intov10.0.0from
fix/more-qa
Open

fix(ui, persistence, samples): more QA fixes#2629
xsahil03x wants to merge 14 commits intov10.0.0from
fix/more-qa

Conversation

@xsahil03x
Copy link
Copy Markdown
Member

@xsahil03x xsahil03x commented Apr 23, 2026

Summary

QA polish across stream_chat_flutter, stream_chat_persistence, and the sample app.

stream_chat_flutter

  • Standardised empty and error states across every scroll view (channels, threads, drafts, members, users, message search, poll votes, reactions, photo gallery) — consistent sizing, spacing, and retry affordance.
  • Fixed StreamPhotoGalleryTile missing rounded corners and its badges / selection indicator not mirroring in RTL.
  • Fixed the gallery attachment picker's permission placeholder being top-aligned and its grid / "add more" tile using inconsistent spacing.
  • Fixed the "thread reply" message action appearing on parent messages while already inside their thread view.
  • Fixed unintended Material ink ripple on message tap.
  • Fixed EndOfFrameCallbackWidget showing a generic error string when its callback throws; it now falls back to its child and forwards the error to FlutterError.reportError so host apps (Crashlytics / Sentry) still see it.
  • Removed redundant internal errorBuilders on StreamFilePicker and StreamPollCreator in favour of the new fallback.

stream_chat_persistence

  • Fixed channel list re-sorting on refresh or when returning from background.

Sample app

  • Modernised the push-notification stack: new NotificationService / PushTokenManager / NotificationBackgroundHandler, consolidated payload modelling, automatic stale-device cleanup, bumped firebase_core / firebase_messaging / flutter_local_notifications, raised iOS deployment target to 15.0 and
    minSdkVersion to 24.
  • Improved the custom location picker: retries fetch on resume from settings, adds an "Open Settings" CTA when permission is denied.
  • No longer hides deleted messages from other users in the custom channel/thread pages — falls back to the SDK's defaultMessageFilter.
  • Switched the custom channel list's channel-level actions to BetterStreamBuilder.

…users

The sample app overrode the message list filter to drop any message where
isDeleted or shadowed was true for non-current users. This suppressed the
"Message deleted" cell when a participant deleted their message.

Removing the override falls back to the SDK's defaultMessageFilter, which
only filters shadowed messages and lets deleted messages render as expected.

Made-with: Cursor
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 23, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a2a564b7-63e2-47d2-8358-e12514641b68

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/more-qa

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.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 23, 2026

Codecov Report

❌ Patch coverage is 6.11111% with 169 lines in your changes missing coverage. Please review.
✅ Project coverage is 66.73%. Comparing base (1a9bcba) to head (4c10089).
⚠️ Report is 2 commits behind head on v10.0.0.

Files with missing lines Patch % Lines
..._view/photo_gallery/stream_photo_gallery_tile.dart 0.00% 32 Missing ⚠️
...tachment_picker/options/stream_gallery_picker.dart 3.84% 25 Missing ⚠️
...c/scroll_view/stream_scroll_view_error_widget.dart 0.00% 24 Missing ⚠️
...c/scroll_view/stream_scroll_view_empty_widget.dart 0.00% 17 Missing ⚠️
...ut/attachment_picker/stream_attachment_picker.dart 23.07% 10 Missing ⚠️
.../channel_scroll_view/stream_channel_list_view.dart 0.00% 6 Missing ⚠️
...view/draft_scroll_view/stream_draft_list_view.dart 0.00% 6 Missing ⚠️
...ew/member_scroll_view/stream_member_grid_view.dart 0.00% 6 Missing ⚠️
...h_scroll_view/stream_message_search_list_view.dart 0.00% 6 Missing ⚠️
...croll_view/photo_gallery/stream_photo_gallery.dart 0.00% 6 Missing ⚠️
... and 6 more
Additional details and impacted files
@@             Coverage Diff             @@
##           v10.0.0    #2629      +/-   ##
===========================================
+ Coverage    66.57%   66.73%   +0.16%     
===========================================
  Files          415      413       -2     
  Lines        25312    25248      -64     
===========================================
- Hits         16851    16849       -2     
+ Misses        8461     8399      -62     

☔ 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 xsahil03x changed the title fix(llc, samples): more QA fixes fix(llc, persistence, samples): more QA fixes Apr 23, 2026
Comprehensive overhaul of the push notification implementation in the sample app:

*   **Refactored Notification Architecture**: Replaced the legacy `local_notification_observer.dart` and `notifications_service.dart` with a new `NotificationService` and `PushTokenManager` for more robust FCM and local notification handling.
*   **Added Notification Modeling**: Introduced `ChatNotification` and `Serializer` utility to handle Stream Chat push payloads consistently across platforms.
*   **Improved Background Handling**: Added `NotificationBackgroundHandler` with message pre-caching capabilities to persistence before the user opens the app.
*   **Enhanced Token Management**: Implemented `PushTokenManager` and `PushProvider` to handle token registration, refreshes, and stale device cleanup automatically.
*   **Updated Dependencies & Requirements**:
    *   Bumped `firebase_core` to `^4.0.0`, `firebase_messaging` to `^16.0.0`, and `flutter_local_notifications` to `^21.0.0`.
    *   Increased `IPHONEOS_DEPLOYMENT_TARGET` to 15.0 and `minSdkVersion` to 24.
*   **Cleaned up AppDelegate**: Simplified `AppDelegate.swift` by removing manual UserDefaults syncing in favor of standard plugin integration.
Refined the location picker dialog and option widgets with a better UI and more robust permission handling.

- Added `WidgetsBindingObserver` to `LocationPickerDialog` to automatically retry fetching location when the app resumes from settings.
- Introduced an "Open Settings" button in the `LocationNotFound` view to guide users to enable permissions.
- Updated `LocationPickerOption` to use `StreamButton` and standard theme spacing/icons.
- Enhanced `EndOfFrameCallbackWidget` to report errors to `FlutterError` when no `errorBuilder` is provided.
- Added `openAppSettings` fallback to `LocationProvider`.
… creator

Removed the `errorBuilder` blocks in `StreamFilePicker` and `StreamPollCreator`. These builders were displaying permission-related UI or retry buttons that are no longer necessary in these specific components, simplifying the attachment picker options.
Unified the look and feel of empty and error states across all scroll views by leveraging the `StreamScrollViewEmptyWidget` and `StreamScrollViewErrorWidget` with updated theme constants.

- Removed specialized empty state widgets (`StreamChannelListEmptyState`, `StreamThreadListEmptyState`) in favor of a common implementation.
- Updated `StreamScrollViewEmptyWidget` and `StreamScrollViewErrorWidget` to use standardized sizing, spacing, and typography from the current `StreamChatTheme`.
- Refactored multiple list and grid views (channels, threads, members, users, reactions, polls, message search, and drafts) to use simplified `emptyBuilder` logic.
- Standardized the retry button in error states using `StreamButton`.
- Updated `StreamPhotoGalleryTile` with improved styling, including better border radius handling and RTL support for badges and indicators.
- Simplified custom empty builders in the sample app to align with the new UI patterns.
@xsahil03x xsahil03x changed the title fix(llc, persistence, samples): more QA fixes fix(ui, persistence, samples): more QA fixes Apr 24, 2026
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.

2 participants