fix: gate creation until workspace summaries load
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user