From 2b008761cb7413ab9605ddd01b0355cecdff2118 Mon Sep 17 00:00:00 2001 From: weaigc <879821485@qq.com> Date: Sat, 11 Nov 2023 23:53:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E4=BA=BA=E6=A0=BC=20#85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/settings/advanced.tsx | 53 ++++++++++++++++------------ src/components/user-menu.tsx | 2 +- src/state/index.ts | 10 +++--- 3 files changed, 37 insertions(+), 28 deletions(-) diff --git a/src/components/settings/advanced.tsx b/src/components/settings/advanced.tsx index 2da65065..6e423ebb 100644 --- a/src/components/settings/advanced.tsx +++ b/src/components/settings/advanced.tsx @@ -1,7 +1,8 @@ -import { useCallback, useState } from 'react' +import { useCallback, useEffect, useState } from 'react' import { useAtom } from 'jotai' import { Switch, RadioGroup } from '@headlessui/react' +import { Textarea } from '../ui/textarea' import { DialogDescription, DialogHeader, @@ -12,12 +13,21 @@ import { PrompsTemplates, systemPromptsAtom, unlimitAtom } from '@/state' export function AdvancedSetting() { const [enableUnlimit, setUnlimit] = useAtom(unlimitAtom) const [systemPrompt, setSystemPrompt] = useAtom(systemPromptsAtom) - const [selected, setSelected] = useState(PrompsTemplates.find((item) => item.content === (systemPrompt || ''))) + const [selected, setSelected] = useState(PrompsTemplates.find((item) => item.content === systemPrompt)) - const handleChangePrompt = useCallback((value: typeof PrompsTemplates[0]) => { + useEffect(() => { + if (!selected) { + setSelected(PrompsTemplates[PrompsTemplates.length - 1]) + } + }, [selected, systemPrompt, setSelected]) + const handleSwitchPrompt = useCallback((value: typeof PrompsTemplates[0]) => { setSelected(value) - setSystemPrompt(value.content) - }, [setSelected, setSystemPrompt]) + setSystemPrompt(value.content || systemPrompt) + }, [setSelected, systemPrompt, setSystemPrompt]) + + const handleChangePrompt = useCallback((value: string) => { + setSystemPrompt(value) + }, []) return ( <> @@ -44,41 +54,40 @@ export function AdvancedSetting() { 预设角色