diff --git a/frontend/src/lib/queryClient.ts b/frontend/src/lib/queryClient.ts new file mode 100644 index 0000000..998fe0f --- /dev/null +++ b/frontend/src/lib/queryClient.ts @@ -0,0 +1,12 @@ +import { QueryClient } from "@tanstack/react-query"; + +export const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: 1, + staleTime: 30_000, + gcTime: 30 * 60_000, + refetchOnWindowFocus: false, + }, + }, +}); diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index f62492a..1ba7f81 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -1,21 +1,11 @@ -import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { QueryClientProvider } from "@tanstack/react-query"; import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; import { BrowserRouter } from "react-router-dom"; import App from "./App"; import "./index.css"; - -const queryClient = new QueryClient({ - defaultOptions: { - queries: { - retry: 1, - staleTime: 30_000, - gcTime: 30 * 60_000, - refetchOnWindowFocus: false, - }, - }, -}); +import { queryClient } from "@/lib/queryClient"; createRoot(document.getElementById("root")!).render( diff --git a/frontend/src/store/auth.ts b/frontend/src/store/auth.ts index cd79ad7..d3d1ccb 100644 --- a/frontend/src/store/auth.ts +++ b/frontend/src/store/auth.ts @@ -1,6 +1,7 @@ import { create } from "zustand"; import { api, getToken, setToken } from "@/lib/api"; +import { queryClient } from "@/lib/queryClient"; import type { User } from "@/lib/types"; import { useE621 } from "@/store/e621"; @@ -24,6 +25,9 @@ export const useAuth = create((set) => ({ }); setToken(data.token); const user = await api("/api/auth/me/"); + // Never show the previous account's cached data to this one. + queryClient.clear(); + useE621.getState().clear(); set({ user, ready: true }); }, @@ -33,6 +37,8 @@ export const useAuth = create((set) => ({ json: { username, password }, }); setToken(data.token); + queryClient.clear(); + useE621.getState().clear(); set({ user: data.user, ready: true }); }, @@ -43,6 +49,7 @@ export const useAuth = create((set) => ({ // The token may already be invalid; clearing it locally is enough. } setToken(null); + queryClient.clear(); useE621.getState().clear(); set({ user: null, ready: true }); },