11import { createFileRoute } from '@tanstack/react-router'
22import { route } from '@/constants/routes'
3- import { useState } from 'react'
3+ import { useState , useEffect } from 'react'
44
55import { useAssistant } from '@/hooks/useAssistant'
66
@@ -30,18 +30,20 @@ export const Route = createFileRoute(route.settings.assistant as any)({
3030
3131function AssistantContent ( ) {
3232 const { t } = useTranslation ( )
33- const {
33+ const {
3434 assistants,
3535 addAssistant,
3636 updateAssistant,
3737 deleteAssistant,
3838 defaultAssistantId,
39- setDefaultAssistant
39+ setDefaultAssistant,
40+ refreshAssistants
4041 } = useAssistant ( )
4142 const [ open , setOpen ] = useState ( false )
4243 const [ editingKey , setEditingKey ] = useState < string | null > ( null )
4344 const [ deleteConfirmOpen , setDeleteConfirmOpen ] = useState ( false )
4445 const [ deletingId , setDeletingId ] = useState < string | null > ( null )
46+ const [ editingAssistant , setEditingAssistant ] = useState < Assistant | null > ( null )
4547
4648 const handleDelete = ( id : string ) => {
4749 setDeletingId ( id )
@@ -66,9 +68,27 @@ function AssistantContent() {
6668 setEditingKey ( null )
6769 }
6870
71+ const handleEditClick = ( assistantId : string ) => {
72+ // Before opening the edit dialog, refresh the assistants to get the latest data
73+ refreshAssistants ( ) . then ( ( ) => {
74+ setEditingKey ( assistantId )
75+ setOpen ( true )
76+ } )
77+ }
78+
6979 const sortedAssistants = assistants . slice ( ) . sort ( ( a , b ) => a . created_at - b . created_at )
7080 const defaultAssistant = sortedAssistants . find ( ( a ) => a . id === defaultAssistantId )
7181
82+ // When editingKey changes, we need to get the latest assistant data
83+ useEffect ( ( ) => {
84+ if ( editingKey ) {
85+ const assistant = assistants . find ( a => a . id === editingKey )
86+ setEditingAssistant ( assistant || null )
87+ } else {
88+ setEditingAssistant ( null )
89+ }
90+ } , [ editingKey , assistants ] )
91+
7292 return (
7393 < div className = "flex flex-col h-svh w-full" >
7494 < HeaderPage >
@@ -174,10 +194,7 @@ function AssistantContent() {
174194 variant = "ghost"
175195 size = "icon-xs"
176196 title = { t ( 'assistants:editAssistant' ) }
177- onClick = { ( ) => {
178- setEditingKey ( assistant . id )
179- setOpen ( true )
180- } }
197+ onClick = { ( ) => handleEditClick ( assistant . id ) }
181198 >
182199 < IconPencil className = "text-muted-foreground size-4" />
183200 </ Button >
@@ -198,11 +215,7 @@ function AssistantContent() {
198215 open = { open }
199216 onOpenChange = { setOpen }
200217 editingKey = { editingKey }
201- initialData = {
202- editingKey
203- ? assistants . find ( ( a ) => a . id === editingKey )
204- : undefined
205- }
218+ initialData = { editingAssistant || undefined }
206219 onSave = { handleSave }
207220 />
208221 < DeleteAssistantDialog
0 commit comments