60 lines
1.3 KiB
TypeScript
60 lines
1.3 KiB
TypeScript
import { authClient } from "@repo/auth/client";
|
|
import { config } from "@repo/config";
|
|
import { useQuery } from "@tanstack/react-query";
|
|
|
|
export const sessionQueryKey = ["user", "session"] as const;
|
|
|
|
export const useSessionQuery = () => {
|
|
return useQuery({
|
|
queryKey: sessionQueryKey,
|
|
queryFn: async () => {
|
|
const { data, error } = await authClient.getSession({
|
|
query: {
|
|
disableCookieCache: true,
|
|
},
|
|
});
|
|
|
|
if (error) {
|
|
throw new Error(error.message || "Failed to fetch session");
|
|
}
|
|
|
|
return data;
|
|
},
|
|
staleTime: Number.POSITIVE_INFINITY,
|
|
refetchOnWindowFocus: false,
|
|
retry: false,
|
|
enabled: config.ui.saas.enabled,
|
|
});
|
|
};
|
|
|
|
export const userAccountQueryKey = ["user", "accounts"] as const;
|
|
export const useUserAccountsQuery = () => {
|
|
return useQuery({
|
|
queryKey: userAccountQueryKey,
|
|
queryFn: async () => {
|
|
const { data, error } = await authClient.listAccounts();
|
|
|
|
if (error) {
|
|
throw error;
|
|
}
|
|
|
|
return data;
|
|
},
|
|
});
|
|
};
|
|
|
|
export const userPasskeyQueryKey = ["user", "passkeys"] as const;
|
|
export const useUserPasskeysQuery = () => {
|
|
return useQuery({
|
|
queryKey: userPasskeyQueryKey,
|
|
queryFn: async () => {
|
|
const { data, error } = await authClient.passkey.listUserPasskeys();
|
|
|
|
if (error) {
|
|
throw error;
|
|
}
|
|
|
|
return data;
|
|
},
|
|
});
|
|
};
|