Commit Graph

153 Commits

Author SHA1 Message Date
Honza Rychnovský 4564c53218
[#1571] Release 1.1.7 (718)
- Closes #1571
2024-09-06 16:17:42 +02:00
Honza Rychnovský 13108ca9f5
[#1569] Release 1.1.7 (717)
* Make fiat widget paddings smaller

* Remove LocaleExt

* Adopt latest Zcash SDK changes

- These changes adopt the latest Zcash SDK snapshot changes that bring simplification in zec and fiat APIs localization
- Fixes bug of requesting fiat for non-english device locale
- Closes #1569
- Closes #1171 too

* Target Zcash SDK 2.2.3-SNAPSHOT

* Changelogs update

* Remove unnecessary import

* Code cleanup
2024-09-06 15:47:11 +02:00
Milan d29b0f7bb2
Dependency injection implementation (#1513)
* Dependency injection implementation

* Code cleanup

* Code cleanup

* Test hotfix

* Code cleanup

* Code cleanup

* Code cleanup

* Merge dependencies to bundle

* Changelog update

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-09-04 15:36:59 +02:00
Honza Rychnovský 52d355a271
[#1557] Release 1.1.6 (712)
* [#1557] Release 1.1.6 (712)

- Closes #1557
- Changelogs update

* WhatsNew update

* Updated WHATS_NEW_EN.md

final update to the release notes

* Documentation update

* Currency conversion floating point hotfix

* Fix empty SDK error stacktrace

* Remove included build locale path

* Revert "Currency conversion floating point hotfix"

This reverts commit 7b808c53c8.

* Revert MIN_SDK_VERSION back to 27

As the bug was fixed inside the Rust side of the Zcash SDK

* Bump Zcash SDK to latest v2.2.2

- Which brings SQLite DB access fixes

* Changelog update

* Fix cloud testing setup

- Reverting previously changed Testlab values and updating the Emulator values to more recent

* Updated WHATS_NEW_EN.md

---------

Co-authored-by: Andrea Kobrlova <109794238+true-jared@users.noreply.github.com>
Co-authored-by: Milan Cerovsky <milan@z.cash>
2024-09-04 13:29:41 +02:00
Milan a9e8c102c9
Exchange rate implementation (#1540)
* Adopt TEX addresses related changes

* Exchange Rates implementation

Closes #532
Closes #578

* Send Review Screen design change

Closes #532
Closes #578

* Code cleanup

Closes #532
Closes #578

* Exchange rate implementation

* Exchange rate implementation

* Exchange rate design implementation

* Exchange rate design implementation

* Exchange Rate redesign

* Code cleanup

* Design hotfix

* Design hotfix

* Disabling of usd text field

* Sort new dependencies

* Code cleanup

* Code cleanup

* Test hotfixes

* Link TODO issue

* Unify MockSynchronizer functions report

* New navigation target

* Code cleanup

* Send screen amount focus handling

* Code cleanup

* Fix test fixtures

* Design hotfix

* Code cleanup

* Test hotfixes

* Test hotfixes

* Activity Compose Composition Strategy handling

* Revert "Activity Compose Composition Strategy handling"

This reverts commit be8ed7a8ad.

* Test hotfixes

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-08-23 07:58:27 +02:00
Honza Rychnovský b2f750fb38
[ #1549] Release Zashi version 1.1.5 (706)
* [ #1549] Release Zashi version 1.1.5 (706)

* Improve whatsnew formatting

* Update CHANGELOG.md

Updated the changelog info for the stores

* Update WHATS_NEW_EN.md

updated What's New for release

* Revert "Update CHANGELOG.md"

This reverts commit a301441e01.

* WhatsNew update

---------

Co-authored-by: Andrea Kobrlova <109794238+true-jared@users.noreply.github.com>
2024-08-09 16:23:48 +02:00
Honza Rychnovský c9875c0732
[#1547] Adopt latest Zcash SDK v2.1.3
* [#1547] Adopt latest Zcash SDK v2.1.3

- Closes #1547
- Changelogs update

* Switch to production Zcash SDK 2.1.3
2024-08-09 08:47:37 +02:00
Honza Rychnovský 3dd5825157
[#1534] Release Zashi 1.1.4 (700)
* [#1534] Release Zashi 1.1.4 (700)

Closes #1534

* Updated WHATS_NEW_EN.md (#1537)

---------

Co-authored-by: Andrea Kobrlova <109794238+true-jared@users.noreply.github.com>
2024-07-23 14:58:09 +02:00
Milan 906873b6fb
Activity configuration handling (#1511)
* Activity configuration handling

* Code cleanup

* Changelog update

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-07-22 12:31:50 +02:00
Milan f862a4be97
[#477] Hiding sensitive clipboard information
* [#477] Hiding sensitive clipboard information

Closes #477

* [#477] Hiding sensitive clipboard information from api <33

Closes #477

* [#477] Code cleanup

Closes #477

* Changelog update

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-07-19 15:34:42 +02:00
Milan a503091ab2
QR scanner better cropping & support for inverted colors
* QR scanner fixes

* QR cropping

* Code cleanup

* Scanning frame offsets change

* Changelog update

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-07-19 14:28:59 +02:00
Milan 741601b65f
[#1467] Activity resizing according to soft keyboard (#1506)
* [#1467] Activity resizing according to soft keyboard

Closes #1467

* [#1467] Seed keyboard handling

* [#1467] Seed keyboard handling

Closes #1467

* [#1467] Documentation update

* TODO reference

* [#1467] Documentation update

Closes #1467

* [#1467] Detekt fix

Closes #1467

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-07-19 12:00:50 +02:00
Milan 0bc7757aa2
[#1492] Restore success dialog refactor (#1507)
* [#1492] Restore success dialog refactor

Closes #1492

* [#1492] Code cleanup

Closes #1492

* Create a separate Android layer

* Changelog update

* Move restore success string resources

* Rename logic related variables

+ File a follow-up issue

* Resources rename

* Move drawable to its package

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-07-19 10:17:45 +02:00
Milan 23e1bb7e75
[#1440][#1415] In-app update information - What's New screen
* [#1440] Inject in-app-update information

* [#1415] What's new screen

Closes #1415

* [#1415] Code cleanup

Closes #1415

* [#1415] Test hotfix

Closes #1415

* Clear What’s New docummentation

* Improve parser logic

So it’s able to parse the first changelog entry or the first unfinished one (i.e. [Unreleased] entries only)

* Order alphabetically

* [#1440] About redesign

* Changelog update

* Use of small button style on About

- Primary button’s parameters have been slightly changed, too

* Add IN_APP_UPDATE_PRIORITY to gradle.properties

* Rename functions

To align with the existing pattern

* Sort alphabetically

* Add ChangelogFixture

* Create ChangelogFixture

* Move navigation from Android layer to Navigation

* Fix changelog parsing

This way, it will also work with `-` in the middle of the sentence. With such a solution, we need to ensure the `\n-` characters sequence in every changelog entry. But it’s replaced by the bullet character at the end. It will work for Google Play within in-app updates, as well.

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-07-18 10:48:02 +02:00
Milan 490bc40caf
Android Gradle Plugin and Gradle Locks update (#1491)
* Android Gradle Plugin and Gradle Locks update

* Documentation updated

* Documentation update

---------

Co-authored-by: Milan Cerovsky <milan.cerovsky@leeaf.life>
2024-06-28 08:56:36 +02:00
Honza Rychnovský e2eb043afb
[#1294] Send Multi-Trx-Submission failure screen
- Closes #1294
- Changelog update
2024-03-25 20:50:31 +01:00
Honza Rychnovský b88a64de9d
[#1069] Improve sideloading documentation
* [#1069] Improve sideloading doc

- Closes #1069
- The cmdline-tools path tested on a clear macOS installation

* Add install Java instruction
2023-12-05 08:55:41 +01:00
Honza Rychnovský 905a14db50
[#1003] Clear unused Onboarding alternatives
- 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
2023-11-30 20:50:59 +01:00
Honza Rychnovský cf45a0ef34
[#942] New Wallet Recovery Phrase Screen
[#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
2023-11-23 10:00:13 +01:00
Honza Rychnovský 70d5721845
[#992][#1025] Custom Google Play publishing
* [#992][#1025] Custom Google Play publishing

- Copy logic from working demo
- Documentation
- Update checkProperties task
- Update release listing
- Status completed
- Switch back to main branch
- Closes #992
- Closes #1025

* Deployment documentation

* Remove deprecated Gradle Publisher plugin

* Improve logging

Improve publishing task logging

* Resolve review comments

* Increase PR actions timeouts
2023-11-13 11:50:57 +01:00
Honza Rychnovský 54e522090a
[#951] Add Archivo font
* [#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
2023-08-30 10:36:31 +02:00
Honza Rychnovský 3c751a5893
[#917] Use Inter font 2023-08-03 16:02:51 +02:00
Honza Rychnovský c7c3c3f79d
[#903] Update doc on supported java versions 2023-07-17 13:49:11 +02:00
Alex fc7321e049
[#664] Transaction History List
* [#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>
2023-07-04 13:24:07 +02:00
Honza Rychnovsky 859ec1591e
[#705] Instrumentation coverage generation fails locally 2023-03-31 18:47:57 +02:00
Honza Rychnovsky 5296dc5ea9
[#791] Add Scan To Send
* [#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>
2023-03-30 09:58:20 +02:00
Carter Jernigan 5fc3974129
[#784] Refactor support email address to CI variable
---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2023-03-13 09:19:14 -04:00
Carter Jernigan f18e224404
[#781] Kover 0.7.0-alpha
* [#781] Kover 0.7.0-alpha

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2023-03-09 06:32:31 -05:00
Carter Jernigan 9b966b4087
[#776] Fix hang on launch
Combining multiple flows will hang if the group of flows is empty

- Updated profile installer lib
- Removed benchmark operations receiver fix
- Added new benchmark results

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2023-02-27 11:28:41 -05:00
Carter Jernigan ec7eb3804e [#770] Hide request ZEC button 2023-02-21 12:50:31 -05:00
Carter Jernigan 417fc4b8a5 [#764] Android Remote Config implementation
Note that there is no cloud integration yet. This creates the abstractions to support injecting different remote config sources
2023-02-21 12:50:31 -05:00
Carter Jernigan 6b202e3c9f [#764] Multiplatform remote config API 2023-02-21 12:50:31 -05:00
Carter Jernigan edaeda56da
[#748][#749] Preferences for sync
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>
2023-02-17 11:39:15 -05:00
Carter Jernigan f5e0af6545
[#757] Adopt SDK 1.14.0 (#759) 2023-02-17 06:05:23 -05:00
Alex 7523619afa
[#673] process .ec files from emulator.wtf
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2023-02-13 08:10:32 -05:00
Carter Jernigan 6e85764f74
[#346][#304] Configure Crashlytics and analytics opt-out 2023-01-26 14:12:44 -05:00
Carter Jernigan e8a478cf33
[#707] Exclude files from release packaging only
These files are used by Android Studio in debug builds to discover the version of Compose being used by an app.  They should be preserved for debug builds but can be stripped from release builds.

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2023-01-18 11:25:06 -05:00
Alex b84df3d9dc
[#592] Instrumentation coverage
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2023-01-17 14:54:40 -05:00
Carter Jernigan 811e2cd5ce
[#718] Use variables for Test Lab
This will make it easier for team members to find links to test results
2023-01-13 06:11:11 -05:00
Honza Rychnovsky 2b899a7200
[#682] Testing Documentation Update
* [#682] Testing documentation update

* Bump benchmark dep to 1.2.0-alpha8

* Simplify ui-benchmark-test module build types

* Add referential benchmark test results

* Code clean
2022-12-22 15:42:52 +01:00
Honza Rychnovsky bcacf93a04
[#599] Macrobenchmark test module
* Temporary enable FTL test

* Enable emulator.wft tests for ui-integration-test module on CI

* Rebase onto main

* Test Fladle configuration for ui-integration-test module

* Fix Fladle for ui-integration-test module

* Rename ui-integration-test module flade configuration

* Disable again FTL action from PRs

* Clear support for FTL from ui-integration-test module

* Refactor the emulator.wtf support across our modules.

* [#599] Macrobenchmark test module

- Created new dedicated macrobenchmark test module
- Updated related Architecture and Setup documentation
- Connected to app module
- New benchmark build type
- Related run configuration above custom Gradle task
- Basic startup benchmark test included

* Benchmark build variant simplification

* Run benchmarking simplification

* Documentation update.

* New property IS_SIGN_RELEASE_BUILD_WITH_DEBUG_KEY

- It enables signing the release build with debug key configuration. Default value is false.
- First, we check if we can sign it with release configs, otherwise with debug.
- Documentation updated.

* Benchmarking documentation update

* Adds support for Android SDK 32 and 33

- Bumped benchmark library to the latest alpha version
- Which results in a need of adding profile-installer library in target module (app)
- Now we're able to run benchmarking on Android SDK level 29 and higher (i.e. latest levels included)
- Updated related documentation

* Enables benchmarking for emulators

- I've decided to support emulator devices with our benchmark test module at the end. Documentation and code comments explain to a user that the results may not be the same as on a real physical device. But until we have it set up in CI, we can benefit from having it set up like this.
2022-10-27 12:51:24 +02:00
Honza Rychnovsky 570c98b994
[#649] Setup Included builds documentation update
* [#649] Update SDK name

- zcash-android-sdk -> zcash-android-wallet-sdk

* Removes reference to already fixed SDK issue
2022-10-27 09:27:41 +02:00
Honza Rychnovsky 4eddf4e74b
[#598] Refactoring ScreenshotTest to a separate test module
* Temporary enable FTL test

* Enable emulator.wft tests for ui-integration-test module on CI

* Test Fladle configuration for ui-integration-test module

* Fix Fladle for ui-integration-test module

* Rename ui-integration-test module flade configuration

* Disable again FTL action from PRs

* Clear support for FTL from ui-integration-test module

* Refactor the emulator.wtf support across our modules.

* [#598] Refactoring ScreenshotTest to a separate test module

- Created a new com.android.test module
- Moved our ScreenShotTest to the separate module
- Enabled the new module for emulator.wtf service
- Cleaned up the app module from ScreenShotTest
- Updated Architecture and Setup documentation

* Exclude pure test modules from Detekt check

* Improved run configurations

- Changed common emulator.wtf run configuration name to align with the rest of our configurations
- Added configuration for the new screenshot tests module
- Updated documentation

* Linked code TODO

* Disabled self-instrumenting

- As it appeared to be the way how to leverage the app module Gradle settings in this new module
- App name is taken from app module settings
- Screenshot tests works with pseudolocales again
2022-10-18 15:08:36 +02:00
Honza Rychnovsky bffa5870b6
[#525] Refactoring Integration Test Module
* [#525] Refactoring Integration Test Module

- Change module type to test + related Gradle scripts change
- Rename module to - remove the trailing Lib suffix + documentation
- Move module structure from test to main source

* Static checks result fix

* Temporary enable FTL test

* Test updated emulator.wft version

* Update locked emulator.wtf dependency version

* Enable emulator.wft tests for ui-integration-test module on CI

* Fix enable emulator.wft tests for ui-integration-test module on CI

- Update documentation

* Test Fladle configuration for ui-integration-test module

* Fix Fladle for ui-integration-test module

* Rename ui-integration-test module flade configuration

* Disable again FTL action from PRs

* Clear support for FTL from ui-integration-test module

* Refactor the emulator.wtf support across our modules.

* Fix Mermaid graph syntax

* Minor change in comment

* Fix ui-integration-test module run configuration

- Fixed manually
- Aligned with other run configurations
- Stable and beta versions of AS behave differentially, but after this fix it seems to be working as expected in both

* Update emulator.wtf run configuration

- Covered ui-integration-test module too
- Changed configuration name
2022-10-14 14:17:15 +02:00
Alex 386b400e22
[#174]added warning screen + StorageChecker.kt (#594)
* [#174]added warning screen + StorageChecker.kt

* [#174]added warning screen + StorageChecker.kt

* added manual test

* added manual test

* resolved merge conflicts

* code review fixes

* added vector drawable

* Add units

Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-10-03 15:59:09 +02:00
Alex 8c7176aa22
[#167] Increase brightness when displaying QR Code (#596)
* [#167] Increase brightness when displaying QR Code

* Use collectWith(lifecycleScope)

* Fix copy-paste errors

* manual test

Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-09-29 15:13:54 +02:00
Alex a96637ec07
[#551] Prevent screenshots when seed phrase is displayed on the screen (#590)
* [#551] Prevent screenshots when seed phrase is displayed on the screen

* Minor review changes

Make ScreenSecurity object simpler by eliminating additional ways of mutating its state.

* Add debug and test checks

* secured screens with seed phrase

* codereview fixes

* added test for Seed screen

* added Screen security test for backup views

* test for ScreenSecurity class

* added manual testing for Screen security

* ktlint format

* Clean up ScreenSecurityTest

* Remove debug check

I decided this would be annoying, especially for manual testing

* ktlint

* removed test logging

* removed test logging

Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-09-26 10:28:08 +02:00
Carter Jernigan 45d90b7706 [#586] AGP 7.3 2022-09-22 16:06:09 -04:00
Honza Rychnovsky 1b75ab4fd6
[#552] Compose dependencies update (#589)
* [#552] Compose 1.2.1
* [#553] Accompanist 0.25.0
* Material3 dependency update
* Compose Compiler dependency update
* Compose Navigation dependency update
* Fix camera permission multiple displaying
* Added missing TODO description comments
* Improved Scan screen manual test guide
* Bump dependencies again
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-09-22 15:55:34 +02:00
Carter Jernigan 569e518615 Update Android Studio guidance 2022-09-19 12:31:38 -04:00
Carter Jernigan 072d73e99c
[#547] Configurable dependency locking
This implementation is somewhat special from our other Gradle properties, because it does not get declared in the root gradle.properties.  The reason is that included builds are supposed to have their own properties e.g.

root_project/gradle.properties
root_project/buildSrc/gradle.properties
root_project/build-conventions/gradle.properties

Instead of declaring the property in three different places which might lead to confusion, this leaves the property undeclared, with the Gradle scripts assuming a default value of true.  The only time this is expected to be overridden is due to a workaround for an Android Studio bug.
2022-07-22 13:00:04 -04:00
Honza Rychnovsky f931e7ebe1
[#362] Documentation on build variants
* Adding documentation on build variants

Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-07-01 16:05:09 +02:00
Honza Rychnovsky 35af2bdfc9
[#496] New package suffix for the app builds
- Created new gradle.properties attributes to configure package and app name
- Improved app/build.gradle to support the attribute
- Let Manifest file work with the new placeholder app name field
- Change debug builds with suffixes to avoid production app collision

Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-06-29 16:47:32 -04:00
Carter Jernigan f5975f9c94 [#498] Generate debug builds on CI 2022-06-17 06:51:56 -04:00
Carter Jernigan a88dc36804 [#482] Support BIP-39 included builds 2022-06-14 18:20:51 -04:00
Honza Rychnovsky 90c2fcb255
[#209] Compose dependency update
* [#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
2022-06-14 08:50:55 +02:00
Carter Jernigan f77d010f6d
Update setup documentation 2022-06-09 08:17:14 -04:00
Carter Jernigan a47c179812 [#441] Make included build path configurable 2022-06-07 07:09:40 -04:00
Carter Jernigan 1ce826e453 [#464] Use Kover for multiplatform coverage 2022-06-06 08:41:01 -04:00
Honza Rychnovsky adc774a20d
[#313] scan qr screen functional
* [#312] [#309] Scaffold Scan QR Screen
- Screen scaffolding.
- Model classes.
- Screen states handling.
- Needed dependencies added.
- Camera permission handling. Redirect to Settings.
- Added SettingsUtilTest class.
- Added view classes tests.
- Renamed tag class in update package.
- Fix the scan frame size while changing the screen orientation.
- Use local variable for cameraProvider.
- Use UUID for source of randomness.
- Eliminate blocking call for camera.
- Fix preview name.
- Remove Google Guava dependency.
- Suppress Lint warning.
- Improved calculation of the camera frame size. Moved it into Constraint layout.
- Added custom image analyser class.
- Implemented logic for the QR scan screen while QR code is found.
- Manual tests added.
- New module with integration tests for QR Scan screen. Added 3 integration and 4 view tests.
- Simplify QR Scan screen view basic tests.
- Switched from pure compose permission handling to Accompanist way of handling CAMERA permission.
- Added validation of Zcash wallet address from QR scanning result.
- Fix the integration tests for the CI WTF emulator runs.
- Add comment on RTL test result.
- Improve waitForDeviceIdle() method. Use it on the other test too.
- Change the integration test module main manifest package name.
- Debounce scans.
- Improve thread safety of scan collection.
- Added instructions on how to set up an emulator in manual tests.
- Replace compose collectAsState() with coroutine launch().
- Add sample() to get rid of several callback events at the same time.
- Stop updating the scanState when it's already in Scanning state.
- Fix condition on navigation.
- Remove validateJob check.
- Speed up the integration test
- Wrap ImageAnalysis.qrCodeFlow to remember.
- Auto-close the camera image when we're done with it in all cases.
- Update minimal SDK version to 24 for WTF emulators.
- Update Architecture documentation.
- Removed extra blank space in ui-design module definition.
- Add ui-integration-test-lib.
- Update Mermaid diagram with newly added module.
- Move UI modules into one wrap in the diagram.
- Move sdk-ext-lib and sdk-ext-ui under the same modules section.
- Update camera dependencies.
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-06-02 13:35:51 +02:00
Carter Jernigan 9267e75cb8
[#303] Write crash logs on external storage (#429)
- 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>
2022-05-31 12:38:02 -04:00
Carter Jernigan 94d259d5b0
[#190] Pull screenshots on CI 2022-05-24 09:39:56 -04:00
Carter Jernigan a8be47bf89
[#433] Use emulator.wtf for tests on CI (#428)
This should speed up our builds and reduce flakiness.

Followup items:
 - Enable coverage
 - Collect screenshots
 - Fix target API on sdk-ext-lib #430
2022-05-17 10:06:56 -04:00
Carter Jernigan 62f976b1d8
[#431] Switch to Adoptium JDK
Temurin/Adoptium is the default used by Gradle toolchains, and they now have both Java 11 and 17 ARM support for Macs
2022-05-17 06:07:22 -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
Francisco Gindre 5e1d25b34a
[#401] Add Contributing Guidelines (#402)
* [#401] Update Contributing Guidelines "Commit Messages" section to reflect the changes on iOS SDK

Closes #401

Update Contributing Guidelines "Commit Messages" section to reflect the changes on iOS SDK

* Apply to existing CONTRIBUTING.md

Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-04-29 09:27:58 -03: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 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
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
Carter Jernigan ca68fcf9ae [#255] Pin GitHub Action versions
Previously versions were using tags.  By pinning them to SHAs, it ensures the versions cannot be changed.

Also note that I used the latest release, so many of the actions received a version bump as part of this change.
2022-03-07 13:47:50 -05:00
Carter Jernigan fcd3728f0a [#260] Rename keystore secrets
This will provide clarity for someone looking at the secrets on the GitHub deployment admin screens.  It will be clear that we have the upload key available to CI and not the final release key.
2022-03-07 11:21:35 -05:00
tokidoki b9dd9dc756 fix(docs): fixed wrong internal links in docs 2022-03-04 16:03:02 -05:00
Carter Jernigan d410d62f64
[#224] Add module dependency diagram
Also fixed a typo in the documentation, as `build-conventions` was renamed to `build-convention` a few weeks ago to accomodate included builds
2022-03-02 19:48:07 -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 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 52b6382d47
Configure build with GitHub Actions 2022-01-26 15:13:19 -05:00
Carter Jernigan 40950a0377 [#169] Android Gradle Plugin 7.1
Besides bumping the version, we can now integrate this plugin the same way we do the others.  The version is now declared in the settings.gradle.kts.

The change is a bit noisy, due to needing to move our repository restrictions around.
2022-01-25 15:13:11 -05:00
Carter Jernigan d46cf8187c
[#145] Profile scaffold 2022-01-13 12:49:08 -05:00
Carter Jernigan eb550f680e [#166] Included build for SDK development
Note that the SDK master branch contains breaking API changes, which the Secant app hasn't yet been updated to support, so enabling an included build will have compile failures.
2022-01-04 16:20:37 -05:00
Carter Jernigan 5df93d2423
[#120] Coroutines 1.6.0
In addition to bumping the dependency version, also leverage the new coroutines testing APIs
2021-12-24 08:34:17 -05:00
Carter Jernigan 2e40af9390 [#17] Import wallet 2021-12-17 10:35:22 -05:00
Francisco Gindre 03b89c9fff
Merge pull request #122 from zcash/51-gradle-wrapper-validation
[#51] Updated build integrity documentation
2021-12-15 11:29:28 -03:00
Carter Jernigan c1b6e676e2 Update instructions for Kotlin plugin updates 2021-12-15 07:57:07 -05:00
Carter Jernigan 22fe9fbfc7
Apply suggestions from code review
Co-authored-by: Francisco Gindre <francisco@z.cash>
2021-12-13 16:04:16 -05:00
Carter Jernigan 24cd0e2b25 Update project setup instructions 2021-12-11 07:08:12 -05:00
Carter Jernigan dd5390d837 [#51] Updated build integrity documentation 2021-12-09 07:58:53 -05:00
Carter Jernigan 4a07b2e0b9 [#14] Splash screen 2021-12-04 09:01:21 -05:00
Carter Jernigan 66750a58b1 [#88] Kotlin 1.6
Updating the Compose compiler must happen in lockstep with the Kotlin version, because they are tightly coupled

Kotlin 1.6 also fixes some annoying issues with Java 17, which will make first-time setup less error prone for new contributors
2021-12-03 08:16:24 -05:00
Carter Jernigan f0d9c6d398
[#23] Minify release builds 2021-12-03 08:12:40 -05:00
Carter Jernigan f738666cd2
[#42] Add app deployment process
This enables deployment to Google Play internal testing.

Note these changes cannot be fully tested until the signing and API keys are in place.  Non-deployed builds are continuing to work as expected (e.g. `./gradlew assemble`)
2021-12-02 15:18:17 -05:00
Carter Jernigan d10ff6eb46
[#20] Add launcher icon 2021-12-02 15:16:20 -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 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 7d305dc953 [#8] Restrict maven repositories
This improves security by ensuring that Google's dependencies only from the Google Maven repo.

A dependency on Jitpack has also been removed.
2021-10-19 14:42:30 -04:00
Carter Jernigan f3c425e68a [#31] Add injection of build info
Provides infrastructure to help us track exactly what build of the app is running.  This provides the ability to implement a number of features in the future
 - Displaying build version in an About screen
 - Automatically versioning with Git commit count as an incrementing version number
 - Injection of secrets, API keys, or other behaviors into the build so that the app can leverage them at runtime.  The secrets can be securely stored as environment variables (e.g. on CI), so they don't need to be committed to the repository.
2021-10-19 13:51:06 -04:00
Carter Jernigan c5f3a44340 [#13] Add initial preference infrastructure
This adds infrastructure to read/write preferences, with both a multiplatform wrapper and an Android-specific implementation.

This implementation is primarily designed to cover the initial needs of implementing the wallet SDK integration for issue #28 for securely storing keys (with encryption) for the user's wallet.
2021-10-19 09:26:03 -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