@@ -39,6 +39,8 @@ const defaultSettings = {
39
39
40
40
const errors = {
41
41
noUserFound : 'No current user found - are you logged in?' ,
42
+ noUserTokenFound : 'no user token found' ,
43
+ noRecoveryTokenFound : 'no recovery token found' ,
42
44
} ;
43
45
44
46
type MaybeUserPromise = Promise < User | undefined > ;
@@ -61,10 +63,7 @@ export type ReactNetlifyIdentityAPI = {
61
63
) => MaybeUserPromise ;
62
64
logoutUser : ( ) => MaybeUserPromise ;
63
65
requestPasswordRecovery : ( email : string ) => Promise < void > ;
64
- recoverAccount : (
65
- token : string ,
66
- remember ?: boolean | undefined
67
- ) => Promise < User > ;
66
+ recoverAccount : ( remember ?: boolean | undefined ) => MaybeUserPromise ;
68
67
updateUser : ( fields : { data : object } ) => MaybeUserPromise ;
69
68
getFreshJWT : ( ) => Promise < string > ;
70
69
authedFetch : {
@@ -190,7 +189,7 @@ export function useNetlifyIdentity(
190
189
) =>
191
190
goTrueInstance . signup ( email , password , data ) . then ( user => {
192
191
if ( directLogin ) {
193
- _setUser ( user ) ;
192
+ return _setUser ( user ) ;
194
193
}
195
194
196
195
return user ;
@@ -210,9 +209,18 @@ export function useNetlifyIdentity(
210
209
) ;
211
210
212
211
const recoverAccount = useCallback (
213
- ( token : string , remember ?: boolean | undefined ) =>
214
- goTrueInstance . recover ( token , remember ) ,
215
- [ goTrueInstance ]
212
+ ( remember ?: boolean | undefined ) => {
213
+ if ( ! param . token ) {
214
+ throw new Error ( errors . noRecoveryTokenFound ) ;
215
+ }
216
+
217
+ return goTrueInstance . recover ( param . token , remember ) . then ( user => {
218
+ // clean up consumed token
219
+ setParam ( defaultParam ) ;
220
+ return _setUser ( user ) ;
221
+ } ) ;
222
+ } ,
223
+ [ goTrueInstance , _setUser , param ]
216
224
) ;
217
225
218
226
const updateUser = useCallback (
@@ -249,7 +257,7 @@ export function useNetlifyIdentity(
249
257
options : RequestInit = { }
250
258
) => {
251
259
if ( ! user ?. token ?. access_token ) {
252
- throw new Error ( 'no user token found' ) ;
260
+ throw new Error ( errors . noUserTokenFound ) ;
253
261
}
254
262
255
263
const defaultObj = {
0 commit comments