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

Wallet auto-detection when accessing Colony #101

Closed
3 tasks
collinvine opened this issue May 10, 2018 · 23 comments
Closed
3 tasks

Wallet auto-detection when accessing Colony #101

collinvine opened this issue May 10, 2018 · 23 comments
Labels

Comments

@collinvine
Copy link

collinvine commented May 10, 2018

Jobs Story

When I am logging in to Colony
I want the system to detect whether I have metamask or a hardware wallet connected
So that the login process is easier for me

Specs

If a user has either MetaMask or a Hardware wallet connected, we should autodetect to make the login or registration easier.

There are two scenarios that can arise from auto detection:

  1. It’s a new user (registration workflow)
  2. It’s a returning user (login workflow)

auto detection

New User Workflow

If it’s a new user, they will be presented with a screen that prompts them to agree to use their wallet to access Colony.

Auto detection of MetaMask for New Users
metamask - auto detection

We ask the wallet to confirm that they want to use MetaMask to access Colony. They have two actions:

  1. Go To Colony: This will create a new account and direct them to complete their profile (Profile creation during registration #102)
  2. Choose a different wallet: This will take the user back to the wallet selection screen (image below)

Wallet detection screen
wallet selector

Auto detection of Hardware Wallet for New Users
hardware-wallet-detected-1
hardware-wallet-detected-1 2
hardware-wallet-detected-1 3-search-preloaders

For auto detecting a hardware wallet, we will first prompt the user to select which wallet they want to access on their hardware wallet. Then they'll have the same two options: Go To Colony or Choose a different wallet.

  • add search field for user to enter a wallet address
  • display addresses in single scrollable list with radio button
  • filter addresses with the most ETH to the top

Returning User Workflow

If the user clicks Open Colony from the colony.io home page, and we detect it's a returning user (someone who has already created an account on Colony), then we immediately direct them to their Profile page.

Questions

  • If it’s a hardware wallet with multiple addresses, can we do this? Would we first need them to select which wallet they’d like to use and then access the app?
    • If yes, it’s the same as above
    • If no, they’ll have to select which wallet to use and login with that
@collinvine collinvine changed the title Wallet auto-detection when logging in Wallet auto-detection when accessing Colony May 15, 2018
@itspatch
Copy link

@collinvine typo in "Returning User Workflow, Hardware". 'hope' --> 'home'

We might also want to reiterate that if we don't detect metamask or a hardware wallet we bring them to the select wallet screen in #99

@rdig
Copy link
Member

rdig commented Jun 20, 2018

we will first prompt the user to select which wallet they want to access on their hardware wallet

Meaning the hardware will light up and prompt the user for some action ?

Go To Colony or Choose a different wallet.

The only action here should be select the available, because it's not entirely clear that Go to Colony will select the first available address.

Also the address list is huge, we should show at least 10

@collinvine
Copy link
Author

Sorry, @rdig I missed this when you first posted.

Meaning the hardware will light up and prompt the user for some action ?

I meant we'll have a screen that prompts the user to select a wallet, similar to how MyCrypto does it.

40034056-0188b092-57b0-11e8-97a4-d51eabe51f1a

I recognize that they have LOTS of addresses and also a field titled HD Derivation Path which seems to change the list of addresses that appear.

You hint at this here:

Also the address list is huge, we should show at least 10

Do you have a way to simplify this process? I'm a bit perplexed by it.

The only action here should be select the available, because it's not entirely clear that Go to Colony will select the first available address.

So you're saying it's a problem with the copy?

The intent is to have the button be deactivated until a wallet is selected and then once selected the button is active and the user can proceed to Colony.

@rdig
Copy link
Member

rdig commented Jul 18, 2018

I meant we'll have a screen that prompts the user to select a wallet, similar to how MyCrypto does it.

Got it.

I recognize that they have LOTS of addresses and also a field titled HD Derivation Path which seems to change the list of addresses that appear.

We don't need to show the user the derivation path

Do you have a way to simplify this process? I'm a bit perplexed by it.

Not really, since that's the way you "select" which address you want to use. and depending on what address the user has been using in the past, he may (or may not) want to use it again.

Let's take this scenario: The use has been using the address with index 23, that's derived from the m/44'/60'/0'/0/23 derivation path. If we only show the first 10 addresses, (index 0 to 9), the user that won't see the address in the list.

The intent is to have the button be deactivated until a wallet is selected and then once selected the button is active and the user can proceed to Colony.

Ok, I didn't get this from the visual, thanks for clearing it up.

@collinvine
Copy link
Author

I found myself wanting a search field when using MEW to select a wallet. Could we add that in, or we wouldn't have access to query the data?

@rdig
Copy link
Member

rdig commented Jul 18, 2018

I found myself wanting a search field when using MEW to select a wallet.

Wallet type (eg: software, hardware, metamask) or address ? (eg: 0x123abc...)

@collinvine
Copy link
Author

Address

@rdig
Copy link
Member

rdig commented Jul 18, 2018

Wouldn't really work, since we only allow the user to select one address at Login.

The only way I see us doing this, is to allow the user to select multiple ones, from multiple wallet types (think checkboxes instead of radio buttons)

But I really don't see the immediate benefit to this...

@rdig
Copy link
Member

rdig commented Jul 18, 2018

Or...

Do you envision something like the browser remembering previously used addresses, and searching through those ?

@collinvine
Copy link
Author

I had something different in mind. Let me explain the problem I had trying to find the address I wanted to use from my Ledger on MEW.

I go to unlock my wallet using Ledger on MEW and it gives me a lot of addresses to chose from, seemingly filtered (?) by their derivation path. I knew the address I wanted to use, but I couldn't find it. I paged through hundreds of wallet addresses (5 at a time, mind you) and still couldn't find it.

I really just wanted a search field so I could paste the ledger address I wanted to use but couldn't find through their pagination design.

@rdig
Copy link
Member

rdig commented Jul 18, 2018

Yep, we can do that.

@collinvine
Copy link
Author

Oh cool.

@collinvine
Copy link
Author

collinvine commented Jul 18, 2018

Then I think we'll need to design for:

  1. Pagination (10 per page?)
  2. Search

@rdig
Copy link
Member

rdig commented Jul 18, 2018

If it would be up to me, I wouldn't do pagination.

I would just do a fixed height scroll-able list (up to 100 + a load more button) with a search box atop.

@collinvine
Copy link
Author

If it would be up to me, I wouldn't do pagination.

Sure, I'm easily on board with that. The pagination on MEW was not a good ux.

I would just do a fixed height scroll-able list (up to 100 + a load more button) with a search box atop.

I like it. I'll get with Karol and fix this screen and re-upload it.

@collinvine
Copy link
Author

collinvine commented Jul 31, 2018

We've updated the hardware wallet address selection screen. I've also updated the above specs to include this screen:

hardware-wallet-detected-1
hardware-wallet-detected-1 2

@collinvine
Copy link
Author

@coyotespike why was this moved to the icebox?

@rdig
Copy link
Member

rdig commented Jul 31, 2018

We need a loading state for the balance.

As we won't be able to fetch all at once, and we'll need to defer loading to just the ones the user "sees" .

@rdig
Copy link
Member

rdig commented Aug 1, 2018

Warning about the Ledger Wallet:

Due to the way the Ledger Nano S is designed, while it's very "easy"™ to detect it's presence initially, after about 10 minutes of inactivity it will enter "screen-saver" mode which cuts off all communication to the device. (It acts like it's not even connected to the USB port)

Because of this, it makes it very un-reliable from a detection standpoint.

ledger-standby_small

For some good news, this problem will be mitigated once the WebUSB standard gets wide adoption, and I can access the USB port directly from the browser.

https://wicg.github.io/webusb/

@collinvine
Copy link
Author

collinvine commented Aug 1, 2018 via email

@rdig
Copy link
Member

rdig commented Aug 1, 2018

That's the problem.

We can't tell if the device is not connect or is in standby. In the current state, there's no way to "guess" which is which.

So if the device isn't during the initial time period after it was connected (before the standby kicks in), we basically can't detect it.

@collinvine collinvine modified the milestones: Sprint 5, Sprint 6 Aug 2, 2018
@collinvine
Copy link
Author

@rdig I've uploaded the preloader visual that Karol just created.

@elenadimitrova elenadimitrova removed this from the Sprint 6 milestone Aug 6, 2018
@collinvine collinvine added the UI label Sep 27, 2018
@sprusr sprusr mentioned this issue Feb 15, 2020
2 tasks
@rdig
Copy link
Member

rdig commented Feb 17, 2020

Closing as we are going with different routes to alleviate this problem

@rdig rdig closed this as completed Feb 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants