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")}
/>
-
@@ -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")}
/>
-
+
Verify
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)}
/>