-
Notifications
You must be signed in to change notification settings - Fork 1
fix: unify timed sheets behavior #556
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@piotr-iohk cc |
… into fix/uniffy-timed-sheet-behavior # Conflicts: # app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt
# Conflicts: # app/src/main/java/to/bitkit/ui/ContentView.kt # app/src/main/java/to/bitkit/ui/nav/Navigator.kt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
detekt found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
# Conflicts: # app/src/main/java/to/bitkit/ui/nav/entries/HomeEntries.kt
|
Waiting for #554 |
app/src/main/java/to/bitkit/utils/timedsheets/sheets/AppUpdateTimedSheet.kt
Fixed
Show fixed
Hide fixed
|
found a navigation transition inconsistency not related to this branch Screen_recording_20251226_064504.webm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR refactors the timed sheets system by extracting logic into a dedicated TimedSheetManager class and individual sheet implementations. The changes remove the balance-based trigger mechanism (aligning with iOS behavior), introduce proper separation of concerns through individual sheet classes, and add comprehensive unit test coverage.
Key changes:
- Introduced
TimedSheetManagerto centralize sheet display logic and queue management - Created individual sheet implementations (AppUpdateTimedSheet, BackupTimedSheet, etc.) following the
TimedSheetIteminterface - Removed balance change observer trigger, replacing with manual check on home screen entry
- Added comprehensive unit tests for all sheet types and the manager
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| app/src/test/java/to/bitkit/utils/timedsheets/sheets/QuickPayTimedSheetTest.kt | Unit tests for QuickPay sheet logic covering display conditions and dismissal behavior |
| app/src/test/java/to/bitkit/utils/timedsheets/sheets/NotificationsTimedSheetTest.kt | Unit tests for Notifications sheet including timeout logic and balance requirements |
| app/src/test/java/to/bitkit/utils/timedsheets/sheets/HighBalanceTimedSheetTest.kt | Unit tests for HighBalance sheet covering USD threshold checks, warning limits, and timeout behavior |
| app/src/test/java/to/bitkit/utils/timedsheets/sheets/BackupTimedSheetTest.kt | Unit tests for Backup sheet verification and timeout logic |
| app/src/test/java/to/bitkit/utils/timedsheets/sheets/AppUpdateTimedSheetTest.kt | Unit tests for AppUpdate sheet covering version checking and critical update filtering |
| app/src/test/java/to/bitkit/utils/timedsheets/TimedSheetManagerTest.kt | Unit tests for TimedSheetManager covering queue management, priority sorting, and lifecycle |
| app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt | Refactored to use TimedSheetManager, removed inline sheet logic, extracted critical update check |
| app/src/main/java/to/bitkit/utils/timedsheets/sheets/QuickPayTimedSheet.kt | Implementation of QuickPay sheet display and dismissal logic |
| app/src/main/java/to/bitkit/utils/timedsheets/sheets/NotificationsTimedSheet.kt | Implementation of Notifications sheet with timeout and balance checks |
| app/src/main/java/to/bitkit/utils/timedsheets/sheets/HighBalanceTimedSheet.kt | Implementation of HighBalance sheet with USD conversion and warning limits |
| app/src/main/java/to/bitkit/utils/timedsheets/sheets/BackupTimedSheet.kt | Implementation of Backup sheet with verification and timeout logic |
| app/src/main/java/to/bitkit/utils/timedsheets/sheets/AppUpdateTimedSheet.kt | Implementation of AppUpdate sheet with version checking and critical filtering |
| app/src/main/java/to/bitkit/utils/timedsheets/TimedSheetUtils.kt | Utility functions for timeout checking and interval constants |
| app/src/main/java/to/bitkit/utils/timedsheets/TimedSheetManager.kt | Manager class for sheet registration, queue management, and display logic |
| app/src/main/java/to/bitkit/utils/timedsheets/TimedSheetItem.kt | Interface defining the contract for timed sheet implementations |
| app/src/main/java/to/bitkit/ui/nav/entries/SheetEntries.kt | Updated sheet entries to use DisposableEffect for dismissal handling |
| app/src/main/java/to/bitkit/ui/nav/SheetSceneStrategy.kt | Added automatic dismissal on swipe-down gesture detection |
| app/src/main/java/to/bitkit/ui/nav/Navigator.kt | Added navigateToCriticalUpdate method for clearing backstack |
| app/src/main/java/to/bitkit/ui/ContentView.kt | Added special routing logic for critical update navigation |
| app/src/main/java/to/bitkit/di/TimedSheetModule.kt | Dependency injection module for TimedSheetManager provider |
e57eef3 to
1eb159f
Compare
# Conflicts: # app/src/main/java/to/bitkit/ui/ContentView.kt # app/src/main/java/to/bitkit/ui/MainActivity.kt # app/src/main/java/to/bitkit/ui/components/AuthCheckScreen.kt # app/src/main/java/to/bitkit/ui/components/DrawerMenu.kt # app/src/main/java/to/bitkit/ui/components/SheetHost.kt # app/src/main/java/to/bitkit/ui/nav/DeepLinks.kt # app/src/main/java/to/bitkit/ui/nav/Navigator.kt # app/src/main/java/to/bitkit/ui/nav/Routes.kt # app/src/main/java/to/bitkit/ui/nav/SheetSceneStrategy.kt # app/src/main/java/to/bitkit/ui/nav/entries/HomeEntries.kt # app/src/main/java/to/bitkit/ui/nav/entries/OnboardingEntries.kt # app/src/main/java/to/bitkit/ui/nav/entries/SettingsEntries.kt # app/src/main/java/to/bitkit/ui/nav/entries/SheetEntries.kt # app/src/main/java/to/bitkit/ui/nav/entries/TransferEntries.kt # app/src/main/java/to/bitkit/ui/nav/entries/WidgetEntries.kt # app/src/main/java/to/bitkit/ui/screens/settings/DevSettingsScreen.kt # app/src/main/java/to/bitkit/ui/screens/wallets/HomeScreen.kt # app/src/main/java/to/bitkit/ui/screens/wallets/activity/ActivityDetailScreen.kt # app/src/main/java/to/bitkit/ui/screens/wallets/send/AddTagScreen.kt # app/src/main/java/to/bitkit/ui/screens/wallets/send/SendAddressScreen.kt # app/src/main/java/to/bitkit/ui/screens/wallets/send/SendRecipientScreen.kt # app/src/main/java/to/bitkit/ui/settings/AdvancedSettingsScreen.kt # app/src/main/java/to/bitkit/ui/settings/BackupSettingsScreen.kt # app/src/main/java/to/bitkit/ui/settings/LogsScreen.kt # app/src/main/java/to/bitkit/ui/settings/SecuritySettingsScreen.kt # app/src/main/java/to/bitkit/ui/settings/SettingsScreen.kt # app/src/main/java/to/bitkit/ui/settings/appStatus/AppStatusScreen.kt # app/src/main/java/to/bitkit/ui/settings/backups/ResetAndRestoreScreen.kt # app/src/main/java/to/bitkit/ui/settings/backups/ShowMnemonicScreen.kt # app/src/main/java/to/bitkit/ui/settings/general/GeneralSettingsScreen.kt # app/src/main/java/to/bitkit/ui/settings/lightning/ChannelDetailScreen.kt # app/src/main/java/to/bitkit/ui/settings/lightning/CloseConnectionScreen.kt # app/src/main/java/to/bitkit/ui/settings/lightning/LightningConnectionsScreen.kt # app/src/main/java/to/bitkit/ui/settings/pin/ChangePinConfirmScreen.kt # app/src/main/java/to/bitkit/ui/settings/pin/ChangePinNewScreen.kt # app/src/main/java/to/bitkit/ui/settings/pin/ChangePinResultScreen.kt # app/src/main/java/to/bitkit/ui/settings/pin/ChangePinScreen.kt # app/src/main/java/to/bitkit/ui/settings/support/SupportScreen.kt # app/src/main/java/to/bitkit/ui/settings/transactionSpeed/TransactionSpeedSettingsScreen.kt # app/src/main/java/to/bitkit/ui/sheets/GiftViewModel.kt # app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt
|
Draft to fix issues after pull |
|
videos updated. internal_navigation_bug.webm |
|
@ovitrif we could merge this branch to fix the timed sheet bugs in the base branch |
Closes #448
Closes #497
Description
This PR extract the timed sheets logic to a manager class, removes the trigger on balance change (like iOS) and build a robust Unit test flow
Preview
basic_flow.mp4
iOS.mp4
critical_update.webm
QA Notes