feat(api): authentication
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
"use client";
|
||||
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { useEffect } from "react";
|
||||
|
||||
import { useUserStore } from "#dashboard/stores/user-store";
|
||||
import { useTRPC } from "#dashboard/trpc/client";
|
||||
|
||||
export function useUser() {
|
||||
const trpc = useTRPC();
|
||||
const { user, setUser } = useUserStore();
|
||||
|
||||
const queryOptions = trpc.auth.session.queryOptions();
|
||||
const query = useQuery({
|
||||
...queryOptions,
|
||||
enabled: queryOptions.enabled ?? !user,
|
||||
staleTime: queryOptions.staleTime ?? 5 * 60 * 1000,
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (query.data) {
|
||||
setUser(query.data);
|
||||
} else if (query.isError) {
|
||||
setUser(null);
|
||||
}
|
||||
}, [query.data, query.isError, setUser]);
|
||||
|
||||
return {
|
||||
...query,
|
||||
setUser,
|
||||
user,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user