Commit Graph

49 Commits

Author SHA1 Message Date
Carter Jernigan a65aec18a4
[#418] Android Gradle Plugin 7.2.0 2022-05-11 16:24:52 -04:00
Honza Rychnovsky d83b89d46e [#409] Keep showing keyboard over Home screen
- Implement hiding software keyboard manually, as it stays shown after all words are filled successfully.
2022-05-09 10:26:13 +02:00
Honza Rychnovsky f41ecab98a
[#179] Improve Ability to Run Application under Robo Test 2022-05-08 14:47:25 +02:00
Carter Jernigan b0ae6b5e72
[#290] Screen on for UI tests (#400)
This improves the reliability of UI tests, especially on physical devices, by helping ensure the screen is on.

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2022-05-02 15:49:49 -04:00
Carter Jernigan 08fad9e763 [#296] About screen scaffold
This provides a basic scaffold for the About screen.  There are several followup issues:

 - #392 update the in-app legal text
 - #398 Add open source attributions
2022-04-29 15:26:28 -04:00
Carter Jernigan 48bd2e8ced
[#213] Contact support scaffold
This provides a basic screen for users to type a support inquiery, which then opens a pre-filled message in the user’s email app.

There are a few followup issues:
 - Detect seed phrases in the email #377
 - Report crashes in the generated email #378
 - Fuzz timestamps #388
 - Set the correct support email address #379
 - Improve handling on devices without an email app #386
2022-04-19 21:28:49 -04:00
Honza Rychnovsky 15f119371a
[#356] Crash verify backup while save state
- Check solution with Parcelable to the Index model class.
- Align implementation with lint checks.
- Implement custom Saver object.
- Add test cases for the new custom Saver.
- Add fixture for the new test cases.
- Remove testChoices form BackupVM and add rememberSaveable to BackupView.
- Enhance TestChoices.Saver save/store mechanisms.
- Add integration test class with 3 tests.
- Add new callback choices and onChoicesChanged to BackupWallet composable and BackupTestSetup class to be able to test save/restore mechanism of Backup-Test stage.
- Refactor WrapBackup.
- This is a new pattern that helps us share more logic between the using the test activity and the main activity, which makes the state retention tests more valid
- Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-04-19 14:04:56 +02:00
Honza Rychnovsky 550df810c9
[#71] Add re-creation test for onboarding
- Created dedicated test activity for integration tests.
- Created Onboarding integration test class with two state restoration tests.
- Moved OnboardingTestSetup to its own class.
- Filed related issues.
2022-04-14 18:34:12 +02:00
Honza Rychnovsky fff0dc4110
[#282] Tests fail on low resolution devices.
- Scrolling enabled for screens from Backup and Profile parts of the app.
- UI tests improved to always scroll to the desired views before working with them.
2022-04-12 15:31:27 +02:00
Honza Rychnovsky f091da51ee
[#322] Restore Wallet "greedy" autocompletion
- Changed order of conditions of automatic autocompletion.
- Added a test for validation of autocompletion functionality
- Changed type of test tag on ChipLayout component, as it seems its not necessary to have this one for proper component functionality. The one from the test package is needed here for the newly added test. And other screen components also use only those from the test package.
2022-04-11 15:19:04 +02:00
Honza Rychnovsky 4e5e5c4ab7
[#223] fromZecString reject bad input.
- Implementing regex solution for validation of input ZecAmount after confirm button is pressed.
- Added also unit tests for this new feature.
- Move necessary components from sdk-ext-lib to sdk-ext-ui module.
- Align implementation with comments form PR.
- Fix name of run configuration.
- Ensure consistent behavior of tests.
2022-04-08 14:33:08 +02:00
Honza Rychnovsky 9485a7d4c3
[#244] Back button is invisible on Profile screen.
- Remove tint attribute from Icon definition of TopAppBar of the Profile screen.
- Minor code style refactoring.
2022-04-06 20:49:24 +02:00
Carter Jernigan f22586eacf [#330] Compose Material3 1.0.0-alpha08
Removed the proxy to the Material2 TextField in favor of the Material3 TextField
2022-04-06 07:56:17 -04:00
Carter Jernigan c0a5d2607c [#329] AndroidX Updates
Updated to use the latest splash screen API
2022-04-06 07:56:17 -04:00
Honza Rychnovsky aac784cc5b
[#245] Onboarding test doesn't show selections. (#354)
- Changed color of the ChipDropDown text.
- Changed tint color of the ChipDropDown text disclosure trinagle.
2022-04-06 07:21:03 +02:00
Honza Rychnovsky db13435d52
[#218] Prevent illegal number on ZEC amount
- Prevent illegal input in ZEC Send/Request form.
- New SDL-EXT-UI module for UI related SDK helper components.
- Regex for continuous validation of the entered ZEC amount.
- Added a new unit tests for validation of the regex too.
- Using the regex on ZEC Request and ZEC Send screens.
- Updated existing and created a new UI tests for validating entered ZEC amount values on Request and Send screens.
- Improve code to be validated with DetektAll static analyzation.
- Architecture documentation update with the newly added sdk-ext-ui module.
- Added run configuration sdk-ext-lib:connectedCheck for AS.
- Added check for digits count between grouping separators + tests.
- Refactoring test class name and its separator value.
2022-04-01 16:28:16 +02:00
Honza Rychnovsky 39949d8632
[#283] Kotlin API for Zcash URI parser
- Includes Zip321UriBuildFixture for the toUri() method from the Rust layer.
- Includes Zip321UriParseFixture for the fromUri() method from the Rust layer.
- Added ZecRequestTest class for testing ZecRequest methods.
- Align Zip321UriBuildFixture and Zip321UriParseFixture parameters.
- Added comments to the new() methods of Zip321BuildFixture and Zip321ParseFixture.
2022-03-30 14:16:57 +02:00
Carter Jernigan 5b8aaaaed9 [#278] Store wallet birthday as null 2022-03-20 17:00:35 -04:00
Carter Jernigan 45e14e6a4b [#173] Adopt SDK API changes
This allows the app to consume the snapshot version of the SDK, which contains a number of API changes.

A followup issue of #279 was filed so that the app can be reverted to the release version of the SDK once the SDK API stabilizes again.
2022-03-16 13:00:13 -04:00
Carter Jernigan 2e42e132a2
[#231] Repackage classes to `co.electriccoin.zcash`
The sdk-ext module is not repackaged, because the SDK itself uses the cash.z.ecc.sdk package name
2022-03-08 14:05:03 -05:00
tokidoki 7aa4bdbc9a
[#247] Hide inert address-book button 2022-03-08 13:46:43 -05:00
Carter Jernigan 3d4f9fb4b4
[#142] Send ZEC scaffold (#253)
Implements a basic scaffold for sending ZEC.

Some new model objects and an extension method were added that I hope to move to the SDK.

Followup issues include
 - Press-and-hold for the Send button #249
 - Prevent illegal input in input form #218
 - Prevent undefined behavior if locale changes #217
 - Add error handling to the Zec send screen #250
 - Add confirmation after send is created #252
2022-03-01 08:11:23 -05:00
Carter Jernigan f01c855ead [#225] Refactor design to separate module
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.
2022-02-23 15:49:03 -05:00
Carter Jernigan 6be2590ad8 [#116] Migrate to Material 3 2022-02-21 09:48:14 -05:00
Carter Jernigan 469c2ccd37 [#216] ktlint 0.44.0 2022-02-21 09:26:57 -05:00
Carter Jernigan a1199e706e
[#135] Request ZEC scaffold 2022-02-17 08:08:06 -05:00
Carter Jernigan 52588e6bd3
[#191] Background sync
Preliminary and limited version of background sync, with the following limitations
 - Sync is always enabled
 - Default sync period is 24 hours and is not updated once the wallet is created

This change refactors the synchronizer to a global singleton that both WorkManager and the UI can interact with.
2022-02-04 07:37:08 -05:00
Carter Jernigan 2aba8fe33b
[#70] Generate screenshots automatically
Test Orchestrator must be enabled, so that screenshot generation can walk through the app like a newly registered user.  The screenshots are stored outside of the app's storage directory, so that Test Orchestrator does not delete them.  Because hard-coded paths are used, it is possible this could be brittle with future versions of Android

A future enhancement would be to also copy these screenshots off of tests run on Firebase Test Lab.  This would likely involve configuring Fladle/Flank with additional directories to pull.
2022-01-31 16:42:22 -05:00
Carter Jernigan 012839841d
[#143] Add settings scaffold (#181)
Settings which are not yet implemented have not been included to not introduce non-functional buttons into the UI.

Followup issue #38 covers one of the key settings, which is how we'll implement authorization in the app
2022-01-26 16:33:02 -05:00
Carter Jernigan d46cf8187c
[#145] Profile scaffold 2022-01-13 12:49:08 -05:00
Carter Jernigan 35055c3cfe
[#171] Add onboarding image assets (#172)
This also fixes a bug with state for navigation buttons not updating correctly.  Previously it was working by accident.
2022-01-06 10:48:11 -05:00
Carter Jernigan ee96e915ae
[#62] Wallet details scaffold
Implements a details screen showing various wallet addresses

Some known issues requiring followup in future pull requests:
 - #159 Colors for light theme have not been defined yet
 - #160 Color blocks have 2x borders along the top/bottom of the middle item
 - #161 Some address types display placeholder values
2021-12-31 08:28:16 -05:00
Carter Jernigan 205344c201
[#12] Home screen scaffold (#158)
This provides a very basic scaffold of the home screen and navigation to other child screens.  Additional work needs to be done in both the SDK and this app to build all of the functionality.  Specific known gaps
 - Displaying synchronization status to the user, pending full designs on the progress and animation behaviors
 - Improved APIs for listing and filtering transactions.  This is the issue in the SDK https://github.com/zcash/zcash-android-wallet-sdk/issues/242
 - Implement the UI for displaying transaction history
 - Display fiat currency values
 - Hook up buttons to navigate to other screens (scan #137, profile #145, send #134, request #135)
2021-12-29 14:38:14 -05:00
Carter Jernigan b03d1500ee Address review comments 2021-12-20 08:18:06 -05:00
Carter Jernigan 2e40af9390 [#17] Import wallet 2021-12-17 10:35:22 -05:00
Carter Jernigan 84795ad213
[#65] Add background gradient 2021-12-09 15:18:18 -05:00
Carter Jernigan ca457b1116
[#118] Fix backup verification UI 2021-12-09 15:03:01 -05:00
Carter Jernigan 694d5d73c9 [#101] Improve app startup pre API 26 2021-12-06 15:31:39 -05:00
Carter Jernigan 4a07b2e0b9 [#14] Splash screen 2021-12-04 09:01:21 -05:00
Carter Jernigan 72c6628649
[#49] Implement copy to clipboard 2021-12-02 15:33:55 -05:00
Carter Jernigan d10ff6eb46
[#20] Add launcher icon 2021-12-02 15:16:20 -05:00
Carter Jernigan 541ed915c1 [#90] Fix backup res directory name 2021-11-30 14:16:22 -05:00
Carter Jernigan 9db77e2afe
[#16] Skeleton for wallet creation
In addition to the UI, this implements improved state management for the WalletViewModel which emits a sealed class now.

Work remaining for followup PRs:
- Use drag-and-drop for chips instead of dropdown menus #85
- Add red background color for test fail screen #86 
- Add images for various screens (depends on #66 #64)
- Implement copy to clipboard #49
2021-11-17 15:19:49 -05:00
Carter Jernigan ec983f1f8f [#28] Initial SDK integration
This sets up the infrastructure needed to continue implementing the onboarding UI for create and import of wallets.  By fleshing out the global state management in the app now, we can better manage asynchronous IO to avoid blocking the UI.

This adds:

 - Load and persistence a wallet in encrypted preferences
     - The stored data is written as a single JSON object, as opposed to multiple entries, to ensure atomic writes
     - The data is versioned, so that we can change the JSON format readily in the future
 - Detection of application state, e.g. onboarding versus loading the user's wallet
 - Touch points to initialize the SDK
2021-11-12 07:09:43 -05:00
Carter Jernigan 06b934bde6 [#72] Add Chip Composable 2021-11-08 13:47:00 -05:00
Carter Jernigan 575b3063bf
[#50] Preliminary design guide
Known issues
 - We cannot use downloadable fonts with Compose, so the fonts must be embedded with the app

Questions
 - How does the transparent button show a disabled state?
 - Are the navigation buttons and secondary buttons supposed to be effectively the same style but one is smaller?

TODO
 - Add gradients.  Gradients are not implemented for background, progress bar, etc.  Currently they simply use the start color for the gradient
 - Icons are using Material Icons, pending decision on how to leverage the vectors in the design
 - Add the border for hero images
 - Add shapes for the callout, which is currently square
 - Add padding
 - Add drop shadows
 - Double-check colors for correctness
2021-10-31 13:36:51 -04:00
Carter Jernigan 96b1e1913b [#21] Enable test orchestrator 2021-10-11 19:39:50 -04:00
Carter Jernigan 1f5d7eb966 [#15] Add onboarding skeleton
This implements the logical flow between the onboarding stages, as well as nearly full test coverage of the flow.

There's a lot of followup work, especially to implement design styles.  It currently contains various placeholder values, e.g. lorem ipsum text and color blocks instead of images.  See #17
2021-10-11 12:38:46 -04:00
Carter Jernigan 403f5d6467 [#15] Add ui-lib module 2021-10-09 10:36:58 -04:00