import { createFileRoute } from '@tanstack/react-router' import { route } from '@/constants/routes' import { useState } from 'react' import { useAssistant } from '@/hooks/useAssistant' import HeaderPage from '@/containers/HeaderPage' import { IconCirclePlus, IconPencil, IconTrash } from '@tabler/icons-react' import AddEditAssistant from '@/containers/dialogs/AddEditAssistant' import { DeleteAssistantDialog } from '@/containers/dialogs' import { AvatarEmoji } from '@/containers/AvatarEmoji' import { useTranslation } from '@/i18n/react-i18next-compat' // eslint-disable-next-line @typescript-eslint/no-explicit-any export const Route = createFileRoute(route.assistant as any)({ component: Assistant, }) function Assistant() { const { t } = useTranslation() const { assistants, addAssistant, updateAssistant, deleteAssistant } = useAssistant() const [open, setOpen] = useState(false) const [editingKey, setEditingKey] = useState(null) const [deleteConfirmOpen, setDeleteConfirmOpen] = useState(false) const [deletingId, setDeletingId] = useState(null) const handleDelete = (id: string) => { setDeletingId(id) setDeleteConfirmOpen(true) } const confirmDelete = () => { if (deletingId) { deleteAssistant(deletingId) setDeleteConfirmOpen(false) setDeletingId(null) } } const handleSave = (assistant: Assistant) => { if (editingKey) { updateAssistant(assistant) } else { addAssistant(assistant) } setOpen(false) setEditingKey(null) } return (
{t('assistants:title')}
{assistants .slice() .sort((a, b) => a.created_at - b.created_at) .map((assistant) => (

{assistant?.avatar && ( )} {assistant.name}

{ setEditingKey(assistant.id) setOpen(true) }} >
handleDelete(assistant.id)} >

{assistant.description}

))}
{ setEditingKey(null) setOpen(true) }} >
a.id === editingKey) : undefined } onSave={handleSave} />
) }