diff --git a/frontend/bun.lockb b/frontend/bun.lockb index 5d5bbf6..1dd4596 100755 Binary files a/frontend/bun.lockb and b/frontend/bun.lockb differ diff --git a/frontend/package.json b/frontend/package.json index 866e73a..460ee42 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,7 +14,7 @@ "@mantine/form": "^7.16.0", "@mantine/hooks": "^7.16.0", "@mantine/notifications": "^7.16.0", - "@tanstack/react-query": "4", + "@tanstack/react-query": "5", "axios": "^1.7.9", "i18next": "^25.0.0", "i18next-browser-languagedetector": "^8.0.4", diff --git a/frontend/src/components/auth/login-forn.tsx b/frontend/src/components/auth/login-forn.tsx index 4090a78..0f0616d 100644 --- a/frontend/src/components/auth/login-forn.tsx +++ b/frontend/src/components/auth/login-forn.tsx @@ -4,12 +4,12 @@ import { LoginFormValues, loginSchema } from "../../schemas/login-schema"; import { useTranslation } from "react-i18next"; interface LoginFormProps { - isLoading: boolean; + isPending: boolean; onSubmit: (values: LoginFormValues) => void; } export const LoginForm = (props: LoginFormProps) => { - const { isLoading, onSubmit } = props; + const { isPending, onSubmit } = props; const { t } = useTranslation(); const form = useForm({ @@ -27,7 +27,7 @@ export const LoginForm = (props: LoginFormProps) => { label={t("loginUsername")} placeholder="username" required - disabled={isLoading} + disabled={isPending} key={form.key("username")} {...form.getInputProps("username")} /> @@ -36,11 +36,11 @@ export const LoginForm = (props: LoginFormProps) => { placeholder="password" required mt="md" - disabled={isLoading} + disabled={isPending} key={form.key("password")} {...form.getInputProps("password")} /> - diff --git a/frontend/src/components/auth/oauth-buttons.tsx b/frontend/src/components/auth/oauth-buttons.tsx index ca295b3..6bffe15 100644 --- a/frontend/src/components/auth/oauth-buttons.tsx +++ b/frontend/src/components/auth/oauth-buttons.tsx @@ -5,13 +5,13 @@ import { OAuthIcon } from "../../icons/oauth"; interface OAuthButtonsProps { oauthProviders: string[]; - isLoading: boolean; + isPending: boolean; mutate: (provider: string) => void; genericName: string; } export const OAuthButtons = (props: OAuthButtonsProps) => { - const { oauthProviders, isLoading, genericName, mutate } = props; + const { oauthProviders, isPending, genericName, mutate } = props; return ( {oauthProviders.includes("google") && ( @@ -21,7 +21,7 @@ export const OAuthButtons = (props: OAuthButtonsProps) => { leftSection={} variant="default" onClick={() => mutate("google")} - loading={isLoading} + loading={isPending} > Google @@ -34,7 +34,7 @@ export const OAuthButtons = (props: OAuthButtonsProps) => { leftSection={} variant="default" onClick={() => mutate("github")} - loading={isLoading} + loading={isPending} > Github @@ -47,7 +47,7 @@ export const OAuthButtons = (props: OAuthButtonsProps) => { leftSection={} variant="default" onClick={() => mutate("generic")} - loading={isLoading} + loading={isPending} > {genericName} diff --git a/frontend/src/components/auth/totp-form.tsx b/frontend/src/components/auth/totp-form.tsx index d860c6e..3aa13fa 100644 --- a/frontend/src/components/auth/totp-form.tsx +++ b/frontend/src/components/auth/totp-form.tsx @@ -10,11 +10,11 @@ type FormValues = z.infer; interface TotpFormProps { onSubmit: (values: FormValues) => void; - isLoading: boolean; + isPending: boolean; } export const TotpForm = (props: TotpFormProps) => { - const { onSubmit, isLoading } = props; + const { onSubmit, isPending } = props; const form = useForm({ mode: "uncontrolled", @@ -32,7 +32,7 @@ export const TotpForm = (props: TotpFormProps) => { placeholder="" {...form.getInputProps("code")} /> - diff --git a/frontend/src/context/app-context.tsx b/frontend/src/context/app-context.tsx index 051697c..fc7b25f 100644 --- a/frontend/src/context/app-context.tsx +++ b/frontend/src/context/app-context.tsx @@ -1,4 +1,4 @@ -import { useQuery } from "@tanstack/react-query"; +import { useSuspenseQuery } from "@tanstack/react-query"; import React, { createContext, useContext } from "react"; import axios from "axios"; import { AppContextSchemaType } from "../schemas/app-context-schema"; @@ -14,7 +14,7 @@ export const AppContextProvider = ({ data: userContext, isLoading, error, - } = useQuery({ + } = useSuspenseQuery({ queryKey: ["appContext"], queryFn: async () => { const res = await axios.get("/api/app"); diff --git a/frontend/src/context/user-context.tsx b/frontend/src/context/user-context.tsx index b9011b9..7138827 100644 --- a/frontend/src/context/user-context.tsx +++ b/frontend/src/context/user-context.tsx @@ -1,4 +1,4 @@ -import { useQuery } from "@tanstack/react-query"; +import { useSuspenseQuery } from "@tanstack/react-query"; import React, { createContext, useContext } from "react"; import axios from "axios"; import { UserContextSchemaType } from "../schemas/user-context-schema"; @@ -14,7 +14,7 @@ export const UserContextProvider = ({ data: userContext, isLoading, error, - } = useQuery({ + } = useSuspenseQuery({ queryKey: ["userContext"], queryFn: async () => { const res = await axios.get("/api/user"); diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index 77098a8..a5ae8a3 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -19,13 +19,7 @@ import { TotpPage } from "./pages/totp-page.tsx"; import { AppContextProvider } from "./context/app-context.tsx"; import "./lib/i18n/i18n.ts"; -const queryClient = new QueryClient({ - defaultOptions: { - queries: { - suspense: true, - }, - }, -}); +const queryClient = new QueryClient(); createRoot(document.getElementById("root")!).render( diff --git a/frontend/src/pages/login-page.tsx b/frontend/src/pages/login-page.tsx index eaa6d88..d9a06e4 100644 --- a/frontend/src/pages/login-page.tsx +++ b/frontend/src/pages/login-page.tsx @@ -113,7 +113,7 @@ export const LoginPage = () => { @@ -128,7 +128,7 @@ export const LoginPage = () => { )} {configuredProviders.includes("username") && ( )} diff --git a/frontend/src/pages/logout-page.tsx b/frontend/src/pages/logout-page.tsx index edc597d..5ef6041 100644 --- a/frontend/src/pages/logout-page.tsx +++ b/frontend/src/pages/logout-page.tsx @@ -74,7 +74,7 @@ export const LogoutPage = () => { fullWidth mt="xl" onClick={() => logoutMutation.mutate()} - loading={logoutMutation.isLoading} + loading={logoutMutation.isPending} > {t("logoutTitle")} diff --git a/frontend/src/pages/totp-page.tsx b/frontend/src/pages/totp-page.tsx index 1724535..0a6afd6 100644 --- a/frontend/src/pages/totp-page.tsx +++ b/frontend/src/pages/totp-page.tsx @@ -57,7 +57,7 @@ export const TotpPage = () => { {t("totpTitle")} totpMutation.mutate(values)} />