Skip to content

Commit e1f04e6

Browse files
committed
invalidate muxes after changing preferred model
1 parent 735c148 commit e1f04e6

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

src/features/workspace/components/__tests__/workspace-preferred-model.test.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,6 @@ test("submit preferred model", async () => {
4848
await waitFor(() => {
4949
expect(screen.getByText(/preferred model for fake-workspace updated/i));
5050
});
51+
52+
expect(screen.queryByText(/revert changes/i)).not.toBeInTheDocument();
5153
});

src/features/workspace/components/workspace-name.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { useNavigate } from "react-router-dom";
1212
import { twMerge } from "tailwind-merge";
1313
import { useFormState } from "@/hooks/useFormState";
1414
import { FormButtons } from "@/components/FormButtons";
15+
import { FormEvent } from "react";
1516

1617
export function WorkspaceName({
1718
className,
@@ -32,7 +33,7 @@ export function WorkspaceName({
3233
const isDefault = workspaceName === "default";
3334
const isUneditable = isArchived || isPending || isDefault;
3435

35-
const handleSubmit = (event: { preventDefault: () => void }) => {
36+
const handleSubmit = (event: FormEvent) => {
3637
event.preventDefault();
3738

3839
mutateAsync(

src/features/workspace/components/workspace-preferred-model.tsx

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ import { usePreferredModelWorkspace } from "../hooks/use-preferred-preferred-mod
1616
import { Select, SelectButton } from "@stacklok/ui-kit";
1717
import { useQueryListAllModelsForAllProviders } from "@/hooks/use-query-list-all-models-for-all-providers";
1818
import { FormButtons } from "@/components/FormButtons";
19+
import { invalidateQueries } from "@/lib/react-query-utils";
20+
import { v1GetWorkspaceMuxesQueryKey } from "@/api/generated/@tanstack/react-query.gen";
21+
import { useQueryClient } from "@tanstack/react-query";
1922

2023
function MissingProviderBanner() {
2124
return (
@@ -39,25 +42,30 @@ export function WorkspacePreferredModel({
3942
workspaceName: string;
4043
isArchived: boolean | undefined;
4144
}) {
45+
const queryClient = useQueryClient();
4246
const { formState, isPending } = usePreferredModelWorkspace(workspaceName);
4347
const { mutateAsync } = useMutationPreferredModelWorkspace();
4448
const { data: providerModels = [] } = useQueryListAllModelsForAllProviders();
45-
const { model, provider_id } = formState.values.preferredModel;
4649
const isModelsEmpty = !isPending && providerModels.length === 0;
4750

4851
const handleSubmit = (event: FormEvent) => {
4952
event.preventDefault();
50-
mutateAsync({
51-
path: { workspace_name: workspaceName },
52-
body: [
53-
{
54-
matcher: "",
55-
provider_id,
56-
model,
57-
matcher_type: MuxMatcherType.CATCH_ALL,
58-
},
59-
],
60-
});
53+
mutateAsync(
54+
{
55+
path: { workspace_name: workspaceName },
56+
body: [
57+
{
58+
matcher: "",
59+
matcher_type: MuxMatcherType.CATCH_ALL,
60+
...formState.values.preferredModel,
61+
},
62+
],
63+
},
64+
{
65+
onSuccess: () =>
66+
invalidateQueries(queryClient, [v1GetWorkspaceMuxesQueryKey]),
67+
},
68+
);
6169
};
6270

6371
return (

0 commit comments

Comments
 (0)