fix(ui, persistence, samples): more QA fixes#2629
fix(ui, persistence, samples): more QA fixes#2629
Conversation
…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
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Codecov Report❌ Patch coverage is 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. 🚀 New features to boost your workflow:
|
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.
…tream gallery picker
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.
Summary
QA polish across
stream_chat_flutter,stream_chat_persistence, and the sample app.stream_chat_flutterStreamPhotoGalleryTilemissing rounded corners and its badges / selection indicator not mirroring in RTL.EndOfFrameCallbackWidgetshowing a generic error string when its callback throws; it now falls back to its child and forwards the error toFlutterError.reportErrorso host apps (Crashlytics / Sentry) still see it.errorBuilders onStreamFilePickerandStreamPollCreatorin favour of the new fallback.stream_chat_persistenceSample app
NotificationService/PushTokenManager/NotificationBackgroundHandler, consolidated payload modelling, automatic stale-device cleanup, bumpedfirebase_core/firebase_messaging/flutter_local_notifications, raised iOS deployment target to 15.0 andminSdkVersionto 24.defaultMessageFilter.BetterStreamBuilder.