fix: validate name assistant and improve area clickable (#5920)

This commit is contained in:
Faisal Amir 2025-07-25 20:27:38 +07:00 committed by GitHub
parent 3982ed4c6f
commit 6c15129ce8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 29 additions and 7 deletions

View File

@ -81,7 +81,7 @@ const DropdownAssistant = () => {
>
<DropdownMenuItem className="hover:bg-transparent">
<div
className="text-main-view-fg/70 cursor-pointer flex gap-2"
className="text-main-view-fg/70 cursor-pointer flex gap-2 w-full"
onClick={() => {
setCurrentAssistant(assistant)
updateCurrentThreadAssistant(assistant)

View File

@ -61,6 +61,7 @@ export default function AddEditAssistant({
const [paramsTypes, setParamsTypes] = useState<string[]>(['string'])
const [showEmojiPicker, setShowEmojiPicker] = useState(false)
const emojiPickerRef = useRef<HTMLDivElement>(null)
const [nameError, setNameError] = useState<string | null>(null)
// Handle click outside emoji picker
useEffect(() => {
@ -118,6 +119,7 @@ export default function AddEditAssistant({
setParamsKeys([''])
setParamsValues([''])
setParamsTypes(['string'])
setNameError(null)
}
const handleParameterChange = (
@ -193,6 +195,11 @@ export default function AddEditAssistant({
}
const handleSave = () => {
if (!name.trim()) {
setNameError(t('assistants:nameRequired'))
return
}
setNameError(null)
// Convert parameters arrays to object
const parameters: Record<string, unknown> = {}
paramsKeys.forEach((key, index) => {
@ -275,13 +282,22 @@ export default function AddEditAssistant({
</label>
<Input
value={name}
onChange={(e) => setName(e.target.value)}
onChange={(e) => {
setName(e.target.value)
if (e.target.value.trim()) setNameError(null)
}}
placeholder={t('assistants:enterName')}
autoFocus
/>
</div>
</div>
{nameError && (
<div className="ml-12 text-xs text-destructive mt-1">
{nameError}
</div>
)}
<div className="space-y-2">
<label className="text-sm mb-2 inline-block">
{t('assistants:description')}

View File

@ -10,6 +10,7 @@
"emoji": "Emoji",
"name": "Name",
"enterName": "Namen eingeben",
"nameRequired": "Name ist erforderlich",
"description": "Beschreibung (optional)",
"enterDescription": "Beschreibung eingeben",
"instructions": "Anweisungen",

View File

@ -10,6 +10,7 @@
"emoji": "Emoji",
"name": "Name",
"enterName": "Enter name",
"nameRequired": "Name is required",
"description": "Description (optional)",
"enterDescription": "Enter description",
"instructions": "Instructions",
@ -29,4 +30,4 @@
"createNew": "Create New Assistant",
"personality": "Personality",
"capabilities": "Capabilities"
}
}

View File

@ -10,6 +10,7 @@
"emoji": "Emoji",
"name": "Nama",
"enterName": "Masukkan nama",
"nameRequired": "Nama wajib diisi",
"description": "Deskripsi (opsional)",
"enterDescription": "Masukkan deskripsi",
"instructions": "Instruksi",
@ -29,4 +30,4 @@
"createNew": "Buat Asisten Baru",
"personality": "Kepribadian",
"capabilities": "Kemampuan"
}
}

View File

@ -10,6 +10,7 @@
"emoji": "Biểu tượng",
"name": "Tên",
"enterName": "Nhập tên",
"nameRequired": "Tên là bắt buộc",
"description": "Mô tả (tùy chọn)",
"enterDescription": "Nhập mô tả",
"instructions": "Hướng dẫn",
@ -29,4 +30,4 @@
"createNew": "Tạo Trợ lý Mới",
"personality": "Tính cách",
"capabilities": "Khả năng"
}
}

View File

@ -10,6 +10,7 @@
"emoji": "表情符号",
"name": "名称",
"enterName": "输入名称",
"nameRequired": "名称为必填项",
"description": "描述(可选)",
"enterDescription": "输入描述",
"instructions": "说明",
@ -29,4 +30,4 @@
"createNew": "创建新助手",
"personality": "个性",
"capabilities": "能力"
}
}

View File

@ -10,6 +10,7 @@
"emoji": "表情符號",
"name": "名稱",
"enterName": "輸入名稱",
"nameRequired": "名稱為必填項",
"description": "描述(可選)",
"enterDescription": "輸入描述",
"instructions": "指示",
@ -29,4 +30,4 @@
"createNew": "建立新助理",
"personality": "個性",
"capabilities": "能力"
}
}