1+ /* eslint-disable react-refresh/only-export-components*/
12import React , { createContext , useContext , useState , type ReactNode } from 'react' ;
23
34type User = {
@@ -10,7 +11,7 @@ type AuthContextType = {
1011 user : User | null ;
1112 loading : boolean ;
1213 error : string | null ;
13- login : ( provider : " google" | " microsoft" ) => void ;
14+ login : ( provider : ' google' | ' microsoft' ) => void ;
1415 logout : ( ) => Promise < void > ;
1516 refreshUser : ( ) => Promise < void > ;
1617} ;
@@ -22,7 +23,6 @@ type AuthProviderProps = {
2223const AuthContext = createContext < AuthContextType | undefined > ( undefined ) ;
2324
2425export const AuthProvider : React . FC < AuthProviderProps > = ( { children } ) => {
25-
2626 const [ user , setUser ] = useState < User | null > ( null ) ;
2727 const [ loading , setLoading ] = useState < boolean > ( true ) ;
2828 const [ error , setError ] = useState < string | null > ( null ) ;
@@ -31,22 +31,18 @@ export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
3131 try {
3232 setLoading ( true ) ;
3333
34- const response = await fetch (
35- 'https://api.capyrpi.org/v1/auth/me' ,
36- {
37- headers : {
38- Accept : 'application/json'
39- }
40- }
41- ) ;
34+ const response = await fetch ( 'https://api.capyrpi.org/v1/auth/me' , {
35+ headers : {
36+ Accept : 'application/json' ,
37+ } ,
38+ } ) ;
4239
4340 if ( response . ok ) {
4441 const data : User = await response . json ( ) ;
4542 setUser ( data ) ;
4643 } else {
4744 setUser ( null ) ;
4845 }
49-
5046 } catch ( err : unknown ) {
5147 if ( err instanceof Error ) {
5248 console . error ( 'Failed to fetch user:' , err ) ;
@@ -57,105 +53,76 @@ export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
5753 }
5854
5955 setUser ( null ) ;
60-
6156 } finally {
6257 setLoading ( false ) ;
6358 }
6459 } ;
6560
66- const login = ( provider : "google" | "microsoft" ) : void => {
67-
61+ const login = ( provider : 'google' | 'microsoft' ) : void => {
6862 const url =
69- provider === " google"
70- ? " https://api.capyrpi.org/v1/auth/google"
71- : " https://api.capyrpi.org/v1/auth/microsoft" ;
63+ provider === ' google'
64+ ? ' https://api.capyrpi.org/v1/auth/google'
65+ : ' https://api.capyrpi.org/v1/auth/microsoft' ;
7266
73- window . open ( url , " _blank" ) ;
67+ window . open ( url , ' _blank' ) ;
7468
7569 const pollInterval = setInterval ( async ( ) => {
76-
7770 try {
78-
79- const response = await fetch (
80- 'https://api.capyrpi.org/v1/auth/me' ,
81- {
82- headers : {
83- Accept : 'application/json'
84- }
85- }
86- ) ;
71+ const response = await fetch ( 'https://api.capyrpi.org/v1/auth/me' , {
72+ headers : {
73+ Accept : 'application/json' ,
74+ } ,
75+ } ) ;
8776
8877 if ( response . ok ) {
89-
9078 const data : User = await response . json ( ) ;
9179 setUser ( data ) ;
9280 clearInterval ( pollInterval ) ;
93-
9481 }
95-
9682 } catch ( err : unknown ) {
97-
9883 if ( err instanceof Error ) {
9984 console . error ( 'Polling failed:' , err . message ) ;
10085 }
101-
10286 }
103-
10487 } , 3000 ) ;
10588
10689 setTimeout ( ( ) => {
10790 clearInterval ( pollInterval ) ;
10891 } , 120000 ) ;
10992 } ;
11093 const logout = async ( ) : Promise < void > => {
111-
11294 try {
113-
114- await fetch (
115- 'https://api.capyrpi.org/v1/auth/logout' ,
116- {
117- method : 'POST'
118- }
119- ) ;
95+ await fetch ( 'https://api.capyrpi.org/v1/auth/logout' , {
96+ method : 'POST' ,
97+ } ) ;
12098
12199 setUser ( null ) ;
122100
123101 window . location . href = '/app/' ;
124-
125102 } catch ( err : unknown ) {
126-
127103 if ( err instanceof Error ) {
128104 console . error ( 'Logout failed:' , err . message ) ;
129105 }
130-
131106 }
132-
133107 } ;
134108 const value : AuthContextType = {
135109 user,
136110 loading,
137111 error,
138112 login,
139113 logout,
140- refreshUser : fetchMe
114+ refreshUser : fetchMe ,
141115 } ;
142116
143- return (
144- < AuthContext . Provider value = { value } >
145- { children }
146- </ AuthContext . Provider >
147- ) ;
117+ return < AuthContext . Provider value = { value } > { children } </ AuthContext . Provider > ;
148118} ;
149119
150120export const useAuth = ( ) : AuthContextType => {
151-
152121 const context = useContext ( AuthContext ) ;
153122
154123 if ( ! context ) {
155- throw new Error (
156- 'useAuth must be used within an AuthProvider'
157- ) ;
124+ throw new Error ( 'useAuth must be used within an AuthProvider' ) ;
158125 }
159126
160127 return context ;
161- } ;
128+ } ;
0 commit comments