* [#372] Improve scrolling on Onboarding
- Closes#372
- All screens were checked
- The Onboarding screen behavior on very small screens improved
- Tested with Split screen OS feature to emulate a very small screen
* Fixed status and navigation bars height
* [#1359]: Use default Locale in PercentDecimal
* Intended use of Local.US
* Use default Locale in Transaction history dates
* Use default Locale in Balance widget
* Use default Locale in Send tests
* Use default Locale in WalletDisplayValues.kt
- Addresses issue J from the security audit: Payment URI parser uses a test fixture address
- This also removes unused Request screen with its logic and tests
- Closes#1352
* [#1319] Restoring state UI in Account and Balances
- Closes#1319
* [#1319] Restoring state widget in Account
- Closes#1319
* Add syncing widget to Account while restoring
* Update changelog
Plus reset the previously unreleased app record
- This adds `ShieldState.Shielded` that helps us keep the correct UI state of the Transparent funds widget after the user starts shielding action
- This also brings little UI improvement in PrimaryButton sizing
- Closes#1164
- This incorporates the new wallet restoring label into the custom TopAppBar UI component, so it’s accessible from all screens
- This also fixes the adjust brightness feature that previously stayed turned on when the user left to a surrounding tab screen (Send or Balances)
- Changelog update
Move DisableScreenTimeout into the parent HomeView
Persist restoring state
Fix infinite loading trx history UI state
Add New wallet syncing state
This also adds the wallet restoring state into the transaction history state calculation
- Closes#1162
- Closes#1237
- Closes#1078
- This removes unused DangerousButton component and its related resources
- It fixes the Collapse button vector icon
- It brings send_failed and receive_failed states into the trx item UI
- It adds the fee part of the expandable item
- Its follow-up is #1047
- Changelog updated
* [#1312] Display SDK error cause in dialog
- Closes#1312
- Changelog reverter as the previous release hasn’t been deployed yet due to a new bug
* Too long dialog text scrollable
Although this brings many changes to the transaction history item UI, it only partly solves Expandable transaction history item #1162
Follow-up PR will close it
- Closes#1159
- Closes#1269
- Closes#1073
- Its direct follow-ups are #1294 and #1161
- Other follow up is #1260
- These changes also enable having two Primary buttons side-by-side
- This adds sorting history of transactions by a new calculated height after send done
- This also changes how we treat empty transaction dates from `-` to `` in UI
- Changelog update
* Adopt Zcash SDK v2.0.8-SNAPSHOT
* [#1285] Adopt proposal API
- Closes#1285
- Manually tested and the updated send and shield features work as expected
- Zcash Android SDK v2.0.7 partially adopted. Proper implementaiton will be part of the Send screens rework.
- Partially addresses #1162. More related UI changes on the transaciton history item come in a follow-up PR
- `HistoryItem` composable will be reworked to several more composables as well
- Also note that the history item amount still lacks proper formatting as filed in #1047
- Closes#1236
- Closes#1288
- Closes#1253
- Closes#1242
- This creates a reusable alert dialog UI and uses it in the server switching, shielding transparent funds, and contacting support use cases.
- This also updates the Transparent funds shielding help text according to the latest design guideline
- Closes#1235
- Note that failures and server saving success are reported to the UI with the Android system Snackbar or via the existing Textfield’s error bottom text until we define popup design as filed in #1242
- Changelog update
* [#1151] Background syncing
- A periodic background block synchronization has been added. When the device is connected to the internet using an unmetered connection and is plugged into the power, the background task will start to synchronize blocks randomly between 3 and 4 a.m.
- The background worker was in place but not fully working, plus was set to trigger randomly in 24 hours
- Changelog update
- Closes#1151
- Closes#634
- Its follow-up #1249
- Its follow-up #1258
* [#1219] Current balances UI
- This represents UI changes for balance, change, and transaction on the Balances screen
- Reworked StyledBalance to be more reusable, too
- Adopted the latest SDK changes related to change pending and pending transactions
- Closes#1224
- Closes#1219
* Adopted latest SDK snapshot version
* [#1201] Enhance SendStage.SendFailure with error
- Closes#1201
- The changes also contain custom saver for SendStage
- The error is printed on the SendFailure screen as a simple text for now
- Changelog updated
- Closes#1195
- The fixture recipient address type changed from the unified to the sapling on several tests to avoid temporary address TODO text obtained from the SDK fixture
- WalletDisplayValues have the updateAvailable optional with false as a default value
- Changelog updated
* [#1156] Common current balance state UI component
- Closes#1156
- Created a reusable current balances widget UI component for the Account and Balances screen
- Incorporated into the Account screen
- Improved ZcashCurrency API with localized currency identificators
* Changelog update
* File follow-up on testing
* [#1143] Transaction ID row in Transaction item
- Added a new transaction ID row into the transaction item on the Transactions screen
- It displays a TODO value instead of the TXID until the #1316 in SDK done
- Closes#1143
Changelog update
- Improves the screen UI so we’re able to call click, and query transaction memos
- These APIs will be useful once we approach screen refactoring according to the Figma design
- Adds UI test for the new feature
- Closes#1147
Changelog update
* [#1138] Malformed pattern: Grouping separator
- This handles possible malformed format pattern exceptions in Zashi, but the proper solution needs to be provided within the SDK. See #1315.
- Closes#1138
* Changelog update
* [#1129] Fix failing Test Robo Debug
Closes#1129
* Changelog update
* Specify main-debug folder
* [#1129] Separate version flags
- Separate debuggable and run under a test service flags
- As we now have more flexibility in requesting the flags in runtime
* [#1096] Change brightness adjusting feature
- Closes#1096
- As reported by testers, the automatic brightness adjustment could be too invasive
- Switched to the on-demand feature after a new button click
- Tests aligned
* Align Screenshot tests
* Changelog update
* [#1094] Add message under Doc and PP buttons
- Closes#1094
- Shows Toast UI message with Not implemented yet test after the buttons hit
* Changelog update
- Closes#1082
- Closes#1086
- Added TODO links to the missing Settings actions
- Fixed About screen versionCode displaying
- Added app name to the About screen debug menu, as the Home screen does not contain it anymore
- Changelog updated
- Removes unused Oboarding alternative LongOnboarding screen with all related resources
- Removes related integration tests and screen decision logic
- Removes related is_short_onboaridng remote configuration logic
- Closes#1003
[#942] New Wallet Recovery Phrase Screen
[#1006] Enhance VersionInfo with other fields
[#947] About screen UI + logic + tests
[#1040] Extract logo and title on top of screens
- Place it into a separate UI component
- Used across several screens
- Closes#1040
Remove long version of the Backup screen
- We previously had a configuration field that controlled which version of the screen should be displayed to a user
- Removed
- Partly solves #1003
Backup screen view redesign
Tests + docummentation
Update links to the Zashi Github repository
As the GitHub repository was recently moved from Zcash under the ECC company
[#1014] Unify screen name with Figma design
[#1045] Adopt Zcash SDK v2.0.3
Closes#1045
Fix screenshot test
The new wallet recovery screen is now much taller; scrolling to the acting button is needed.
Fix Restore screen test
Lint tools warnings
* [#1031] Export of private app data UI+logic
- Closes#1031
* [#1031] Export of private app data tests
* Move provider to app/manifest
To avoid: The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER
* [#1037] Debuggable release build
- So we’re able to log or debug release app build while testing
- Default value false
- Closes#1037
* Fix file provider path in release build
- After we added the customization of SecureScreen sensitive data mechanism in building and testing the app via Gradle property in #1009, we also need to ensure that the SecureScreen is always on in our automated Android UI tests.
- Closes#1016
- The debug with Alice’s and Ben’s fixture wallets from the Zcash SDK is visible only in debug mode. UI tests and production are not impacted.
- It provides a quick way to import an existing wallet for developers while building or testing the app
- Closes#1020
- The debug menu with fixture wallet was partially hidden by PR #1004
* [#947] About screen UI (partially implemented)
* [#947] About screen UI
* [#947] Fixed failing test case
* [#947] Added Zashi text logo
---------
Co-authored-by: Honza Rychnovský <rychnovsky.honza@gmail.com>
* [#947] UI: About Screen
* [#1005] Remove DebugMenu from Home screen
- The new design does not require it on the Home screen
- Partially moved to the Settings and About screens
* [#392] Update About screen texts
Closes#392 as not needed now
* [#1006] Enhance VersionInfo with other fields
* [#947] About screen UI + logic + tests
* Adopt VersionInfo on different screens
* VersionInfo test
Update .gitignore
---------
Co-authored-by: Venkat-corebts <143575548+Venkat-corebts@users.noreply.github.com>
* [#941] Loading screen UI
Co-authored-by: Honza Rychnovský <rychnovsky.honza@gmail.com>
* Fix unallowed doubled scroll
* Remove duplicate icon
* [#997] Splash alignment with welcome animation
* [#999] Compile SDK version 34
* [#1000] Colour system bars
* [#941] Load + Opening screens
- Contains UI of both these screens
- Their logic
- And the Load screen animation
- Designed util ScreenHeight composable
- Redesigned SecondaryButton to match the design and fixed its positioning on different screens
---------
Co-authored-by: Venkat-corebts <143575548+Venkat-corebts@users.noreply.github.com>
* [#946] Warning screen UI
[#946] Code review changes
moved security warning to separate folder
changed main heading text style
changed static version text to dynamic
Co-authored-by: Honza Rychnovský <rychnovsky.honza@gmail.com>
* [#993] New Primary Button Click Animation
* [#946] Warning Screen [UI][Logic][Tests]
- Security Warning screen incorporated into the app onboarding logic
- NeedsWarning wallet state persisted and is required if the user re-runs next time, and the Security Warning screen still needs to be presented
- Privacy Policy opened by part of the screen text clicking in an external web browser app
- Unit tests
- UI tests
- Screenshot tests
---------
Co-authored-by: Venkat-corebts <143575548+Venkat-corebts@users.noreply.github.com>
- PrimaryButton centered horizontally on all screen
- Compose Preview switched to light theme on all screens as Zashi supports light theme only
- Closes#975
* [#948] Updated Settings screen UI
* [#948] Crash fix on settings screen
* Center button UI components text
So the text aligns with the center when the button is displayed on a very small device or, e.g., when the system accessibility text size increase feature is used.
* Keep button spacing
When rotated to landscape, the weighted spacing disappears. But we ideally want buttons to have all the same spacing around them in this scenario.
* Kotlin code style
* Move previous settings option to overflow
- As the new design prescribes no debug/test options in the settings screen, we moved these useful actions into the only troubleshooting menu in the app bar.
- Tests added
* Add UI tests
* Text in all caps in the components
Rather than enforcing all caps in translations.
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
* [#944] Adopt SDK version with SbS included
- This supposes to fail in the build until the proper SDK version is consumed
- Tested via included builds
* Switch to latest v2.0.0-rc.2
* Adopt latest SDK snapshot version
* [#972] Adopt PersistableWallet API changes in SDK
Closes #972.
* Adopt SDK supporting PersistableWallet.endpoint
* [#944] Adopt SDK version with SbS included
- This supposes to fail in the build until the proper SDK version is consumed
- Tested via included builds
* Adopt latest SDK changes
* Adopt changed TransactionOverview API
* Switch to latest v2.0.0-rc.2
* Fix transaction history test fixture
* Adopt latest SDK snapshot version
* Switch to latest production Zcash SDK version
* [#951] Add Archivo font
- Font added
- License documentation file updated
- This slightly changes the provided font accessibility. Both Inter and Archivo are now available with the `ZcashTheme.typography` API.
- Closes#951
* Update license documents
* [#664] Transaction history
* Move under the screens folder
* Fix Request screen Preview
* Add TODO link
* Improve Text design component
* HistoryView UI enhancing
* Adopt ZcashCurrency API
* Add transaction history sync state
* Compact time format
* Bump Compose Material Icons to v1.5.0-beta02
* Add support for pending and expired transactions
* Add progress in syncing with no transaction yet
* Screenshot test
* Simplified no transaction check
* Transaction history manual test case
* Home screen history button test
* Fix flow collecting
* View tests
* Sent transaction sign
* Remove unused transaction snapshot from VM
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
* [#751] AGP 7.4.2
* [#874][#758][#751] Gradle 8.1.1 + AGP 8.0.2
- Dependency locks update
- And the related changes the versions bump brings done as well
- Dep issue template changed as appropriate now
* [#875] Emulator.wtf 0.12.2
* Minor fixing changes after Gradle bump
* Fix deprecated Runtime.exec()
* Fix running screenshot tests
We use the same pattern now as in the other pure test modules.
* Fix jvm versions compatibility
'compileJava' task (current target is 1.8) and 'compileKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
* [#808] Use Dimens across the app
- Shorter Onboarding screen design enhanced
* Shorter New Wallet Backup screen UI enhanced
* Home screen UI enhance
* Seed screen UI enhance
* Link SendArgumentsWrapper issue
* Move custom buttons paddings to PaddingValues
- Optional Modifier parameter should have a default value of Modifier
- Thanks to this we introduced the outerPaddingValues parameter to all our buttons with default paddings
- Also notice the difference between e.g. ShortOnboardingView and ShortNewWalletBackupView. In the backup, we have the bottom button to be part of Scaffold’s bottomBar, which is maybe a better pattern than stretching the buttons with spacers in case of part of the screen content view, but it has also its tradeoffs.
* Settings screen enhance
* Support screen UI enhance
* About screen UI enhance
* Scan screen UI enhance
- Move modifiers to the caller’s side
- Match texts to predefined styles
- Add color to Small text component + reorder parameters
* Send screen UI enahnce
- Lifted out some modifiers arguments to the caller’s side
- Fixed button’s horizontal paddings
* Scan move BackHandler to Android class
* Update screen UI enhance
* Receive screen UI enhance
* Address screen UI enhance
* Ignore AndroidUpdate back action test
- Will be refactored soon
* Remove TODO as already implemented
* Restore screens UI enhance
* Create UpdateViewAndroidTest
* [#807][Design system] Remove deprecated Paddings
* [#705] Instrumentation coverage generation fails locally
* [#808] Use Dimens across the app
- Shorter Onboarding screen design enhanced
* Shorter New Wallet Backup screen UI enhanced
* Home screen UI enhance
* Seed screen UI enhance
* Link SendArgumentsWrapper issue
* Move custom buttons paddings to PaddingValues
- Optional Modifier parameter should have a default value of Modifier
- Thanks to this we introduced the outerPaddingValues parameter to all our buttons with default paddings
- Also notice the difference between e.g. ShortOnboardingView and ShortNewWalletBackupView. In the backup, we have the bottom button to be part of Scaffold’s bottomBar, which is maybe a better pattern than stretching the buttons with spacers in case of part of the screen content view, but it has also its tradeoffs.
* Settings screen enhance
* Support screen UI enhance
* About screen UI enhance
* Scan screen UI enhance
- Move modifiers to the caller’s side
- Match texts to predefined styles
- Add color to Small text component + reorder parameters
* Send screen UI enahnce
- Lifted out some modifiers arguments to the caller’s side
- Fixed button’s horizontal paddings
* Scan move BackHandler to Android class
* Update screen UI enhance
* Receive screen UI enhance
* Address screen UI enhance
* Ignore AndroidUpdate back action test
- Will be refactored soon
* Remove TODO as already implemented
* Restore screens UI enhance
* Create UpdateViewAndroidTest
* [#807][Design system] Remove deprecated Paddings
* Address review comments
* [#791] Add Scan Button To Send Screen
- Switched Send.Form screen input fields ordering to match the MFP design
- Added Scan button to Send.Form
- Changed navigation to pass the scanned result to the Send.Form screen
- Added leading and trailing icons to FormTextField component
- Created SendArgumentsWrapper to pass any future Zcash URL parsed parameters
* Report invalid address scanned
- Merged composes to provide snackbar after invalid address scanned
* Add SendView tests
- Added one for scanner click and one for initial send arguments inserted
- This led to input and check amount and memo as part of the SendArgumentsWrapper too to have it prepare for future Zcash URI parsing
* Static analysis warnings fixes
* Don't make camera feature required
- And hide the scanner button on Send.Form when any camera is not supported by the device
* Let SendArgumentsWrapperFixture use SDK fixtures
* Tweak hint text
We need better text, but this is at least more correct than the previous iteration.
* Replace assertTextContains with assertTextEquals
- To compare inputs texts to an exact match to avoid potentially missing bugs if there is extra text in the field that we're not expecting
* Fix ktlint warning
---------
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
* [#804][Design system] Paddings - Dimens
- Initial commit to ensure it meets our requirements
- This solution is now in parallel with a simpler existing Paddings solution
- Four spacing groups defined
- Provides a way to define default and custom spacing values
- Distinguished by screen size, but other metrics also available (e.g. orientation, aspect ratio, layout direction or screen shape)
* Fix spacing value
* Move spacings change logic to comment
- We've decided to have only one regular spacing group for now, which is suitable for most of current phone devices
* Move Dimens out of internal package
* Link TODO for later Paddings remove
* Link issue of Use Dimens across the app to TODO
* [#792] Add sending screens
- This extends the Send screen logic with several subscreens
- A transaction submission connected to the Synchronizer
- Some logic moved to Android specific class
- System back navigation handler implemented
- Styling with dimes introduced to all Send screens
- New UI, Android specific, integration and screenshot tests added
- Additionally we could consider implementing a proper SendState mechanism, as we do in e.g. BackupState
* File issue of problematic pseudolocales texts inserted in Send.Form screen
* Add scrolling to send view
* Switch SendViewIntegrationTest away from TestSetup
* Provide MockSynchronizer to integration test
---------
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
* [#785] Remove press-and-hold for send confirmation
- Timed button replaced by standard behaviour button
- Related SendView test updated
* Remove unused API
If we need this back, we can restore it from the Git history.
* Remove unused imports
---------
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
* [#804][Design system] Paddings - Dimens
- Initial commit to ensure it meets our requirements
- This solution is now in parallel with a simpler existing Paddings solution
- Four spacing groups defined
- Provides a way to define default and custom spacing values
- Distinguished by screen size, but other metrics also available (e.g. orientation, aspect ratio, layout direction or screen shape)
* Fix spacing value
* Move spacings change logic to comment
- We've decided to have only one regular spacing group for now, which is suitable for most of current phone devices
* Move Dimens out of internal package
* Link TODO for later Paddings remove
* Link issue of Use Dimens across the app to TODO
* Add vertical scrolling feature to SendForm screen
* Add vertical scrolling feature to Settings screen
+ Switched from Paddings to Dimens spacing system
* Add paddings, vertical scrolling, move modifiers
- As part of this is also move modifiers to the caller side where it makes sense
* Improve Send screen layout
- Added header view to the screen
- Added spacers between some UI parts of the screen
- Fixed background colors
- And improved textfields sizes
* Link Fix ZEC balance number formatting issue
* Link Disable Memo UI field in case of Transparent address issue
* Replace all .dp with predefined Dimens spacing in SendView
* Create custom FormTextField UI component
* Re-write paddings to spacers in list
* [#790] Fix Settings screen layout
- SwitchWithLabel moved to ui-design-lib
- Internally switched from Row to ConstraintLayout
- Used paddings, which after creating and applying of Design system #611 will be refactored
- Moved Modifier definitions to the caller side, when possible
Also leveraged new WorkManager API to avoid resetting the background sync schedule
Note that Material3 alpha 7 breaks our UI tests, so I’ve only bumped to alpha 6 for now.
Because we’re making UI text changes, I’ve forked our views into “long” and “short” versions that preserve the previous experience while allowing the shorter experience to be different.
One limitation of the current approach is that the screenshot tests are limited to the current configuration, so there is some risk of ‘bit rot’ with the screenshot tests for the longer onboarding. For this PR, I manually switched the feature flags and re-ran the screenshot tests to make sure they still worked.
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
Twitter had a set of Compose rules, which have been forked into Detekt, Ktlint, and Android Lint implementations.
I see ktlint as mostly being formatting, Detekt being more for multiplatform static analysis, and Android Lint for Android-specific issues. Android lint is slow, so I didn’t want to use it as the first choice.
I went with the Detekt implementation which can be useful if we leverage multiplatform for our Composables in the future.
Adds an option to enable/disable background sync, as well as an option to keep the screen on during sync
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>