diff --git a/frontend/lib/api/brain/__tests__/useBrainApi.test.ts b/frontend/lib/api/brain/__tests__/useBrainApi.test.ts index c426f508a..dbb25aed4 100644 --- a/frontend/lib/api/brain/__tests__/useBrainApi.test.ts +++ b/frontend/lib/api/brain/__tests__/useBrainApi.test.ts @@ -189,4 +189,16 @@ describe("useBrainApi", () => { { rights: "Viewer", email } ); }); + + it("should call setAsDefaultBrain with correct brainId", async () => { + const { + result: { + current: { setAsDefaultBrain }, + }, + } = renderHook(() => useBrainApi()); + const brainId = "123"; + await setAsDefaultBrain(brainId); + expect(axiosPutMock).toHaveBeenCalledTimes(1); + expect(axiosPutMock).toHaveBeenCalledWith(`/brains/${brainId}/default`); + }); }); diff --git a/frontend/lib/api/brain/brain.ts b/frontend/lib/api/brain/brain.ts index 757ce86ed..a3dc592cb 100644 --- a/frontend/lib/api/brain/brain.ts +++ b/frontend/lib/api/brain/brain.ts @@ -126,3 +126,10 @@ export const updateBrainAccess = async ( email: userEmail, }); }; + +export const setAsDefaultBrain = async ( + brainId: string, + axiosInstance: AxiosInstance +): Promise => { + await axiosInstance.put(`/brains/${brainId}/default`); +}; diff --git a/frontend/lib/api/brain/useBrainApi.ts b/frontend/lib/api/brain/useBrainApi.ts index 24fdace0b..ee6928559 100644 --- a/frontend/lib/api/brain/useBrainApi.ts +++ b/frontend/lib/api/brain/useBrainApi.ts @@ -10,6 +10,7 @@ import { getBrains, getBrainUsers, getDefaultBrain, + setAsDefaultBrain, Subscription, updateBrainAccess, } from "./brain"; @@ -39,5 +40,7 @@ export const useBrainApi = () => { userEmail: string, subscription: SubscriptionUpdatableProperties ) => updateBrainAccess(brainId, userEmail, subscription, axiosInstance), + setAsDefaultBrain: async (brainId: string) => + setAsDefaultBrain(brainId, axiosInstance), }; }; diff --git a/frontend/lib/components/AddBrainModal/hooks/useAddBrainModal.ts b/frontend/lib/components/AddBrainModal/hooks/useAddBrainModal.ts index 27370c328..d737dd0b6 100644 --- a/frontend/lib/components/AddBrainModal/hooks/useAddBrainModal.ts +++ b/frontend/lib/components/AddBrainModal/hooks/useAddBrainModal.ts @@ -3,6 +3,7 @@ import axios from "axios"; import { FormEvent, useState } from "react"; import { useForm } from "react-hook-form"; +import { useBrainApi } from "@/lib/api/brain/useBrainApi"; import { useBrainConfig } from "@/lib/context/BrainConfigProvider"; import { useBrainContext } from "@/lib/context/BrainProvider/hooks/useBrainContext"; import { useToast } from "@/lib/hooks"; @@ -12,6 +13,7 @@ export const useAddBrainModal = () => { const [isPending, setIsPending] = useState(false); const { publish } = useToast(); const { createBrain } = useBrainContext(); + const { setAsDefaultBrain } = useBrainApi(); const [isShareModalOpen, setIsShareModalOpen] = useState(false); const { config } = useBrainConfig(); const defaultValues = { @@ -50,7 +52,7 @@ export const useAddBrainModal = () => { try { setIsPending(true); - await createBrain({ + const createdBrainId = await createBrain({ name, description, max_tokens: maxTokens, @@ -60,7 +62,15 @@ export const useAddBrainModal = () => { }); if (setDefault) { - // + if (createdBrainId === undefined) { + publish({ + variant: "danger", + text: "Error occurred while creating a brain", + }); + + return; + } + await setAsDefaultBrain(createdBrainId); } setIsShareModalOpen(false);