fix: parse login

This commit is contained in:
2026-08-11 23:10:00 +07:00
parent d82255bc5b
commit b44092153d
9 changed files with 81 additions and 26 deletions
+15 -7
View File
@@ -21,14 +21,14 @@ export const useAuthStore = create<AuthState>()((set) => ({
isInitializing: true,
login: async (email, password) => {
const { accessToken, user } = await authApi.login({ email, password });
tokenStorage.set(accessToken);
const { accessToken, refreshToken, user } = await authApi.login({ email, password });
tokenStorage.set(accessToken, refreshToken);
set({ user, isInitializing: false });
},
logout: async () => {
try {
await authApi.logout();
await authApi.logout(tokenStorage.getRefreshToken() ?? '');
} catch {
// Best-effort: always clear the local session, even if the API call fails.
} finally {
@@ -38,9 +38,15 @@ export const useAuthStore = create<AuthState>()((set) => ({
},
init: async () => {
const refreshToken = tokenStorage.getRefreshToken();
if (!refreshToken) {
tokenStorage.clear();
set({ user: null, isInitializing: false });
return;
}
try {
const { accessToken, user } = await authApi.refresh();
tokenStorage.set(accessToken);
const { accessToken, refreshToken: nextRefreshToken, user } = await authApi.refresh(refreshToken);
tokenStorage.set(accessToken, nextRefreshToken);
set({ user, isInitializing: false });
} catch {
tokenStorage.clear();
@@ -55,9 +61,11 @@ export const useAuthStore = create<AuthState>()((set) => ({
*/
registerAuthHandlers(
async () => {
const refreshToken = tokenStorage.getRefreshToken();
if (!refreshToken) return null;
try {
const { accessToken } = await authApi.refresh();
tokenStorage.set(accessToken);
const { accessToken, refreshToken: nextRefreshToken } = await authApi.refresh(refreshToken);
tokenStorage.set(accessToken, nextRefreshToken);
return accessToken;
} catch {
return null;