feat(web): add durable control-plane event updates

This commit is contained in:
chick
2026-07-17 18:31:07 +08:00
parent 6e817f380a
commit be1741c2f8
10 changed files with 745 additions and 4 deletions
+4 -3
View File
@@ -20,6 +20,7 @@ export interface FleetDataSource {
export interface FleetPageProps {
readonly dataSource?: FleetDataSource;
readonly initialData?: FleetSnapshot;
readonly refreshSignal?: number;
}
const EMPTY_SNAPSHOT: FleetSnapshot = { instances: [], statuses: new Map() };
@@ -54,7 +55,7 @@ export function canonicalHttpOrigin(value: string): string | null {
}
}
export function FleetPage({ dataSource, initialData }: FleetPageProps) {
export function FleetPage({ dataSource, initialData, refreshSignal = 0 }: FleetPageProps) {
const [snapshot, setSnapshot] = useState<FleetSnapshot | null>(initialData ?? null);
const [error, setError] = useState<string | null>(null);
const [attempt, setAttempt] = useState(0);
@@ -76,7 +77,7 @@ export function FleetPage({ dataSource, initialData }: FleetPageProps) {
const selectAllRef = useRef<HTMLInputElement>(null);
useEffect(() => {
if (initialData) {
if (initialData && refreshSignal === 0) {
setSnapshot(initialData);
setError(null);
return;
@@ -100,7 +101,7 @@ export function FleetPage({ dataSource, initialData }: FleetPageProps) {
return () => {
active = false;
};
}, [attempt, dataSource, initialData]);
}, [attempt, dataSource, initialData, refreshSignal]);
const model = useMemo(
() =>