@@ -24,6 +24,7 @@ import {
24
24
SelectTrigger ,
25
25
SelectValue ,
26
26
} from '@socialincome/ui' ;
27
+ import { FirebaseError } from 'firebase/app' ;
27
28
import { createUserWithEmailAndPassword } from 'firebase/auth' ;
28
29
import { useRouter } from 'next/navigation' ;
29
30
import { useState } from 'react' ;
@@ -104,33 +105,41 @@ export function SuccessForm({
104
105
setSubmitting ( true ) ;
105
106
106
107
try {
107
- createUserWithEmailAndPassword ( auth , values . email , await rndString ( 16 ) ) . then ( ( { user } ) => {
108
- const data : UpdateUserData = {
109
- stripeCheckoutSessionId : stripeCheckoutSessionId ,
110
- user : {
111
- auth_user_id : user . uid ,
112
- email : values . email ,
113
- language : lang ,
114
- personal : {
115
- name : values . firstname ,
116
- lastname : values . lastname ,
117
- gender : values . gender ,
118
- referral : values . referral ,
119
- } ,
120
- address : {
121
- country : values . country ,
122
- } ,
108
+ const { user } = await createUserWithEmailAndPassword ( auth , values . email , await rndString ( 16 ) ) ;
109
+ const data : UpdateUserData = {
110
+ stripeCheckoutSessionId : stripeCheckoutSessionId ,
111
+ user : {
112
+ auth_user_id : user . uid ,
113
+ email : values . email ,
114
+ language : lang ,
115
+ personal : {
116
+ name : values . firstname ,
117
+ lastname : values . lastname ,
118
+ gender : values . gender ,
119
+ referral : values . referral ,
123
120
} ,
124
- } ;
125
- fetch ( '/api/user/update' , { method : 'POST' , body : JSON . stringify ( data ) } ) . then ( ( response ) => {
126
- if ( ! response . ok ) {
121
+ address : {
122
+ country : values . country ,
123
+ } ,
124
+ } ,
125
+ } ;
126
+ const response = await fetch ( '/api/user/update' , { method : 'POST' , body : JSON . stringify ( data ) } ) ;
127
+ if ( ! response . ok ) {
128
+ toast . error ( translations . updateUserError ) ;
129
+ }
130
+ router . push ( onSuccessURL ) ;
131
+ } catch ( error : unknown ) {
132
+ if ( error instanceof FirebaseError ) {
133
+ switch ( error . code ) {
134
+ case 'auth/email-already-in-use' :
135
+ router . push ( '/login' ) ;
136
+ break ;
137
+ default :
127
138
toast . error ( translations . updateUserError ) ;
128
- }
129
- router . push ( onSuccessURL ) ;
130
- } ) ;
131
- } ) ;
132
- } catch ( error ) {
133
- toast . error ( translations . updateUserError ) ;
139
+ break ;
140
+ }
141
+ }
142
+
134
143
setSubmitting ( false ) ;
135
144
}
136
145
} ;
0 commit comments