UNPKG

@coder/backstage-plugin-coder

Version:

Create and manage Coder workspaces from Backstage

65 lines (63 loc) 1.96 kB
const CODER_QUERY_KEY_PREFIX = "coder-backstage-plugin"; const sharedAuthQueryKey = [CODER_QUERY_KEY_PREFIX, "auth"]; const PENDING_REFETCH_INTERVAL_MS = 5e3; const BACKGROUND_REFETCH_INTERVAL_MS = 6e4; function getCoderWorkspacesRefetchInterval(workspaces2) { if (workspaces2 === void 0) { return false; } const areAnyWorkspacesPending = workspaces2.some((ws) => { if (ws.latest_build.status === "pending") { return true; } return ws.latest_build.resources.some((resource) => { const agents = resource.agents; return agents?.some((agent) => agent.status === "connecting") ?? false; }); }); return areAnyWorkspacesPending ? PENDING_REFETCH_INTERVAL_MS : BACKGROUND_REFETCH_INTERVAL_MS; } function getSharedWorkspacesQueryKey(coderQuery) { return [CODER_QUERY_KEY_PREFIX, "workspaces", coderQuery]; } function workspaces({ auth, api, coderQuery }) { const enabled = auth.isAuthenticated; return { queryKey: getSharedWorkspacesQueryKey(coderQuery), enabled, keepPreviousData: enabled && coderQuery !== "", refetchInterval: getCoderWorkspacesRefetchInterval, queryFn: async () => { const res = await api.getWorkspaces({ q: coderQuery, limit: 0 }); return res.workspaces; } }; } function workspacesByRepo({ coderQuery, api, auth, workspacesConfig }) { const enabled = auth.isAuthenticated && coderQuery.trim() !== ""; return { queryKey: [...getSharedWorkspacesQueryKey(coderQuery), workspacesConfig], enabled, keepPreviousData: enabled, refetchInterval: getCoderWorkspacesRefetchInterval, queryFn: async () => { const request = { q: coderQuery, limit: 0 }; const res = await api.getWorkspacesByRepo(request, workspacesConfig); return res.workspaces; } }; } export { CODER_QUERY_KEY_PREFIX, sharedAuthQueryKey, workspaces, workspacesByRepo }; //# sourceMappingURL=queryOptions.esm.js.map