fix: gate creation until workspace summaries load

This commit is contained in:
2026-08-04 06:01:25 +02:00
parent b3ff39fc26
commit 41c558e06c
3 changed files with 85 additions and 15 deletions
+18 -9
View File
@@ -156,7 +156,9 @@ export function SteerInput({
*/
export function ComposerFooter() {
const { data: settings } = useQuery({ queryKey: ["settings"], queryFn: getSettings });
const { data: workspaces = [] } = useQuery({ queryKey: ["workspaces"], queryFn: listWorkspaces });
const { data: workspaces = [], isLoading: workspacesLoading } = useQuery({
queryKey: ["workspaces"], queryFn: listWorkspaces,
});
const { data: modelsData } = useQuery({ queryKey: ["models"], queryFn: listModels });
const models = modelsData?.models ?? [];
const tokenUsage = useSessionStore((state) => state.tokenUsage);
@@ -190,9 +192,16 @@ export function ComposerFooter() {
: models;
useEffect(() => {
if (selectedWorkspace?.revision) workspacePolicyGate.select(workspace);
else workspacePolicyGate.clear();
}, [selectedWorkspace, workspace]);
if (!workspace) {
workspacePolicyGate.clear();
} else if (workspacesLoading) {
workspacePolicyGate.beginSummary(workspace);
} else if (selectedWorkspace?.revision) {
workspacePolicyGate.select(workspace);
} else {
workspacePolicyGate.allowLegacy(workspace);
}
}, [selectedWorkspace, workspace, workspacesLoading]);
useEffect(() => {
if (!allowedModels?.length) return;
@@ -222,11 +231,11 @@ export function ComposerFooter() {
}, [selectedWorkspace, workspace, workspacePolicyError, workspaceRecord]);
function update(patch: WorkspacePreference) {
if (
patch.workspaceId
&& patch.workspaceId !== workspace
&& workspaces.some((candidate) => candidate.id === patch.workspaceId && candidate.revision)
) workspacePolicyGate.select(patch.workspaceId);
if (patch.workspaceId && patch.workspaceId !== workspace) {
const selected = workspaces.find((candidate) => candidate.id === patch.workspaceId);
if (selected?.revision) workspacePolicyGate.select(patch.workspaceId);
else workspacePolicyGate.allowLegacy(patch.workspaceId);
}
const next = workspacePreferences.save({ ...preferences, ...patch });
setPreferences(next);
}