-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Improve ICANN verification flow #15880
Conversation
Also @ranh this could use a copy review. |
Just checking -- do you need a copy review from @ranh, or from Editorial? (The "Needs Copy Review" label pings us.) |
Oh I see! I intended it for Ran but won't turn down more copy reviews but probably not necessary for two reviews :) |
Awesome stuff, @mikeshelton1503! 💟 |
A suggestion comes to mind - AFAIK, we shouldn't be using the global ("floating") notices for stuff like success notices. Maybe we could, for example, on success substitute the verification card with a nice, big green notice? |
Oh, this would be news to me. Where did you hear this? Seems to me that a floating notice is the perfect type for a quick acknowledgement of an action such as success. I was out of Calypso land for much of last year so I could have missed it. cc @folletto @drw158 I'm certainly not opposed to keeping the success acknowledgment inline within the verification card but wouldn't want to use a big green notice. It is a "successful" action but not a successful completion of the task since you need to check the email so we don't want to give the impression that you're done. |
I don't understand some of the changes you made to the copy. Can you explain why you changed the reason we give for the need to verify? I didn't know it was necessary to verify the contact information to make changes to the domain. Even if it is, most people will not want to make changes to their domain, so they may assume this message doesn't apply to them. The fact that the domain will stop working if not verified is probably going to be more relevant to most users. We can cut down on the term "verification". For example instead of "look for the verification message", we can say "look for our email", and instead of "resend verification email", we can just say "resend email". I tend to agree with @klimeryk, I don't think the global notice is a good fit here. Is there any specific reason to have one part of the UI in one area of the screen and another part of the same UI in an entirely different area? I think we would be better off with a much more subtle indication, near the button itself. |
I see now that this comes from #2478. And that I actually wrote the piece of copy in question 😂 However, the copy in that issue was meant specifically for the name servers screen, not the main domain screen. If users are on the name servers screen, it does make sense to assume they are trying to make changes, but on the main domain screen that assumption doesn't hold. So I think we're better off focusing on the domain getting suspended there. |
The patterns is actually exactly that: floating notices are for any quick confirmation of an action that requires text and has no other in-screen UI change going on. So yeah, I confirm:
That's the use of a global notice bubble. Note however that if there's a way to message this inside the page UI in a different way, like changing status on some of the UI blocks on the page to say "Email sent, waiting for reply [resend]" or something, then the UI itself will communicate that and there would be no need for a bubble notification. |
Well I think this is ideal though I'm not aware of any existing patterns for this. Are there any? Anyways I'll work on keeping it within the UI, I agree it makes the most sense here. |
Oh I see, that makes sense. I see now that is a separate step. There is also a version of the copy I edited that specifically for nameservers in the code. I updated that copy too. Anyways I'll update the nameservers step with this copy and add new copy for the main screen unless you have suggestions. |
It's not a pattern: it depends on the UI you're transforming to the informative temporary state. But you can also see our "Manage Purchases" screen as a UI that changes to different states depending on extra-UI factors, so that's another example probably. I hope it helps :) |
@folletto Thanks for explanation - my bad, I must have remembered wrongly some comment or misinterpreted it. I think it was #3150 (comment) - on of my first Calypso PRs... I thought that Matias meant that we should avoid global notices completely, but reading that again, he meant that about the old |
Ah yes, you got caught up in the period where we were transitioning that pattern. Sorry! |
Ok I've made some changes based on the above feedback. Instead of using a success notice bubble, I switched to an inline method using statuses. There are now two statuses: When a user first visit domain section they will see this, which is the When a user clicks "Send Again" the button will go to disabled state and the button copy will change to "Sending ...". Once the action is complete, the contents of the status bar fade out and a new status fades in. This is the I just pushed up changes to put this new structure in place but I'll need help with the functionality as described above. cc @klimeryk I also have some responsive issues to clean up. |
These notices look great, I really like how you incorporated the status indicator inside the notice. The big button for "send again" makes it seem like it's the obvious next action - is that intentional? If we want to make sure that users will have a new email from us and not have to dig through the archives for the one we sent after purchase, we can just resend the email automatically when we show the notice, rather than add an extra step for it. This might be nitpicking, but I still think that users may end up clicking the "send again" button and thinking they were done. The green icon, disabled button and "email sent" text can be confusing, but even without them, just the fact that users "acted" on the notice in some way may be enough to have them skip the actual verification altogether. That's why it may be better to not have a prominent next action to do on this screen, so that it's very clear that the next action actually has to be done elsewhere. |
b1f5faa
to
10a984e
Compare
Props to @hewsut for the implementation, fixed two issues (the first one was preventing it from working at all, it seems): Turns out you can't mix string and array notation in the lodash' `get`. Fixed typo in prop's name (`requesting` -> `isRequesting`).
And that's OK - so let's update the propTypes to reflect that.
5d11864
to
ac6f268
Compare
I've pushed one more small fix (nothing impacting design/logic, just developer stuff) and rebased with master because in the meantime there's been a pretty important update to webpack 3 which might break some stuff (though, that's just me being overly cautious). |
@hewsut No worries, I've noticed that it's not used anywhere ATM, so of course some regression might creep in. It was just funny to see that it's not actually working after all that feedback and code reviews - rule #1 of code reviews: actually run the code 😜 And, of course, kudos on Reduxifying it in the first place, I know it must have been a beast to implement. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Minor comments.
@@ -30,6 +30,6 @@ QueryWhois.propTypes = { | |||
}; | |||
|
|||
export default connect( | |||
( state, { domain } ) => ( { requesting: isRequestingWhois( state, domain ) } ), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ow wow. Good job catching this.
( state, ownProps ) => ( { | ||
contactDetails: getRegistrantWhois( state, ownProps.selectedDomainName ), | ||
} ), | ||
dispatch => bindActionCreators( { errorNotice, successNotice }, dispatch ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think you need to do this anymore. If you just pass
{ errorNotice, successNotice }
it will automagically bind: https://github.com/Automattic/wp-calypso/pull/15058/files#diff-9b3dc846fe889e4ab5d78da8b44490ddR208
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TIL, thanks! Also, while fixing this I remembered that successNotice
is no longer used and can be removed 😀
|
||
this.setState( { submitting: true } ); | ||
|
||
upgradesActions.resendIcannVerification( this.props.selectedDomainName, ( error ) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be amazing if we move this to redux
as part of the refactor. Your call.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, but let's not do this in this PR. The discussion has been long enough and this refactor and subsequent testing would block this for another few days and I don't want to block Mike for that long. It might be a good idea for a mob programming session, though :)
Also, `successNotice` is no longer used.
Also remove global override for `.notice__text` (added in #15880)
* Domains: remove unused .icann-verification styles The stylesheet was duplicated/migrated to `email-verification` in #19577 but never removed. * Domains: migrate .email-verification CSS styles to webpack Also remove global override for `.notice__text` (added in #15880) * Domains: shorten the import path of IcannVerificationCard component
Fixes #2478 #13231
Also as a bonus, added a fix for #6098
This improves the presentation of the ICANN email verification step.
Changes:
How to test: