← Files BranchaARCHIVED FILE
skills/brancha/app/src/ui/hooks/useProjects.ts
682 Bytes · Oct 4, 2026 · 12:29 UTC
import { useCallback, useEffect, useState } from 'react';
import { api } from '../api';
import type { Project } from '../types';
export function useProjects() {
const [projects, setProjects] = useState<Project[]>([]);
const [loading, setLoading] = useState(true);
const reload = useCallback(() => api.listProjects()
.then(setProjects)
.catch(console.error)
.finally(() => setLoading(false)), []);
useEffect(() => { void reload(); }, [reload]);
useEffect(() => {
const events = new EventSource(api.eventsUrl());
events.onmessage = () => { void reload(); };
return () => events.close();
}, [reload]);
return { projects, loading, reload };
}
SHA-256: fdce7c0376243ec10cb7d72c532add3579a65ab8fb3b3e35a7fd5c5726aa7273