feat: refresh user session

This commit is contained in:
ValdiANS
2025-12-31 10:34:07 +07:00
parent 1b98e5d4d8
commit 57ef4109f7
2 changed files with 27 additions and 0 deletions
+12
View File
@@ -5,6 +5,7 @@ import useSWR from 'swr';
import { useAuth } from '@/services/hooks/useAuth';
import { httpClientFetcher, SWRHttpKey } from '@/services/http/client';
import { AuthApi } from '@/services/api/auth';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { BaseApiResponse, GetMeResponse } from '@/types/api/api-general';
import { AxiosError } from 'axios';
@@ -55,6 +56,17 @@ const RequireAuth = ({ children }: RequireAuthProps) => {
setIsLoadingUser(isLoadingUserResponse);
}, [isLoadingUserResponse]);
useEffect(() => {
const interval = setInterval(
async () => {
await AuthApi.refresh();
},
13 * 60 * 1000
);
return () => clearInterval(interval);
}, []);
if (
(isLoadingUserResponse && !userResponse && !userErrorResponse) ||
(!userResponse && !userErrorResponse)
+15
View File
@@ -18,6 +18,21 @@ export class AuthApiService {
return undefined;
}
}
async refresh() {
try {
const refreshRes = await httpClient<BaseApiResponse>(`/sso/refresh`, {
method: 'POST',
});
return refreshRes;
} catch (error) {
if (axios.isAxiosError<BaseApiResponse>(error)) {
return error.response?.data;
}
return undefined;
}
}
}
export const AuthApi = new AuthApiService();