@@ -32,14 +32,16 @@ export interface UserStore {
3232 setSelectedOrg : ( orgId : string ) => void ;
3333 orgDatasets : Resource < DatasetAndUsage [ ] > ;
3434 deselectOrg : ( ) => void ;
35- login : ( ) => void ;
35+ login : ( ) => Promise < void > ;
3636 logout : ( ) => void ;
3737}
3838
3939export const UserContext = createContext < UserStore > ( {
4040 user : ( ) => null as unknown as SlimUser ,
4141 isNewUser : ( ) => false ,
42- login : ( ) => { } ,
42+ login : ( ) => {
43+ return Promise . resolve ( ) ;
44+ } ,
4345 setSelectedOrg : ( ) => { } ,
4446 orgDatasets : null as unknown as Resource < DatasetAndUsage [ ] > ,
4547 deselectOrg : ( ) => { } ,
@@ -79,49 +81,45 @@ export const UserContextWrapper = (props: UserStoreContextProps) => {
7981 } ) ;
8082 } ;
8183
82- const login = ( ) => {
83- fetch ( `${ apiHost } /auth/me` , {
84- credentials : "include" ,
85- } )
86- . then ( ( res ) => {
87- if ( res . status === 401 ) {
88- window . location . href = `${ apiHost } /auth?redirect_uri=${ window . origin } /` ;
84+ const login = async ( ) => {
85+ try {
86+ const res = await fetch ( `${ apiHost } /auth/me` , {
87+ credentials : "include" ,
88+ } ) ;
89+ if ( res . status === 401 ) {
90+ window . location . href = `${ apiHost } /auth?redirect_uri=${ window . origin } /` ;
91+ }
92+ const data = ( await res . json ( ) ) as SlimUser ;
93+ // cache the user
94+ window . localStorage . setItem ( "trieve:user" , JSON . stringify ( data ) ) ;
95+
96+ // Grab org id from localstorage
97+ const possibleOrgId = window . localStorage . getItem (
98+ `${ data . id } :selectedOrg` ,
99+ ) ;
100+ if ( possibleOrgId ) {
101+ const matchingOrg = data . orgs . find ( ( org ) => org . id === possibleOrgId ) ;
102+ if ( matchingOrg ) {
103+ setSelectedOrganization ( matchingOrg ) ;
89104 }
90- return res . json ( ) ;
91- } )
92- . then ( ( data : SlimUser ) => {
93- // cache the user
94- window . localStorage . setItem ( "trieve:user" , JSON . stringify ( data ) ) ;
95-
96- // Grab org id from localstorage
97- const possibleOrgId = window . localStorage . getItem (
98- `${ data . id } :selectedOrg` ,
99- ) ;
100- if ( possibleOrgId ) {
101- const matchingOrg = data . orgs . find ( ( org ) => org . id === possibleOrgId ) ;
102- if ( matchingOrg ) {
103- setSelectedOrganization ( matchingOrg ) ;
104- }
105+ } else {
106+ const firstOrg = data . orgs . at ( 0 ) ;
107+ if ( firstOrg ) {
108+ setSelectedOrganization ( firstOrg ) ;
105109 } else {
106- const firstOrg = data . orgs . at ( 0 ) ;
107- if ( firstOrg ) {
108- setSelectedOrganization ( firstOrg ) ;
109- } else {
110- redirect ( "/dashboard/new_user" ) ;
111- }
110+ redirect ( "/dashboard/new_user" ) ;
112111 }
113-
114- setUser ( data ) ;
115- } )
116- . catch ( ( err ) => {
117- setUser ( null ) ;
118- console . error ( err ) ;
119- createToast ( {
120- title : "Error" ,
121- type : "error" ,
122- message : "Error logging in" ,
123- } ) ;
112+ }
113+ setUser ( data ) ;
114+ } catch ( err ) {
115+ setUser ( null ) ;
116+ console . error ( err ) ;
117+ createToast ( {
118+ title : "Error" ,
119+ type : "error" ,
120+ message : "Error logging in" ,
124121 } ) ;
122+ }
125123 } ;
126124
127125 createEffect ( ( ) => {
@@ -151,7 +149,7 @@ export const UserContextWrapper = (props: UserStoreContextProps) => {
151149 } ;
152150
153151 createEffect ( ( ) => {
154- login ( ) ;
152+ void login ( ) ;
155153 } ) ;
156154
157155 const deselectOrg = ( ) => {
0 commit comments