feat: user context

This commit is contained in:
Stavros
2025-05-09 17:39:14 +03:00
parent 31a7b0ff06
commit 41c63e5b49
10 changed files with 129 additions and 46 deletions

View File

@@ -1,6 +1,6 @@
import { AppContextSchema } from "@/schemas/app-context-schema";
import { createContext, useContext } from "react";
import { useQuery } from "@tanstack/react-query";
import { useSuspenseQuery } from "@tanstack/react-query";
import axios from "axios";
const AppContext = createContext<AppContextSchema | null>(null);
@@ -10,16 +10,12 @@ export const AppContextProvider = ({
}: {
children: React.ReactNode;
}) => {
const { isPending, isError, data, error } = useQuery({
queryKey: ["status"],
const { isFetching, data, error } = useSuspenseQuery({
queryKey: ["app"],
queryFn: () => axios.get("/api/app").then((res) => res.data),
});
if (isPending) {
return;
}
if (isError) {
if (error && !isFetching) {
throw error;
}

View File

@@ -0,0 +1,35 @@
import { UserContextSchema } from "@/schemas/user-context-schema";
import { createContext, useContext } from "react";
import { useSuspenseQuery } from "@tanstack/react-query";
import axios from "axios";
const UserContext = createContext<UserContextSchema | null>(null);
export const UserContextProvider = ({
children,
}: {
children: React.ReactNode;
}) => {
const { isFetching, data, error } = useSuspenseQuery({
queryKey: ["user"],
queryFn: () => axios.get("/api/user").then((res) => res.data),
});
if (error && !isFetching) {
throw error;
}
return <UserContext.Provider value={data}>{children}</UserContext.Provider>;
};
export const useUserContext = () => {
const context = useContext(UserContext);
if (!context) {
throw new Error(
"useUserContext must be used within an UserContextProvider",
);
}
return context;
};