@@ -11,9 +11,11 @@ import {
1111 Appearance ,
1212 AuthOptions ,
1313 AuthState ,
14+ AuthTokenOptions ,
1415 SettingsState ,
1516} from '../types' ;
16- import { authGitHub , getToken } from '../utils/auth' ;
17+ import { apiRequestAuth } from '../utils/api-requests' ;
18+ import { addAccount , authGitHub , getToken } from '../utils/auth' ;
1719import { clearState , loadState , saveState } from '../utils/storage' ;
1820import { setAppearance } from '../utils/appearance' ;
1921import { setAutoLaunch } from '../utils/comms' ;
@@ -39,6 +41,7 @@ interface AppContextState {
3941 isLoggedIn : boolean ;
4042 login : ( ) => void ;
4143 loginEnterprise : ( data : AuthOptions ) => void ;
44+ validateToken : ( data : AuthTokenOptions ) => void ;
4245 logout : ( ) => void ;
4346
4447 notifications : AccountNotifications [ ] ;
@@ -110,16 +113,31 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => {
110113 const { token } = await getToken ( authCode ) ;
111114 setAccounts ( { ...accounts , token } ) ;
112115 saveState ( { ...accounts , token } , settings ) ;
113- } , [ accounts ] ) ;
116+ } , [ accounts , settings ] ) ;
114117
115118 const loginEnterprise = useCallback (
116119 async ( data : AuthOptions ) => {
117120 const { authOptions, authCode } = await authGitHub ( data ) ;
118- const { token } = await getToken ( authCode , authOptions ) ;
119- setAccounts ( { ...accounts , token } ) ;
120- saveState ( { ...accounts , token } , settings ) ;
121+ const { token, hostname } = await getToken ( authCode , authOptions ) ;
122+ const updatedAccounts = addAccount ( accounts , token , hostname ) ;
123+ setAccounts ( updatedAccounts ) ;
124+ saveState ( updatedAccounts , settings ) ;
125+ } ,
126+ [ accounts , settings ]
127+ ) ;
128+
129+ const validateToken = useCallback (
130+ async ( { token, hostname } : AuthTokenOptions ) => {
131+ await apiRequestAuth (
132+ `https://api.${ hostname } /notifications` ,
133+ 'HEAD' ,
134+ token
135+ ) ;
136+ const updatedAccounts = addAccount ( accounts , token , hostname ) ;
137+ setAccounts ( updatedAccounts ) ;
138+ saveState ( updatedAccounts , settings ) ;
121139 } ,
122- [ accounts ]
140+ [ accounts , settings ]
123141 ) ;
124142
125143 const logout = useCallback ( ( ) => {
@@ -169,6 +187,7 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => {
169187 isLoggedIn,
170188 login,
171189 loginEnterprise,
190+ validateToken,
172191 logout,
173192
174193 notifications,
0 commit comments