diff --git a/surfsense_web/atoms/llm-config/llm-config-mutation.atoms.ts b/surfsense_web/atoms/llm-config/llm-config-mutation.atoms.ts index 35a80d84d..400bc19ad 100644 --- a/surfsense_web/atoms/llm-config/llm-config-mutation.atoms.ts +++ b/surfsense_web/atoms/llm-config/llm-config-mutation.atoms.ts @@ -1,7 +1,7 @@ import { atomWithMutation } from "jotai-tanstack-query"; import { toast } from "sonner"; import { activeSearchSpaceIdAtom } from "@/atoms/seach-spaces/seach-space-queries.atom"; -import type { CreateLLMConfigRequest } from "@/contracts/types/llm-config.types"; +import type { CreateLLMConfigRequest, UpdateLLMConfigRequest } from "@/contracts/types/llm-config.types"; import { llmConfigApiService } from "@/lib/apis/llm-config-api.service"; import { cacheKeys } from "@/lib/query-client/cache-keys"; import { queryClient } from "@/lib/query-client/client"; @@ -27,3 +27,28 @@ export const createLLMConfigMutationAtom = atomWithMutation((get) => { }, }; }); + +export const updateLLMConfigMutationAtom = atomWithMutation((get) => { + const searchSpaceId = get(activeSearchSpaceIdAtom); + + return { + mutationKey: cacheKeys.llmConfigs.all(searchSpaceId!), + enabled: !!searchSpaceId, + mutationFn: async (request: UpdateLLMConfigRequest) => { + return llmConfigApiService.updateLLMConfig(request); + }, + + onSuccess: (_, request: UpdateLLMConfigRequest) => { + toast.success("LLM configuration updated successfully"); + queryClient.invalidateQueries({ + queryKey: cacheKeys.llmConfigs.all(searchSpaceId!), + }); + queryClient.invalidateQueries({ + queryKey: cacheKeys.llmConfigs.byId(String(request.id)), + }); + queryClient.invalidateQueries({ + queryKey: cacheKeys.llmConfigs.global(), + }); + }, + }; +});