import re with open('components/label-management-dialog.tsx', 'r') as f: content = f.read() # Add useNoteRefresh import if 'useNoteRefresh' not in content: content = content.replace("import { useLanguage } from '@/lib/i18n'", "import { useLanguage } from '@/lib/i18n'\nimport { useNoteRefresh } from '@/context/NoteRefreshContext'") # Add useNoteRefresh to component content = content.replace("const { t } = useLanguage()", "const { t } = useLanguage()\n const { triggerRefresh } = useNoteRefresh()\n const [confirmDeleteId, setConfirmDeleteId] = useState(null)") # Modify handleDeleteLabel old_delete = """ const handleDeleteLabel = async (id: string) => { if (confirm(t('labels.confirmDelete'))) { try { await deleteLabel(id) } catch (error) { console.error('Failed to delete label:', error) } } }""" new_delete = """ const handleDeleteLabel = async (id: string) => { try { await deleteLabel(id) triggerRefresh() setConfirmDeleteId(null) } catch (error) { console.error('Failed to delete label:', error) } }""" content = content.replace(old_delete, new_delete) # Also adding triggerRefresh() on addLabel and updateLabel: content = content.replace( "await addLabel(trimmed, 'gray')", "await addLabel(trimmed, 'gray')\n triggerRefresh()" ) content = content.replace( "await updateLabel(id, { color })", "await updateLabel(id, { color })\n triggerRefresh()" ) # Inline confirm UI: Change the Trash2 button area old_div = """
""" new_div = """ {confirmDeleteId === label.id ? (
{t('labels.confirmDeleteShort') || 'Confirmer ?'}
) : (
)}""" content = content.replace(old_div, new_div) with open('components/label-management-dialog.tsx', 'w') as f: f.write(content)