Files
home/Projects/kompose/news/apps/web/src/hooks/useSession.ts
2025-10-10 16:43:21 +02:00

38 lines
930 B
TypeScript

import { trpc } from "@/trpc";
import Cookies from "js-cookie";
import { useCallback, useEffect, useMemo } from "react";
import { useNavigate } from "react-router";
import { useLocalStorage } from "usehooks-ts";
export function useSession() {
const [orgId, setOrgId, removeOrgId] = useLocalStorage("orgId", "");
const user = trpc.user.me.useQuery();
const organization = useMemo(() => {
return (
user.data?.UserOrganizations.find((uo) => uo.organizationId === orgId)
?.Organization || null
);
}, [user.data, orgId]);
const navigate = useNavigate();
useEffect(() => {
if (!user.isLoading && !user.data) {
navigate("/");
}
if (!orgId) {
navigate("/");
}
}, [orgId, user.data, navigate, user.isLoading]);
const logout = useCallback(() => {
removeOrgId();
Cookies.remove("token");
window.location.href = "/";
}, [removeOrgId]);
return { orgId, setOrgId, user, organization, logout };
}