* [#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
- 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
* [#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
* [#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
- 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
* [#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>
* Added Checkbox changed Primary button and TextField
* Did code refactoring
* Moved colors and dimens to ZcashTheme color and dimens files
* Changed color resource for Primary button
* Added buttonShadowColor to ExtendedColors
---------
Co-authored-by: Venkatareddy Seelam <45472390+venkatAmigo@users.noreply.github.com>
* [#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>
* [#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>
* [#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
* [#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
- Provides a way to define default and custom spacing values
- Could be distinguished by a screen size, but other metrics also available (e.g. orientation, aspect ratio, layout direction or screen shape)
* 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
* [#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
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.
* Adopt SDK 1.10.0 API changes
* Rename ShieldedSapling -> LegacySapling
* Viewing key re-derived for fix fixture value
* Changes used API for retrieving Transparent address
- Switched API DerivationTool.deriveTransparentAddress() -> Synchronizer.getLegacyTransparentAddress()
- Renamed Transparent -> LegacyTransparent
* Adds new common transaction model class
- Synchronizer.toTransactions() now works only with clearedTransactions and pendingTransactions
-Added CommonTransaction wrapper for all attributes of PendingTransaction and TransactionOverview to cover as much as possible. It's prepared for discussion about which attributes we really need and which we can omit.
* Regeneration of addresses in fixture
- Applies for both Transparent and Sapling addresses
- Fixed related test
- Added a new test for checking Transparent address abbreviation, as it also serves as a little check of the fixture address and can prevent an incorrect address change in the future
* Remove Viewing key usage from entire app
- As we agreed that the app should not access to it now
- Removed from all related places
* Change CommonTransaction to sealed class
* Comments update
* Switch SDK to 1.10.0-beta01-SNAPSHOT version
* Revert back legacy naming on Transparent and Sapling addresses
* Increased timeout limit to satisfy SDK initialization
* Remove unused import
* [#310] [Scaffold] Progress Status Circular Bar
- Added Z to Home ZECs balance
- Added USD balance text to Home
- Prepared Text extension functions for both
- Provided Zatoshi to USD conversion methods + filed related SDK conversion issue
* Update Home screen UI with progress bars
- Implemented scaffolding UI of progress bars
- Added related texts to strings
* Update Home screen UI with progress bars
- Connected some of the implemented UI elements to SDK values
- Added app update information to Home screen
- Update WalletSnapshot with progress field
* Update Home screen UI with progress bars
- Capturing and handling errors from SDK Synchronizer.
- Added related error strings.
- Simplified Home screen UI.
* Zboto font added. Load it in runtime. Import to Typography.
* Updated ZEC sign icon.
* Draw ZEC balance with Zboto font
* Simplify Home screen balances assigning
* Switch to PercentDecimal progress representatiton
* Support different locales while working with fiat currency
* Fix bug in checking of fiat currency value
* Generalize strings to provide possibility of other fiat currencies
* Add fiat currency conversion states mechanism
* Add TODO comment with reference to follow up SynchronizerError issue
* Add WalletDisplayValues to simplify HomeView composable
* Add CurrencyConversion class for connection to Price API (and convert Zatoshi to fiat currency)
* Add basic HomeView tests
* Add basic HomeViewIntegration test
* Review changes
- Used Duration API for times
- Allow injecting clock into currency conversion
- Moved FiatCurrencyConversionRateState to sdk-ext-ui because I suspect that we’ll consider this to be a UI object. I based this on the fact that current/stale cutoff values are arbitrary and probably should be the domain of the UI rather than the SDK.
- Added some tests, although additional coverage is needed
- Added fixtures for model objects
* Minor code refactoring
- Move UpdateInfoFixture class to fixture dir
- Remove unnecessary annotation
- Add common application context method to test suite
- Fix Test class import
- Move several WalletSnapshotFixture parameters to const fields
* Add WalletDisplayValuesTest to cover the model class.
* Fix import after changes merged
* Use the new MonetarySeparatorsFixture in related tests
* Add a few basic Zatoshi -> USD conversion tests
* Turn on core lib desugaring for sdk-ext-ui-lib module
* Make WalletDisplayValues a data class
I think there may be some instances where this can help with recomposition
* Add preference key for fiat currency
This allows us to configure reading the value with observers correctly, even if we don’t allow the user to change it right now.
* Delegate symbol and formatting to JVM
* Add tests for Locale
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
* [#209] Update Compose dependency to latest version 1.2.0-beta03
- Update dependency
- Align our integration tests with the new Compose requirements
- Add integration folder to tests, if missing
- Split integration tests, which require activity to separate classes
- Remove unnecessary custom activity for each integration app part and create one custom common activity
- Implement Downloadable fonts from Compose 1.2
- Update Third party licenses documentation
- Added automatic exception logging, registered in the Application object
- The design sends the exception to a second process, as the main process could be in a bad state when crashing. If we ever encounter problems with this design, it is easily toggleable to turn off with a boolean resource
- Reading the process name is a bit complex on older Android versions, so we leverage a ContentProvider (which runs prior to Application.onCreate()) to get the process name
- Added a simple logging mechanism for multiprocess and multithread log messages
- Refactored spackle-lib into spackle-lib (multiplatform) and spackle-android-lib
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
- Basic screen UI scaffolding.
- Set up communication with Google Play in-app update API.
- Mocking communication with Google Play API.
- Added unit, UI and integration tests for the in-app update screen model, util, view and viewmodel classes.
- Added mock implementation of helper AppUpdateChecker class.
- Introduced ViewModel integration test.
- Filed issue for future manual testing of implemented in-app update mechanisms after the wallet app is released on Google Play.
- Implement FakeAppUpdateManager in AppUpdateCheckerMock instead of the ugly AppUpdateInfo instantiation - this affected the tests too.
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
This moves the theme and common UI elements to a separate Gradle module.
This is a first step towards creating our own custom design system, as it would eventually allow hiding of Material Design from the rest of the app UI.
As part of this change, a new common utility module was created so that both the ui and ui-design modules can depend on it.