1
1
import React from "react"
2
2
3
- import GoTrue , { User } from "gotrue-js"
3
+ import GoTrue , { User , Settings } from "gotrue-js"
4
4
5
5
type authChangeParam = ( user ?: User ) => string | void
6
6
@@ -10,6 +10,7 @@ interface NIProps {
10
10
onAuthChange ?: authChangeParam
11
11
}
12
12
13
+ export type Settings = Settings
13
14
export type User = User
14
15
export default function NetlifyIdentity ( { children, domain, onAuthChange } : NIProps ) {
15
16
return children ( useNetlifyIdentity ( domain , onAuthChange ) )
@@ -34,10 +35,15 @@ export function useNetlifyIdentity(domain: string, onAuthChange: authChangeParam
34
35
}
35
36
36
37
/******* external oauth */
37
- const loginExternalUrl = ( provider : string ) => goTrueInstance . loginExternalUrl ( provider )
38
- const acceptInviteExternalUrl = ( provider : string , token : string ) =>
38
+ type Provider = "bitbucket" | "facebook" | "github" | "gitlab" | "google"
39
+
40
+ const loginProvider = ( provider : Provider ) => {
41
+ const url = goTrueInstance . loginExternalUrl ( provider )
42
+ if ( window ) window . location . href = url
43
+ }
44
+ const acceptInviteExternalUrl = ( provider : Provider , token : string ) =>
39
45
goTrueInstance . acceptInviteExternalUrl ( provider , token )
40
- const settings = goTrueInstance . settings . bind ( goTrueInstance )
46
+ const settings : ( ) => Promise < Settings > = goTrueInstance . settings . bind ( goTrueInstance )
41
47
42
48
/******* OPERATIONS */
43
49
// make sure the Registration preferences under Identity settings in your Netlify dashboard are set to Open.
@@ -121,7 +127,7 @@ export function useNetlifyIdentity(domain: string, onAuthChange: authChangeParam
121
127
authedFetch,
122
128
_goTrueInstance : goTrueInstance ,
123
129
_domain : domain ,
124
- loginExternalUrl ,
130
+ loginProvider ,
125
131
acceptInviteExternalUrl,
126
132
settings
127
133
}
0 commit comments