feat(app): add zustand store for session state management

This commit is contained in:
Mohamed Boudra
2025-11-27 21:36:03 +01:00
parent bf58e81ce8
commit 08dc2ed937
7 changed files with 142 additions and 121 deletions
@@ -1,20 +1,14 @@
import { useMemo } from "react";
import { useDaemonConnections } from "@/contexts/daemon-connections-context";
import type { SessionContextValue } from "@/contexts/session-context";
import { useSessionStore, type SessionData } from "@/stores/session-store";
export function useSessionDirectory(): Map<string, SessionContextValue> {
const { sessionSnapshots } = useDaemonConnections();
export function useSessionDirectory(): Map<string, SessionData> {
const sessions = useSessionStore((state) => state.sessions);
return useMemo(() => {
const entries = new Map<string, SessionContextValue>();
sessionSnapshots.forEach((snapshot, serverId) => {
entries.set(serverId, snapshot);
});
return entries;
}, [sessionSnapshots]);
return new Map<string, SessionData>(Object.entries(sessions));
}, [sessions]);
}
export function useSessionForServer(serverId: string | null): SessionContextValue | null {
const { sessionSnapshots } = useDaemonConnections();
return serverId ? sessionSnapshots.get(serverId) ?? null : null;
export function useSessionForServer(serverId: string | null): SessionData | null {
return useSessionStore((state) => (serverId ? state.sessions[serverId] ?? null : null));
}