Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update password & seedphrase backup flow #1692

Merged
merged 31 commits into from
Jul 27, 2020

Conversation

andrepimenta
Copy link
Member

@andrepimenta andrepimenta commented Jul 10, 2020

* Update: Add OnboardingProgress component

* Update: Complete OnboardingProgress component

* Update: Move OnboardingProgress to separate UI component

* Update: Add text to OnboardingProgress component

* Add lineHeight

* Update: Increase marginTop

* Update: styles and text

* Update: text

* Update: make prop required

* Update: translations

* Update styles

* Update: translation

* Update: Make steps a prop

* Add single track method to dedupe code a bit

* Add ChoosePassword to Onboarding flow

* Update: add marginHorizontal prop

* Update: use ref to measure and get marginHorizontal dynamically

* Update: only run setState call once

* Fallback to 0 just in case

* Create wallet on Create Password step

* Destructure state for readability

* Update styles, add checkbox

* Update: Add learnMore style

* Add Scan QR code

* Update: add ImportFromSeed button

* Update: use fontPrimary

* Update: cleanup

* Update: Add passwordsMatch const

* Add transalations

* Update: add translations for steps

* Update: Add Learn More link

* Update: Get learn more link functioning correctly

* Add some logging for Linking

* Update: adjust position of checkmark

* Update: OnboardingProgress component

* Update: stings and colors

* Update: snapshots

* Fallback to 0

* Remove label animation

* OnboardingProgress: remove constructor, use purecomponent

* Use callback for toggleShowHide

* Check accounts.length to create or recreate

* Check width

* Align metamask title logo

* Check '@MetaMask:existingUser' to determine if user exists

* Remove width check

* Update styles

* Add switch back in

* Update translations

* Add propType descriptions and defaultProps

* Do not submit until ready

* Add loading view

* Add missing image style

* Remove old state

* Remove back button when creating wallet

* Update: checkbox styles

* Use @react-native-community/checkbox

* delete biometricsContainer

* Update: styles

* Add boxType square to CheckBox

* Add react-native-step-indicator

* patch react-native-step-indicator

* Update: snapshots

* Update patch

Co-authored-by: Etienne Dusseault <[email protected]>
Co-authored-by: Andre Pimenta <[email protected]>
@andrepimenta andrepimenta changed the title Create password (required step) (#1622) Update password backup flow Jul 10, 2020
EtDu and others added 7 commits July 10, 2020 21:10
* locales: add test for ManualBackupStep1

* ManualBackupStep1: new component, in place of AccountBackupStep2

* ManualBackuptStep1: Style seed words, use mock array for data

* add react-native-community/blur dep

* Locales: more text

* Styles: add extraBold option and new grey

* StyledButtonStyles: add styles for view button

* ManualBackupStep1: Implement seed phrase concealer

* Update: Add OnboardingProgress component

* Update: Complete OnboardingProgress component

* Update: Move OnboardingProgress to separate UI component

* Update: Add text to OnboardingProgress component

* ManualBackupStep1: use OnboardingProgress from other PR, tidy up positioning

* ManualBackupStep1: disable button if seed phrase hidden

* locales: add text for ManualBackupStep2

* ManualBackupStep2: create screen, add styles

* ManualBackupStep2: More styling & config

* locales: add text for ManualBackup

* ManualBackupStep1 & 2: fix styling, pass data through navigation

* ObnoardingProgress: make compatible with ManualBackup- likely to change later

* ManualBackup: add step 3, navigate to step 3 from 2, remove success modal

* ManualBackupStep3: implement layout

* locales: add text for ManualBackupStep3

* locales: add more strings for ManualBackupStep3

* ManualBackupStep3: implement hint + styles

* ManualBackupStep3 save hint in async storage

* ManualBackupStep3: implement confetti

* ManualBackupStep1: grab seedphrase from navigation, arrive here from ChoosePassword

* Nav/Main: fix navigation routes. Replace AccountBackup with ManualBackup, implement header for each screen

* ManualBackups: use action view

* BackupAlert: disable with ManualBackup

* OnboardingProgress: update to latest work from ricky

* ManualBackupStep 1 2 3: get steps from navigation params in constructor, fix props for OnboardingProgress

* ManualBackupStep 1 2 3: clean styling for smaller devices

* ManualBackupStep1: get words from nav

* add tests for manual seedphrase backup, update existing

* OnboardingProgress: remove constructor, use purecomponent

* ManualBackupStep 1 2: fix styles to use flex, remove redundant method

* ManualBackupStep3: remove react-native-confetti, use react-native-confetti-cannon

* ManualBackupStep3: save seedphrase hint in an object

* ManualBackupStep3: store hint as object string, update instead of overwriting

* ManualBackupStep1: add password entry if phrase not available in nav params

* ManualBackupStep2: randomize display of seedphrase

* locales: add manualbackup text

* ManualBackupStep2: dont randomize seedphrase during tests

* ManualBackupStep1: onPasswordChange

* lint fix

* Fix conflict with colors

Co-authored-by: rickycodes <[email protected]>
Co-authored-by: Andre Pimenta <[email protected]>
* UI finished but without stepper

* Merging OnboardingProgress component and fix some styles

* Fix styles and locale lang

* Moved bold to other PR & update tests

* update tests

* Update url

* update snapshot

* Handle skiping coming from onboard and wallet

* Update snapshots
* Moving biometric logic to login and added button to start biometric auth on login

* Fix icon centered

* Update tests

* Fix yarn.lock

* Image on assets and hitSlop on styles

* Update unit test

* Move back to previous entry code

* Update tests
* tip added

* Spanish translation

* fix key name

* Styles and copy

* Added confetti animation

* Set header

* Translations

* Local & style fixes & url fix

* Change confetti animation
@andrepimenta andrepimenta marked this pull request as ready for review July 10, 2020 23:02
@andrepimenta andrepimenta requested a review from a team as a code owner July 10, 2020 23:02
@andrepimenta andrepimenta changed the title Update password backup flow Update password & seedphrase backup flow Jul 10, 2020
@ibrahimtaveras00 ibrahimtaveras00 added needs-qa Any New Features that needs a full manual QA prior to being added to a release. next release labels Jul 10, 2020
@ibrahimtaveras00
Copy link
Contributor

ibrahimtaveras00 commented Jul 20, 2020

As mentioned on standup call @omnat @cjeria this is not implemented in this PR

image

Not sure if there are Trello cards up for this already for work to be carried out post V1

Issue 1:

I get a crash upon logging out and attempting to create a new password; seen here = https://recordit.co/0AudtgHf5g

Steps:

  • I was already logged into an account (from develop branch)
  • Then open drawer and tap log out and YES
  • When on log in screen, tap on Go Back
  • Tap on Create wallet

Screen Shot 2020-07-19 at 11 28 20 PM

I should note that if creating a wallet from this branch, it's not reproducible on that flow, so it must be something when already having the app from develop installed

Issue 2:

If I am already logged in and then I log out, and intend to sync with extension, I have to tap on scan twice, and I get the warning alert twice, which is a bit redundant; seen here = http://recordit.co/Vnuu6gvOjo

Steps:

  • I was already logged into an account (from develop branch)
  • Then open drawer and tap log out and YES
  • When on log in screen, tap on Go Back
  • Tap on Scan QR code, tap YES on alert box
  • Tap scan QR code a second time
  • Tap YES in alert box for a second time

Issue 3:

Currently on prod, when a user wants to log out and import a new wallet via seed phrase, we show an alert, however on this branch we do not show an alert, seen here (This branch is on left, while prod is on right)= https://recordit.co/LT7c8Y8rXi

image

Steps:

  • I was already logged into an account (from develop branch)
  • Then open drawer and tap log out and YES
  • When on log in screen, tap on Go Back
  • Tap on Import using seed phrase (notice how on prod I get the alert but not on this branch)

Perhaps this will get tackled in @estebanmino 's PR with this?
Screen Shot 2020-07-20 at 12 45 00 AM

Issue 4:

On step 3 “Secure your wallet” after creating a new wallet, on Android a user is able to tap on the device back button which takes them back to create password, should we disable this ability?

Issue 5:

The ‘seed phrase’ modal has the second paragraph repeated twice instead of the third paragraph

Seen here:
image

Issue 6:

I’m noticing that the sequence of numbers of steps are filled in earlier than what is shown in figma

Step 2:
image

Screen Shot 2020-07-20 at 3 28 31 AM

Step 3:
image

Issue 7:

On the Congratulations view, we have “loose it” instead of “lose it”

Seen here:
image

Issue 8:

On the Recovery hint modal, I am able to tap the Save CTA without inputting any text in the text input field

Screen Shot 2020-07-20 at 3 42 24 AM

Copy link
Contributor

@ibrahimtaveras00 ibrahimtaveras00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐛

@cjeria
Copy link

cjeria commented Jul 20, 2020

The header and subheader copy in the carousel needs to be updated to the latest copy. Here's a direct link to the designs
image

@ibrahimtaveras00
Copy link
Contributor

ibrahimtaveras00 commented Jul 20, 2020

Issue 9:

I'm noticing that for the fingerprint feature, we correctly show it when launching app (and if I cancel I'm still able to initiate it again), however, if I'm already logged in, and then I log out, tapping on the finger print does nothing nor does killing the app then relaunching; seen here = http://recordit.co/G58PvrDM6w

Same on iOS as well when tapping on face id icon I get the following warning:
Screen Shot 2020-07-20 at 7 32 11 PM

Is this buggy, or is this how it was intended to work @cjeria / @andrepimenta ?

Also it seems like device pin does not having any design or functionality with this new flow; seen here = http://recordit.co/423nklhQuF

I have to manually enter my password

Issue 10:

I am not able to get Face recognition / Irises / Pin to work on my android device. Basically if I have either enabled, when I get to the create password view, I'm not even asked to Sign in with Face recognition / Irises / Pin (the only one that works for me is finger print). In this example = https://recordit.co/IU9qjMEqQv I have Iris enabled, but I'm not asked to log in with it, thus it's never registered in the app and I have to manually type in my password each time. (same goes for face recognition and pin)

I'm assuming the create password page has to be able to detect/recognize if the device has face recognition/ iris scanner/ pin enabled and prompt the user accordingly; cc: @rickycodes

This does work on iOS for Face ID
Screen Shot 2020-07-20 at 6 48 37 PM

@ibrahimtaveras00
Copy link
Contributor

ibrahimtaveras00 commented Jul 20, 2020

Issue 11:

The title METAMASK is misaligned on this view

Screen Shot 2020-07-20 at 6 34 04 PM

this is on my Samsung Note 9 (which is a 6.4" screen)

compared to iPhone X
Screen Shot 2020-07-20 at 7 37 59 PM

@ibrahimtaveras00
Copy link
Contributor

Issue 12

Seems like we missed the security feature of blocking screenshots on Android on import via seed phrase flow

this branch = https://recordit.co/S1jrlwY8SA
verses
current production = https://recordit.co/EfpHJ3ehig

@ibrahimtaveras00
Copy link
Contributor

ibrahimtaveras00 commented Jul 20, 2020

Issue 4a:

In addition to Issue 4 above which was for android, on iOS I'm noticing that by swiping left I get to the create password view which I'm assuming would create a brand new wallet and I'm unsure if we provide a warning

upon checking this flow out it does look like we attempt another wallet creation = http://recordit.co/Ns8Zuwyuep

perhaps we don't allow any way to get back to that view? Disable swiping and native android back button probably should do the trick

@ibrahimtaveras00
Copy link
Contributor

ibrahimtaveras00 commented Jul 21, 2020

Issue 13

Similar to issue 3, when I am already logged in then I log out and attempt to create a new wallet, on prod I'm prompted with a warning, however, on this branch there is no warning; seen here = http://recordit.co/Znp4SVYphn (prod on left, this branch on right)

@ibrahimtaveras00
Copy link
Contributor

Not really an issue per-se but more of an observation

On a smaller device, (i'm currently on iPhone 5s simulator) after a user inputs password, the page doesn't automatically scroll to the bottom, and there is no indication that the user should scroll down to continue, I'm wondering if this would confuse some users; seen here = http://recordit.co/5b0gKog21T

@ibrahimtaveras00
Copy link
Contributor

Issue 14:

On a smaller device (left in screencast and screenshot is Android Galaxy_Nexus emulator) the confirm CTA on the manual seed phrase back up flow is covering the password text input field; seen here = https://recordit.co/DyDpWNQBwu

Screen Shot 2020-07-20 at 8 51 23 PM

to get here you have to do the create wallet > create password > skip backup > then tap on alert on bottom of screen, then continue with backup

@ibrahimtaveras00 ibrahimtaveras00 added QA'd - Issues Found QA has been complete, however issues have been discovered that need to be addressed and removed needs-qa Any New Features that needs a full manual QA prior to being added to a release. labels Jul 21, 2020
* showQrCode here instead of navigating to import wallet

* Fix second paragraph repeated issue

* Center metamask logotype on Wallet imported screen

* Add Modal for Scan QR code

* Update onboarding_carousel

* Add missing QR code logic

* Update locales

* Hide login when loading

* Update stepper positions

* Update styling

* Update locales

* Update snapshots

* Fix onPressCreate
@EtDu EtDu mentioned this pull request Jul 23, 2020
3 tasks
andrepimenta and others added 8 commits July 23, 2020 18:51
# Conflicts:
#	app/components/Views/AccountBackupStep1/__snapshots__/index.test.js.snap
#	app/components/Views/ChoosePassword/__snapshots__/index.test.js.snap
#	yarn.lock
* use pending deeplink

* rm logs

* deeplink

* comment
EtDu and others added 2 commits July 24, 2020 14:34
* ManualBackupStep3: dismiss hint when tapping anywhere outside keyboard

* snapshot
* remove unused backupAlertPress

* call seedphraseNotBackedUp to bring back BackupAlert

* Fix learnMore link

* Make QR code steps list look good on smaller devices

* Fix Getting started CTA on smaller screens

* Fix testIDs

* Update OnboardingCarousel snapshot
@andrepimenta andrepimenta added needs-qa Any New Features that needs a full manual QA prior to being added to a release. and removed QA'd - Issues Found QA has been complete, however issues have been discovered that need to be addressed labels Jul 24, 2020
@ibrahimtaveras00
Copy link
Contributor

ibrahimtaveras00 commented Jul 27, 2020

Issue 18:

On a newly created wallet from develop that never had funds sent, as soon as funds are sent on this branch, I get the old secure your wallet modal, but it took me to the new create password flow and created a new wallet (funds lost) = http://recordit.co/aytLTHBHvT

Here at the 1 second mark you can see my address on account 1 with funds:

image

But the newly created wallet with a new address as account 1 with no funds:

image

Steps to reproduce:

  • go to develop branch
  • build app fresh
  • once app is built, just create a new wallet
  • go to this branch and run yarn start:ios again
  • now send funds to account 1
  • you'll get old secure your wallet modal, proceed
  • go through the whole flow and it will create a new wallet with new seed phrase

@cjeria
Copy link

cjeria commented Jul 27, 2020

Let's reduce the size of the graphic by ~50% to match the design. That should help not hide the text below the button as well as make room to vertically center the "Remind me later" button/text per the design.
image

rickycodes and others added 3 commits July 27, 2020 16:22
* Only create wallet if the user does not already exist

* use from in navigation so we know where the user is coming from

* remove existing check since this will be on the onBoarding

* create appConstant for PREVIOUS_SCREEN

* Remove console.log

* undo

* remove console.log
* Scale

* Update tests
Copy link
Contributor

@ibrahimtaveras00 ibrahimtaveras00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we are QA Passed 🚀

@ibrahimtaveras00 ibrahimtaveras00 added QA Passed A successful QA run through has been done and removed needs-qa Any New Features that needs a full manual QA prior to being added to a release. labels Jul 27, 2020
@estebanmino estebanmino merged commit 7491549 into develop Jul 27, 2020
@estebanmino estebanmino deleted the feature/update-password-backup-flow branch July 27, 2020 23:45
rickycodes added a commit that referenced this pull request Jan 31, 2022
* Create password (required step) (#1622)

* Update: Add OnboardingProgress component

* Update: Complete OnboardingProgress component

* Update: Move OnboardingProgress to separate UI component

* Update: Add text to OnboardingProgress component

* Add lineHeight

* Update: Increase marginTop

* Update: styles and text

* Update: text

* Update: make prop required

* Update: translations

* Update styles

* Update: translation

* Update: Make steps a prop

* Add single track method to dedupe code a bit

* Add ChoosePassword to Onboarding flow

* Update: add marginHorizontal prop

* Update: use ref to measure and get marginHorizontal dynamically

* Update: only run setState call once

* Fallback to 0 just in case

* Create wallet on Create Password step

* Destructure state for readability

* Update styles, add checkbox

* Update: Add learnMore style

* Add Scan QR code

* Update: add ImportFromSeed button

* Update: use fontPrimary

* Update: cleanup

* Update: Add passwordsMatch const

* Add transalations

* Update: add translations for steps

* Update: Add Learn More link

* Update: Get learn more link functioning correctly

* Add some logging for Linking

* Update: adjust position of checkmark

* Update: OnboardingProgress component

* Update: stings and colors

* Update: snapshots

* Fallback to 0

* Remove label animation

* OnboardingProgress: remove constructor, use purecomponent

* Use callback for toggleShowHide

* Check accounts.length to create or recreate

* Check width

* Align metamask title logo

* Check '@MetaMask:existingUser' to determine if user exists

* Remove width check

* Update styles

* Add switch back in

* Update translations

* Add propType descriptions and defaultProps

* Do not submit until ready

* Add loading view

* Add missing image style

* Remove old state

* Remove back button when creating wallet

* Update: checkbox styles

* Use @react-native-community/checkbox

* delete biometricsContainer

* Update: styles

* Add boxType square to CheckBox

* Add react-native-step-indicator

* patch react-native-step-indicator

* Update: snapshots

* Update patch

Co-authored-by: Etienne Dusseault <[email protected]>
Co-authored-by: Andre Pimenta <[email protected]>

* Manual Seedphrase Backup Designs (#1641)

* locales: add test for ManualBackupStep1

* ManualBackupStep1: new component, in place of AccountBackupStep2

* ManualBackuptStep1: Style seed words, use mock array for data

* add react-native-community/blur dep

* Locales: more text

* Styles: add extraBold option and new grey

* StyledButtonStyles: add styles for view button

* ManualBackupStep1: Implement seed phrase concealer

* Update: Add OnboardingProgress component

* Update: Complete OnboardingProgress component

* Update: Move OnboardingProgress to separate UI component

* Update: Add text to OnboardingProgress component

* ManualBackupStep1: use OnboardingProgress from other PR, tidy up positioning

* ManualBackupStep1: disable button if seed phrase hidden

* locales: add text for ManualBackupStep2

* ManualBackupStep2: create screen, add styles

* ManualBackupStep2: More styling & config

* locales: add text for ManualBackup

* ManualBackupStep1 & 2: fix styling, pass data through navigation

* ObnoardingProgress: make compatible with ManualBackup- likely to change later

* ManualBackup: add step 3, navigate to step 3 from 2, remove success modal

* ManualBackupStep3: implement layout

* locales: add text for ManualBackupStep3

* locales: add more strings for ManualBackupStep3

* ManualBackupStep3: implement hint + styles

* ManualBackupStep3 save hint in async storage

* ManualBackupStep3: implement confetti

* ManualBackupStep1: grab seedphrase from navigation, arrive here from ChoosePassword

* Nav/Main: fix navigation routes. Replace AccountBackup with ManualBackup, implement header for each screen

* ManualBackups: use action view

* BackupAlert: disable with ManualBackup

* OnboardingProgress: update to latest work from ricky

* ManualBackupStep 1 2 3: get steps from navigation params in constructor, fix props for OnboardingProgress

* ManualBackupStep 1 2 3: clean styling for smaller devices

* ManualBackupStep1: get words from nav

* add tests for manual seedphrase backup, update existing

* OnboardingProgress: remove constructor, use purecomponent

* ManualBackupStep 1 2: fix styles to use flex, remove redundant method

* ManualBackupStep3: remove react-native-confetti, use react-native-confetti-cannon

* ManualBackupStep3: save seedphrase hint in an object

* ManualBackupStep3: store hint as object string, update instead of overwriting

* ManualBackupStep1: add password entry if phrase not available in nav params

* ManualBackupStep2: randomize display of seedphrase

* locales: add manualbackup text

* ManualBackupStep2: dont randomize seedphrase during tests

* ManualBackupStep1: onPasswordChange

* lint fix

* Fix conflict with colors

Co-authored-by: rickycodes <[email protected]>
Co-authored-by: Andre Pimenta <[email protected]>

* Prompt to backup seedphrase (#1647)

* UI finished but without stepper

* Merging OnboardingProgress component and fix some styles

* Fix styles and locale lang

* Moved bold to other PR & update tests

* update tests

* Update url

* update snapshot

* Handle skiping coming from onboard and wallet

* Update snapshots

* Feature/fingerprint in login (#1651)

* Moving biometric logic to login and added button to start biometric auth on login

* Fix icon centered

* Update tests

* Fix yarn.lock

* Image on assets and hitSlop on styles

* Update unit test

* Move back to previous entry code

* Update tests

* Feature/update import extension tip (#1668)

* tip added

* Spanish translation

* fix key name

* Styles and copy

* Added confetti animation

* Set header

* Translations

* Local & style fixes & url fix

* Change confetti animation

* Navigations

* Fix fingerprint and QR navigation

* Update snapshots

* Remove setGenericPassword and removeItem

* showQrCode instead of navigating to import wallet (#1706)

* showQrCode here instead of navigating to import wallet

* Fix second paragraph repeated issue

* Center metamask logotype on Wallet imported screen

* Add Modal for Scan QR code

* Update onboarding_carousel

* Add missing QR code logic

* Update locales

* Hide login when loading

* Update stepper positions

* Update styling

* Update locales

* Update snapshots

* Fix onPressCreate

* Fix fingerprint on logout & disallow backbutton on backup flow & button on manual backup on small screens (#1709)

* Fix fingerprint on logout & disallow backbutton on backup flow

* fix manual backup button on small devices

* Don't save hint if empty

* Fix skip and fix submit password button on smaller devices

* Fix step on backup 1B and copy

* Fix dismissing hint modal

* Fix keyboard blocking continue on manual step

* Update tests

* bugfix/pending deeplink (#1716)

* use pending deeplink

* rm logs

* deeplink

* comment

* Fix font

* Confetti working android and ios (#1717)

* Fix not able to dismiss keyboard during seedphrase hint (#1719)

* ManualBackupStep3: dismiss hint when tapping anywhere outside keyboard

* snapshot

* UI fixes for feature/update-password-backup-flow (#1715)

* remove unused backupAlertPress

* call seedphraseNotBackedUp to bring back BackupAlert

* Fix learnMore link

* Make QR code steps list look good on smaller devices

* Fix Getting started CTA on smaller screens

* Fix testIDs

* Update OnboardingCarousel snapshot

* fix going to wallet at the end of manual backup

* Styles scan modal (#1721)

* modal

* rewquest close

* paddingVertical

* fontStyles.normal

* call toggleQrCodeModal on showQrCode

Co-authored-by: rickycodes <[email protected]>

* Only create wallet if the user does not already exist (#1725)

* Only create wallet if the user does not already exist

* use from in navigation so we know where the user is coming from

* remove existing check since this will be on the onBoarding

* create appConstant for PREVIOUS_SCREEN

* Remove console.log

* undo

* remove console.log

* Fix account creation image size

* Scale (#1726)

* Scale

* Update tests

Co-authored-by: ricky <[email protected]>
Co-authored-by: Etienne Dusseault <[email protected]>
Co-authored-by: Esteban Miño <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
next release QA Passed A successful QA run through has been done
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants