From d07396d308c9c4a2a092c46340f1c47e1b1d3951 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Mon, 1 Apr 2024 09:20:11 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix:=20Handle=20Empty=20Model=20?= =?UTF-8?q?Error=20in=20Assistants=20Form=20(#2265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/common/types.ts | 2 ++ .../SidePanel/Builder/AssistantPanel.tsx | 33 ++++++++++++------- .../SidePanel/Builder/AssistantSelect.tsx | 22 ++++++++++--- client/src/localization/languages/Eng.tsx | 1 + 4 files changed, 42 insertions(+), 16 deletions(-) diff --git a/client/src/common/types.ts b/client/src/common/types.ts index c83aaedc79..2db1828af2 100644 --- a/client/src/common/types.ts +++ b/client/src/common/types.ts @@ -18,6 +18,8 @@ import type { LucideIcon } from 'lucide-react'; export type GenericSetter = (value: T | ((currentValue: T) => T)) => void; +export type LastSelectedModels = Record; + export type NavLink = { title: string; label?: string; diff --git a/client/src/components/SidePanel/Builder/AssistantPanel.tsx b/client/src/components/SidePanel/Builder/AssistantPanel.tsx index f84f62928a..6399c5d347 100644 --- a/client/src/components/SidePanel/Builder/AssistantPanel.tsx +++ b/client/src/components/SidePanel/Builder/AssistantPanel.tsx @@ -317,19 +317,28 @@ export default function AssistantPanel({ ( - ( + <> + + {error && ( + + {localize('com_ui_field_required')} + )} - /> + )} /> diff --git a/client/src/components/SidePanel/Builder/AssistantSelect.tsx b/client/src/components/SidePanel/Builder/AssistantSelect.tsx index 07b88cb060..3e020985ac 100644 --- a/client/src/components/SidePanel/Builder/AssistantSelect.tsx +++ b/client/src/components/SidePanel/Builder/AssistantSelect.tsx @@ -4,17 +4,24 @@ import { defaultAssistantFormValues, defaultOrderQuery, isImageVisionTool, + EModelEndpoint, Capabilities, FileSources, } from 'librechat-data-provider'; import type { UseFormReset } from 'react-hook-form'; import type { UseMutationResult } from '@tanstack/react-query'; import type { Assistant, AssistantCreateParams } from 'librechat-data-provider'; -import type { AssistantForm, Actions, TAssistantOption, ExtendedFile } from '~/common'; +import type { + AssistantForm, + Actions, + TAssistantOption, + ExtendedFile, + LastSelectedModels, +} from '~/common'; import SelectDropDown from '~/components/ui/SelectDropDown'; import { useListAssistantsQuery } from '~/data-provider'; +import { useLocalize, useLocalStorage } from '~/hooks'; import { useFileMapContext } from '~/Providers'; -import { useLocalize } from '~/hooks'; import { cn } from '~/utils'; const keys = new Set(['name', 'id', 'description', 'instructions', 'model']); @@ -35,6 +42,10 @@ export default function AssistantSelect({ const localize = useLocalize(); const fileMap = useFileMapContext(); const lastSelectedAssistant = useRef(null); + const [lastSelectedModels] = useLocalStorage( + 'lastSelectedModel', + {} as LastSelectedModels, + ); const assistants = useListAssistantsQuery(defaultOrderQuery, { select: (res) => @@ -79,7 +90,10 @@ export default function AssistantSelect({ createMutation.reset(); if (!assistant) { setCurrentAssistantId(undefined); - return reset(defaultAssistantFormValues); + return reset({ + ...defaultAssistantFormValues, + model: lastSelectedModels?.[EModelEndpoint.assistants] ?? '', + }); } const update = { @@ -127,7 +141,7 @@ export default function AssistantSelect({ reset(formValues); setCurrentAssistantId(assistant?.id); }, - [assistants.data, reset, setCurrentAssistantId, createMutation], + [assistants.data, reset, setCurrentAssistantId, createMutation, lastSelectedModels], ); useEffect(() => { diff --git a/client/src/localization/languages/Eng.tsx b/client/src/localization/languages/Eng.tsx index 3d086ca837..618e06f0f7 100644 --- a/client/src/localization/languages/Eng.tsx +++ b/client/src/localization/languages/Eng.tsx @@ -46,6 +46,7 @@ export default { com_assistants_update_error: 'There was an error updating your assistant.', com_assistants_create_success: 'Successfully created', com_assistants_create_error: 'There was an error creating your assistant.', + com_ui_field_required: 'This field is required', com_ui_download_error: 'Error downloading file. The file may have been deleted.', com_ui_attach_error_type: 'Unsupported file type for endpoint:', com_ui_attach_error_size: 'File size limit exceeded for endpoint:',