diff --git a/src/AuthContext/AuthContextProvider.tsx b/src/AuthContext/AuthContextProvider.tsx index 9592a2d..8696490 100644 --- a/src/AuthContext/AuthContextProvider.tsx +++ b/src/AuthContext/AuthContextProvider.tsx @@ -4,10 +4,16 @@ import {AxiosError} from "axios" import {decrypt, readMessage, readPrivateKey} from "openpgp" import {useNavigate} from "react-router-dom" -import {useMutation} from "@tanstack/react-query" +import {useMutation, useQuery} from "@tanstack/react-query" -import {ServerUser, User} from "~/server-types" -import {REFRESH_TOKEN_URL, RefreshTokenResult, logout as logoutUser, refreshToken} from "~/apis" +import {AuthenticationDetails, ServerUser, User} from "~/server-types" +import { + REFRESH_TOKEN_URL, + RefreshTokenResult, + getMe, + logout as logoutUser, + refreshToken, +} from "~/apis" import {client} from "~/constants/axios-client" import {decryptString, encryptString} from "~/utils" import {ExtensionKleckEvent} from "~/extension-types" @@ -126,6 +132,12 @@ export default function AuthContextProvider({children}: AuthContextProviderProps [user?.encryptedPassword], ) + useQuery(["get_me"], getMe, { + refetchOnWindowFocus: "always", + refetchOnReconnect: "always", + retry: 2, + }) + const value = useMemo( () => ({ user: user ?? null, diff --git a/src/apis/get-me.ts b/src/apis/get-me.ts new file mode 100644 index 0000000..c211f00 --- /dev/null +++ b/src/apis/get-me.ts @@ -0,0 +1,10 @@ +import {AuthenticationDetails} from "~/server-types" +import {client} from "~/constants/axios-client" + +export default async function getMe(): Promise { + const {data} = await client.get(`${import.meta.env.VITE_SERVER_BASE_URL}/v1/account/me`, { + withCredentials: true, + }) + + return data +} diff --git a/src/apis/index.ts b/src/apis/index.ts index c6681b4..81a7522 100644 --- a/src/apis/index.ts +++ b/src/apis/index.ts @@ -36,3 +36,5 @@ export * from "./update-alias" export {default as updateAlias} from "./update-alias" export * from "./delete-report" export {default as deleteReport} from "./delete-report" +export * from "./get-me" +export {default as getMe} from "./get-me" diff --git a/src/apis/refresh-token.ts b/src/apis/refresh-token.ts index 9e6404c..8d05f55 100644 --- a/src/apis/refresh-token.ts +++ b/src/apis/refresh-token.ts @@ -9,7 +9,13 @@ export interface RefreshTokenResult { export const REFRESH_TOKEN_URL = `${import.meta.env.VITE_SERVER_BASE_URL}/v1/auth/refresh` export default async function refreshToken(): Promise { - const {data} = await client.post(REFRESH_TOKEN_URL) + const {data} = await client.post( + REFRESH_TOKEN_URL, + {}, + { + withCredentials: true, + }, + ) return data }