Commit Graph

168 Commits

Author SHA1 Message Date
Kevin Gorham 2c749af3be
Fix: Repair create flow.
There was a logic error that caused the load screen to cover the create/restore screen because the load screen was waiting for the synchronizer to start but it would not start until after the wallet was created (or restored). The simple fix was to turn off the load screen during the create/restore flow and then reactivate it, if needed while creating the syncrhonizer. In almost all cases, users will not see the load screen. However, when there is a race condition and the homescreen attempts to draw before the synchronizer is ready, it will now display a load screen instead.
2020-12-20 11:09:23 -05:00
Kevin Gorham 500fa13cbd
Fix: repair the upgrade flow.
Existing users of seed-only wallets were getting stuck because the birthday is now stored differently. The previous fix was attempting to just load the latest checkpoint as the birthday but this does not work because the birthday determines how far back the wallet will rewind during a reorg. The end result prevented the wallet from going back as far as it needed. When the birthday isn't known, it makes logical sense to set it to the lowest possible number: Sapling Activation. This also happens to fix the problem because now wallets that are upgrading can rewind beyond the latest checkpoint.
2020-12-20 10:59:14 -05:00
Kevin Gorham fc10a3c529
Fix: Troubleshoot and repair race condition during app launch. 2020-12-19 16:46:01 -05:00
Kevin Gorham 823aa209e1
Fix: Added loading screen.
This helps with managing the race condition at startup where existing wallets want to show data quickly but need to wait for the synchronizer to be fully ready, which often happens slower than how long it takes the screen to draw itself.
2020-12-19 16:44:10 -05:00
Kevin Gorham af8c3ad9ae
Miscellaneous minor changes. 2020-12-19 10:35:43 -05:00
Kevin Gorham 5d301806e0
New: Add blockchair as the transaction explorer. 2020-12-19 10:33:07 -05:00
Kevin Gorham 3b3da801da
New: Improved internal metrics for troubleshooting issues.
We now take metrics on how long devices are taking to create transactions so we can begin to understand which devices are in having a bad user experience and later know precisely how much our performance improvements have helped. We also now track submission response errors to help us pinpoint when and why transactions are failing. This is very useful as the canopy grace period expires and transactions begin to not appear for some testers.
2020-12-19 10:31:29 -05:00
Kevin Gorham b45ced18ba
Fix: Users can now upgrade from seed only wallets without a restore.
Previously, wallets would crash before launching because only the seed was stored. Now, the wallet works with only viewkeys so these older wallets need to store that value at least once. This does that and also adds troubleshooting code to try and find any similar edge cases and report on whether this work around corrected the issue. For internal use only, of course.
2020-12-19 10:27:12 -05:00
Kevin Gorham 8ab188cdf0
New: Authenticate before viewing backup phrase. 2020-12-19 10:24:47 -05:00
Kevin Gorham 7b4d6f1c9f
Fix: Upgraded biometrics dependency and fixed cancel issues.
Previously, certain phones could press cancel to bypass biometrics. Others couldn't even enter the send flow. Google's library for this is still not stable but it has improved and the underlying issue that contributed to these bugs has been corrected.
2020-12-19 10:23:47 -05:00
Kevin Gorham 8fd1bdee81
New: Add support for reduced fees via ZIP-313 🎉 2020-12-19 10:16:09 -05:00
Kevin Gorham 210adadcbb
New: Upgrade to the latest SDK.
This includes:
- Reduced fees via ZIP-313 support
- Secure storage library fixes
- Improved and simplified initialization logic
- Various other changes and improvements

For more details, see the SDK changelog https://github.com/zcash/zcash-android-wallet-sdk/blob/master/CHANGELOG.md
2020-12-19 10:14:01 -05:00
Kevin Gorham 6d1aeaf335
Addresses https://github.com/zcash/zcash-android-wallet/issues/209 2020-10-20 13:31:02 -04:00
Kevin Gorham af2d8004cc
Workaround for navigation issue.
The SendFinal screen would completely break after pressing cancel. Pressing back would return to other screens but not actually clear the SendFinal fragment out. This workaround fixes that but there is still weird behavior when users press back. This is good enough for this release.
2020-10-09 13:26:14 -04:00
Kevin Gorham e188c793a7
Minor changes.
Change log update.
Version bump.
Copy Edit.
2020-10-09 13:26:13 -04:00
Kevin Gorham 0039db8602
Fix: Developer logs feature on older phones.
This also happens to address the security finding in issue #121 by putting logs directly into a file rather than scraping them from the device logs.
2020-10-09 13:26:13 -04:00
Kevin Gorham 7e193812e3
New: Added QA build type.
This allows the app to run alongside the play store version for internal testing within the wallet team. This proved to be super useful so we formalized it into its own build with a separate icon and app name.
2020-10-07 20:19:54 -04:00
Kevin Gorham a693caf499
Fix: critical bug in underlying storage library.
ViewingKeys would sometimes get written in one way but not read back the same, dependeing on length. This was hard to catch because it only happened about 30 percent of the time. The fix was to update the secure storage library to work with lists and maintain order. A PR was submitted upstream but we are also going to seek out a better library to use going forward.
2020-10-07 20:17:29 -04:00
Kevin Gorham 19dd11deb7
Fix: devices without a pin set can now sends funds.
In the future, we may want to inform the user that they can increase security by setting a PIN on their device.
2020-10-07 20:14:34 -04:00
Kevin Gorham dcae7d65e1
New: Allow initialization based on viewingKeys.
Iterated on wallet initialization logic in the process. The wallet is now started and synced with a viewingKey instead of a seed.
2020-10-07 20:10:45 -04:00
Kevin Gorham f6ddf32392
Localization: Normalize all numeric displays.
The first pass of allowing numbers to be locale-aware did not work so we fix them to one format until we can address this in a subsequent iteration.
2020-10-07 20:02:33 -04:00
Kevin Gorham 76fc96ebce
Localization: Add Korean translations. 2020-10-07 19:54:17 -04:00
Kevin Gorham aba6e67654
Localization: Add Russian translations. 2020-10-07 19:54:17 -04:00
Kevin Gorham b4271f7bfd
Localization: Add Chinese translations. 2020-10-07 19:54:16 -04:00
Kevin Gorham 3de2077626
Localization: Add Itialian translations. 2020-10-07 19:54:16 -04:00
Kevin Gorham 93c1d4ac30
Localization: Add spanish translations. 2020-10-07 19:54:16 -04:00
Kevin Gorham d8ae9c0ff4
Localization: extract strings to resources.
Pulled out all strings and also cleaned up warnings along the way. Introduced base translation files, one of which is mapped directly to the excel spreadsheet of translations.
2020-10-07 19:54:15 -04:00
Kevin Gorham d3efb08fb1
Minor fixes and cleanup. 2020-09-25 11:50:20 -04:00
Kevin Gorham bda474e65d
Align exit icons across all screens. 2020-09-25 11:49:38 -04:00
Kevin Gorham 5e2f79ba62
Add change server ability and respond to design feedback.
- Changed style of input boxes
- Updated button behavior to only enable when values have changed
- Added simple loading screen
- Added error handling messages when the change server fails
- Switched button order and simplified button text
- Added red validation messages below input
- Respond to user input, as they type
- Reformatted title area to match other screens
- Adjusted layouts to be percentage based to work more consistently on smaller screens
- Implemented logic for restoring the original server values
2020-09-25 11:49:09 -04:00
Kevin Gorham d38626c205
Incorporate new SDK initializer improvements.
The first step in working with viewingKeys directly.
2020-09-25 11:43:36 -04:00
Kevin Gorham 34b01347b7
Round down birthday calculation. 2020-09-25 11:41:00 -04:00
Kevin Gorham 453cd1d995
Merge pull request #203 from nighthawk24/feature/settings
Create Settings layout, fragment & view model
2020-09-23 23:52:15 -04:00
Kevin Gorham 2016beca00
Minor bug fixes and CHANGLOG update. 2020-09-23 23:28:31 -04:00
nighthawk24 3140399cb1 Create Settings layout, fragment & view model
Stringify resources in Profile.
Fix tint for navigation icons.
2020-09-16 01:49:43 -04:00
Kevin Gorham 4d678d24da
Update version to 1.0.0-alpha34. 2020-08-28 04:06:12 -04:00
Kevin Gorham 11fffc5e67
Minor cleanup. 2020-08-28 04:05:14 -04:00
Kevin Gorham 630e7e773a
New: Implemented transaction detail view.
First pass complete. What remains is: error state handling, animations and hooking into the send flow.
2020-08-28 04:03:27 -04:00
Kevin Gorham de84bcbe7c
Updated and corrected home screen icons. 2020-08-28 04:00:32 -04:00
Kevin Gorham 5b02f188f6
Fix: Iterated on send flow from last sprint.
Addressed most design feedback from this list https://github.com/zcash/zcash-android-wallet/issues/113\#issuecomment-676622252
2020-08-28 03:58:35 -04:00
Kevin Gorham cf1c035c78
Added new design assets. 2020-08-28 03:52:11 -04:00
Kevin Gorham 25ffce866c
New: Updated receive screen and scan screen.
Removed the buttons that allowed navigation between the two screens, which has the nice benefit of removing the second way that the user could enter the Send flow. Lastly, split the address back into 8 parts and did other UI cleanup on the receive screen.
2020-08-28 03:52:10 -04:00
Kevin Gorham 462e3e10d9
Migrated some capabilities over to the MainActivity.
Most of these changes center around managing addresses. We might want to further compose the MainActivity and allow another object to handle these capabilities but for now they live in a place that's central for all fragments.
2020-08-28 03:45:58 -04:00
Kevin Gorham 46c7cee030
New: Added first-use dialog and lockbox for app settings.
Since we do not want to pester users most of our dialogs, going forward, will prompt the user select a setting not to see them again. This commit also gets rid of two separate approaches for sharedPreferences and settles on a second instance of lockbox. Our current lockbox is used for keys so we create another that contains no cryptographic info and use it for settings. This will use the device's secure element, when present and do the most secure thing falling back to our minSDK.
2020-08-28 03:45:58 -04:00
Kevin Gorham 77e77ab724
New: Update to 1.2.0 version of RecyclerView to take advantage of new StateRestorationPolicy
which automatically handles some of the more complex state management. Without this change, the recyclerview would lose its scroll position after viewing tx details. Now it handles it perfectly due to setting transactionAdapter.stateRestorationPolicy =
            RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY
2020-08-28 03:19:13 -04:00
Kevin Gorham 94f942136b
Fix: Trim improperly parsed characters from memos. 2020-08-28 03:05:08 -04:00
Kevin Gorham f314bdc78b
Fix: keypad stops working when navigating back to home screen.
Addresses one of the issues mentioned in https://github.com/zcash/zcash-android-wallet/issues/113\#issuecomment-676622252 . The core problem was that the underlying model was getting cleared but the view retained its state. The fix is to prevent clearing the model whenever the view already has a value.
2020-08-28 03:05:08 -04:00
Kevin Gorham 1577b3223d
Fix: prevent black screen after failed initialization.
If a crash occurs before feedback is started then attempting to report that crash will, itself, crash because the lateinit feedback instance is not initialized. The result is a black screen on launch! This fixes that by catching everything while trying to report an error.
2020-08-28 03:05:07 -04:00
Kevin Gorham 953aeb32ea
Allow color resources to be used in vector drawables.
Without these changes, hard coded colors must be used on APIs prior to 24.
2020-08-28 03:05:07 -04:00
Kevin Gorham 35d268622c
Allow ViewModel injection from the MainActivity. 2020-08-28 03:05:06 -04:00