fix: simplify host status to online/offline and keep it live without a refresh

This commit is contained in:
LukeGus committed 2026-10-04 14:18:50 -05:00
1 parent 2646b649d7
commit 0a436ab3d8
48 files changed
+549 -789

No files matched your search

+12 -10
View File
@@ -46,7 +46,10 @@ import { invokeAction } from "@/shell/action-registry";
import { useSshAuthProviders } from "@/hooks/useSshAuthProviders";
import { useActionSlot } from "@/hooks/use-action-slot";
import { usePluginComponent } from "./component-registry";
import { useOptionalHostStatusEntry } from "@/lib/ServerStatusContext";
import {
getLiveHostStatus,
useOptionalHostStatusEntry,
} from "@/lib/ServerStatusContext";
/**
* Core permission groups, mirroring RESERVED_PERMISSION_PREFIXES in the SDK
@@ -370,12 +373,7 @@ export const pluginHostBridge: PluginHostBridge = {
usePluginComponent: (id) => usePluginComponent(id),
useHostStatus: (hostId) => {
const entry = useOptionalHostStatusEntry(hostId);
if (!entry) return null;
return {
status: entry.status === "degraded" ? "unknown" : entry.status,
...(entry.reason ? { reason: entry.reason } : {}),
};
return useOptionalHostStatusEntry(hostId);
},
useHostActions: () => useHostActions() as unknown as HostActionContribution[],
@@ -429,9 +427,13 @@ export const pluginHostBridge: PluginHostBridge = {
void setCookie(name, value, 365);
},
listHosts: async (pluginId) =>
(await getSSHHosts({ includeStatus: false })).map((host) =>
toPluginHostRecord(host, pluginId ?? null),
),
(await getSSHHosts()).map((host) => {
const status = getLiveHostStatus(host.id);
return toPluginHostRecord(
{ ...host, status, online: status === "online" },
pluginId ?? null,
);
}),
notifyHostsChanged: () => {
window.dispatchEvent(new CustomEvent("termix:hosts-changed"));
},