import { useState, useEffect, useRef } from 'react' import { useTranslation } from '@/i18n/react-i18next-compat' import { Dialog, DialogTrigger, DialogContent, DialogTitle, DialogClose, DialogFooter, DialogHeader, } from '@/components/ui/dialog' import { Button } from '@/components/ui/button' import { Textarea } from '@/components/ui/textarea' import { IconPencil } from '@tabler/icons-react' import { Tooltip, TooltipContent, TooltipTrigger, } from '@/components/ui/tooltip' interface EditMessageDialogProps { message: string onSave: (message: string) => void triggerElement?: React.ReactNode } export function EditMessageDialog({ message, onSave, triggerElement, }: EditMessageDialogProps) { const { t } = useTranslation() const [isOpen, setIsOpen] = useState(false) const [draft, setDraft] = useState(message) const textareaRef = useRef(null) useEffect(() => { setDraft(message) }, [message]) useEffect(() => { if (isOpen && textareaRef.current) { setTimeout(() => { textareaRef.current?.focus() textareaRef.current?.select() }, 100) } }, [isOpen]) const handleSave = () => { if (draft !== message && draft.trim()) { onSave(draft) setIsOpen(false) } } const handleKeyDown = (e: React.KeyboardEvent) => { e.stopPropagation() if (e.key === 'Enter' && e.ctrlKey) { handleSave() } } const defaultTrigger = (
{ if (e.key === 'Enter' || e.key === ' ') { e.preventDefault() setIsOpen(true) } }} >

{t('edit')}

) return ( {triggerElement || defaultTrigger} {t('common:dialogs.editMessage.title')}