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 }; }