← Files BranchaARCHIVED FILE
skills/brancha/app/src/ui/hooks/useProjectTree.ts
623 Bytes · Oct 3, 2026 · 06:30 UTC
import { useCallback, useEffect, useState } from 'react';
import { api } from '../api';
import type { Tree } from '../types';
export function useProjectTree(projectId: string) {
const [tree, setTree] = useState<Tree | null>(null);
const reload = useCallback(() => { void api.tree(projectId).then(setTree).catch(console.error); }, [projectId]);
useEffect(() => { reload(); }, [reload]);
useEffect(() => {
const events = new EventSource(api.eventsUrl(projectId));
events.onmessage = reload;
return () => events.close();
}, [projectId, reload]);
return { tree, nodes: tree?.nodes ?? [], reload };
}
SHA-256: 3148043f170fb14b76f5f7a26d106e9e49c7e9be6a42845224e34dad41b01c1f