import { createContext, useContext } from 'react'; import React from 'react'; import type { Session, User } from '@documenso/prisma/client'; import type { TGetTeamByUrlResponse } from '../../server-only/team/get-team'; import type { TGetTeamsResponse } from '../../server-only/team/get-teams'; export type AppSession = { session: Session; user: User; // Todo: Remove password, and redundant fields. currentTeam: TGetTeamByUrlResponse | null; teams: TGetTeamsResponse; }; interface SessionProviderProps { children: React.ReactNode; session: AppSession | null; } const SessionContext = createContext(null); export const useSession = () => { const context = useContext(SessionContext); if (!context) { throw new Error('useSession must be used within a SessionProvider'); } return context; }; export const useOptionalSession = () => { return ( useContext(SessionContext) || { user: null, session: null, } ); }; export const SessionProvider = ({ children, session }: SessionProviderProps) => { return {children}; };