From 58fad556f6ae8ceb97e0b0291fd4100398d2ff22 Mon Sep 17 00:00:00 2001 From: zaidmukaddam Date: Sat, 10 Aug 2024 22:31:34 +0530 Subject: [PATCH] Show current model in dropdown --- app/page.tsx | 81 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 24 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index 7dc36e4..0be10ce 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -98,40 +98,61 @@ export default function Home() { ]; const handleModelChange = (value: string) => { - if (hasSubmitted) { - setNewSelectedModel(value); - setShowConfirmModal(true); - } else { - setSelectedModel(value); + if (value !== selectedModel) { + if (hasSubmitted) { + setNewSelectedModel(value); + setShowConfirmModal(true); + } else { + setSelectedModel(value); + reload({ + body: { + model: value === 'Speed' ? 'gpt-4o-mini' : value === 'Quality (GPT)' ? 'gpt-4o' : 'claude-3-5-sonnet-20240620', + }, + }); + } } + setIsModelSelectorOpen(false); }; const handleConfirmModelChange = () => { - setSelectedModel(newSelectedModel); - setShowConfirmModal(false); - setSuggestedQuestions([]); - reload({ - body: { - model: newSelectedModel === 'Speed' ? 'gpt-4o-mini' : newSelectedModel === 'Quality (GPT)' ? 'gpt-4o' : 'claude-3-5-sonnet-20240620', - }, - }); + if (newSelectedModel !== selectedModel) { + setSelectedModel(newSelectedModel); + setShowConfirmModal(false); + setSuggestedQuestions([]); + reload({ + body: { + model: newSelectedModel === 'Speed' ? 'gpt-4o-mini' : newSelectedModel === 'Quality (GPT)' ? 'gpt-4o' : 'claude-3-5-sonnet-20240620', + }, + }); + } else { + setShowConfirmModal(false); + } }; interface ModelSelectorProps { selectedModel: string; onModelSelect: (model: string) => void; + isDisabled: boolean; } - function ModelSelector({ selectedModel, onModelSelect }: ModelSelectorProps) { + function ModelSelector({ selectedModel, onModelSelect, isDisabled }: ModelSelectorProps) { const [isOpen, setIsOpen] = useState(false); + const handleToggle = () => { + if (!isDisabled) { + setIsOpen(!isOpen); + } + }; + return ( - + {models.map((model) => ( onModelSelect(model.name)} - className="flex items-center p-2 !font-sans" + className={`flex items-start p-3 !font-sans rounded-md ${selectedModel === model.name ? 'bg-muted' : ''}`} > - -
-
{model.name}
-
{model.description}
-
{model.details}
+ +
+
+ {model.name} + {selectedModel === model.name && ( + + Active + + )} +
+
{model.description}
+
{model.details}
))} @@ -159,6 +187,7 @@ export default function Home() { ); } + const renderToolInvocation = (toolInvocation: ToolInvocation, index: number) => { const args = JSON.parse(JSON.stringify(toolInvocation.args)); const result = 'result' in toolInvocation ? JSON.parse(JSON.stringify(toolInvocation.result)) : null; @@ -515,7 +544,11 @@ export default function Home() { animate={{ opacity: 1, scale: 1 }} transition={{ duration: 0.5, delay: 0.4 }} > - +