import { cookieHelper } from "@/libs/helpers/cookie-helper"; import { storageManager } from "@/libs/storage-manager"; import type { IUser } from "@/models/user.model"; import { useAuthStore } from "@/store/auth-store/use-auth-store"; export const useAuth = () => { const authStore = useAuthStore(); function setAuth(variables: { accessToken: string }) { authStore.setAuthData({ tokenInfo: { accessToken: variables.accessToken }, }); storageManager.set("auth", { token: variables.accessToken }); } function setUser(user: IUser) { authStore.setAuthData({ user, tokenInfo: authStore.tokenInfo, }); } function initialize() { authStore.setAuthStatus("progress"); const authData = storageManager.get("auth"); if (authData) { authStore.setAuthData({ tokenInfo: { accessToken: authData.token } }); } else { authStore.setAuthStatus("done"); } } function logout() { storageManager.delete("auth"); cookieHelper.delete("client-token"); authStore.setAuthData({ tokenInfo: null, user: null }); window.location.href = "/auth"; } return { setAuth, setUser, isAuthenticated: authStore.isAuthenticated, initialize, token: authStore.tokenInfo, isReady: authStore.status === "done", user: authStore.user, logout, }; };