@@ -10,10 +10,12 @@ import {
1010interface State {
1111 emailAddress : string ;
1212 isLoginValidated : boolean ;
13+ isLoggedInToNonAnonymousAccount : boolean ;
1314 isFollowMagicLinkMessageVisible : boolean ;
1415 isVerifyEmailMessageVisible : boolean ;
1516 isEmailUpdatedMessageVisible : boolean ;
1617 isAccountDoesNotExistMessageVisible : boolean ;
18+ isNewAccountCreatedMessageVisible : boolean ;
1719 isLoadingMe : boolean ;
1820}
1921
@@ -25,7 +27,7 @@ interface Actions {
2527 newEmailBehavior,
2628 } : {
2729 requireVerifiedEmail : boolean ;
28- newEmailBehavior ?: 'update' | 'reject' ;
30+ newEmailBehavior ?: 'update' | 'reject' | 'create' ;
2931 } ) => void ;
3032 logout : ( ) => void ;
3133}
@@ -34,24 +36,30 @@ const useLoginStore = create(
3436 immer < State & Actions > ( ( set , get ) => ( {
3537 emailAddress : '' ,
3638 isLoginValidated : false ,
39+ isLoggedInToNonAnonymousAccount : false ,
3740 isFollowMagicLinkMessageVisible : false ,
3841 isVerifyEmailMessageVisible : false ,
3942 isEmailUpdatedMessageVisible : false ,
4043 isAccountDoesNotExistMessageVisible : false ,
44+ isNewAccountCreatedMessageVisible : false ,
4145 isLoadingMe : false ,
4246
4347 initialize : ( ) => {
4448 set ( ( draft ) => {
4549 draft . isLoginValidated = false ;
50+ draft . isLoggedInToNonAnonymousAccount = false ;
4651 draft . isLoadingMe = true ;
4752 } ) ;
4853 getMe ( )
4954 . then ( ( me ) => {
5055 set ( ( draft ) => {
5156 draft . emailAddress = me . email || '' ;
57+ // If getMe returns an email, the user is logged in to a non-anonymous account
58+ draft . isLoggedInToNonAnonymousAccount = ! ! me . email ;
5259 draft . isFollowMagicLinkMessageVisible = false ;
5360 draft . isVerifyEmailMessageVisible = false ;
5461 draft . isEmailUpdatedMessageVisible = false ;
62+ draft . isNewAccountCreatedMessageVisible = false ;
5563 } ) ;
5664 } )
5765 . catch ( ( err : unknown ) => {
@@ -70,6 +78,7 @@ const useLoginStore = create(
7078 draft . isFollowMagicLinkMessageVisible = false ;
7179 draft . isEmailUpdatedMessageVisible = false ;
7280 draft . isLoginValidated = false ;
81+ // Don't reset isLoggedInToNonAnonymousAccount here as it's based on the server state
7382 } ) ;
7483 } ,
7584
@@ -89,11 +98,13 @@ const useLoginStore = create(
8998 ) ;
9099 if (
91100 outcome === LoginOutcome . AlreadyAuthenticated ||
92- outcome === LoginOutcome . UpdatedEmailOnAuthenticatedAccount
101+ outcome === LoginOutcome . UpdatedEmailOnAuthenticatedAccount ||
102+ outcome === LoginOutcome . CreatedNewAccount
93103 ) {
94104 set ( ( draft ) => {
95105 // We stay logged into the current account and can proceed
96106 draft . isLoginValidated = true ;
107+ draft . isLoggedInToNonAnonymousAccount = true ;
97108 draft . isFollowMagicLinkMessageVisible = false ;
98109 draft . isVerifyEmailMessageVisible = false ;
99110 } ) ;
@@ -102,6 +113,11 @@ const useLoginStore = create(
102113 draft . isEmailUpdatedMessageVisible = true ;
103114 } ) ;
104115 }
116+ if ( outcome === LoginOutcome . CreatedNewAccount ) {
117+ set ( ( draft ) => {
118+ draft . isNewAccountCreatedMessageVisible = true ;
119+ } ) ;
120+ }
105121 } else if ( outcome === LoginOutcome . SentLinkToExistingAccount ) {
106122 set ( ( draft ) => {
107123 // The user must follow the link to log into another account, or verify their email
0 commit comments