← Files BranchaARCHIVED FILE

skills/brancha/app/src/ui/hooks/useProjectTree.ts

623 Bytes · Oct 5, 2026 · 18:29 UTC

↓ Download file

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