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

Replace 'Choose a displayname' dialogue with a dialogue to choose a MXID #3604

Closed
lampholder opened this issue Apr 11, 2017 · 9 comments
Closed

Comments

@lampholder
Copy link
Member

lampholder commented Apr 11, 2017

The details of the new guest experience for Riot are on the project plan: element-hq/riot-meta#59

Instead of prompting unregistered users to pick a display name (for their automatically-generated @guest_123456:matrix.org mxid), instead we will invite users to pick a new mxid (for now throwing away their generated guest ID, which is fine because it won't have been allowed to say anything).

This dialogue should handle 'username in use' gracefully, ideally checking username availability in real time.

@lampholder
Copy link
Member Author

lampholder commented Apr 11, 2017

Some UX suggestions:

Invitation to choose a username:
set_username

Appearance if chosen username is available:
set_username_available

Appearance if chosen username is unavailable:
set_username_unavailable

Outstanding things to consider:

  • When we check availability (with every keypress? After n seconds?)
  • How we communicate permitted/otherwise characters (on keypress? Does it need to go into the prose?)

@lampholder lampholder added the pm label Apr 12, 2017
@lampholder lampholder added this to the RW003 milestone Apr 24, 2017
@lukebarnard1 lukebarnard1 changed the title Improve Landing as Guest: Replace 'Choose a displayname' dialogue with a dialogue to choose a MXID Replace 'Choose a displayname' dialogue with a dialogue to choose a MXID Apr 25, 2017
@lukebarnard1
Copy link
Contributor

This will require Riot to be able to generate user passwords: #3600

@lampholder
Copy link
Member Author

@AmandineLP @ara4n - what are your thoughts on the proposed wording/UX?

@ara4n
Copy link
Member

ara4n commented May 4, 2017

So, i think this was a bit too wordy and scary, and I don't think we should be exposing MXIDs so aggressively to new users. How about:


To get started, please pick a username!

 _________________________

This will be your account name on the $foo homeserver, or you can pick a different server.


After picking a username, we'd obviously do whatever captcha dance is needed (if configured).

  • We show this whenever the user is moving from read-only (i.e. 'guest') to read-write mode. In practice:
    • If they followed permalink of some kind, it's the point that they hit 'join' to actually join the room - i.e. the point we currently say "Please pick a display name" for Guests
    • If they just entered riot.im/app itself, the app will immediately show this prompt (over a 'blank' UI), and having created the account, the app will prod RiotBot to send an invite to the new user, which the app will autoaccept, and so the first screen the user sees will be RiotBot.
    • Alternatively, if the Riot deployment doesn't want to use RiotBot, then they should probably dump the user into RoomDirectory by default or a welcome page (re-add welcome_page option so that folks running their own riots without RTS can have a welcome page #3806, or the RTS welcome page).

For RTS:

  • The user is dumped into the RTS as a guest (i.e. read-only mode). The LeftPanel is empty.
  • If they try to join a room, then they get bumped to the full login flow - which prompts them for mxid, an email, auths them to join the team, does captcha.
  • Having logged them in, we return them to the RTS Welcome Page, autojoin the RTS-defined rooms, and prod RiotBot to invite the user. (Alternatively we could route them to RiotBot; unsure which).

@lukebarnard1 lukebarnard1 self-assigned this May 5, 2017
@lukebarnard1
Copy link
Contributor

lukebarnard1 commented May 8, 2017

@lukebarnard1
Copy link
Contributor

lukebarnard1 commented May 10, 2017

@ara4n I'm not sure what different server is supposed to do.

This is what I've got so far:
gifrecord_2017-05-10_113827

lukebarnard1 pushed a commit to matrix-org/matrix-react-sdk that referenced this issue May 10, 2017
Requires matrix-org/matrix-js-sdk#432 for availability checking.

Changes:
 - Redesign the dialog to look more like element-hq/element-web#3604 (comment)
 - Attempt to fix wrong password being stored by generating one per SetMxIdDialog (there's no issue tracking this for now, I shall open one if it persists)
 - Backwards compatible with servers that don't support register/availability - a spinner will appear the first time a username is checked because server support can only be determined after a request.
 - Rate-limited by a 2s debounce
 - General style improvements
@lampholder
Copy link
Member Author

In terms of user flow, we decided that users who want to sign in to a different server should go via the existing registration flow (there's no need for the streamlined signup to account for less common usecases, at least to begin with).

That said, it's clear that we're missing a non-jarring way to get them there.

Clicking on different server might:

  • dump you straight on https://riot.im/develop/#/register perhaps with the custom server bit preopened
  • expand a hidden paragraph explaining what's going on and how you need to go via the standard registration for a custom homeserver
  • link to a blog post/video explaining about custom servers and how you need to go to https://riot.im/develop/#/register to use them

Any other thoughts?

@lukebarnard1
Copy link
Contributor

lukebarnard1 commented May 11, 2017

dump you straight on https://riot.im/develop/#/register

Is now the current behaviour, FTR. I'd vote for a text box to update it TBH.

@lukebarnard1
Copy link
Contributor

lukebarnard1 commented May 11, 2017

What happens once the user has chosen a username?

  1. Riot retries the same action but with the new user session
  2. Show the RiotBot or if unconfigured, the room directory?

Answer: For now, we'll go with number 2 because we'd have to rewrite our Modal implementation to be promise-y and do other non-trivial things to do number 1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants