'use client' import { useState } from 'react' import { SettingsSection } from '@/components/settings' import { Button } from '@/components/ui/button' import { Download, Upload, Trash2, Loader2 } from 'lucide-react' import { toast } from 'sonner' import { useLanguage } from '@/lib/i18n' export default function DataSettingsPage() { const { t } = useLanguage() const [isExporting, setIsExporting] = useState(false) const [isImporting, setIsImporting] = useState(false) const [isDeleting, setIsDeleting] = useState(false) const handleExport = async () => { setIsExporting(true) try { const response = await fetch('/api/notes/export') if (response.ok) { const blob = await response.blob() const url = window.URL.createObjectURL(blob) const a = document.createElement('a') a.href = url a.download = `keep-notes-export-${new Date().toISOString().split('T')[0]}.json` document.body.appendChild(a) a.click() document.body.removeChild(a) window.URL.revokeObjectURL(url) toast.success(t('dataManagement.export.success')) } } catch (error) { console.error('Export error:', error) toast.error(t('dataManagement.export.failed')) } finally { setIsExporting(false) } } const handleImport = async (event: React.ChangeEvent) => { const file = event.target.files?.[0] if (!file) return setIsImporting(true) try { const formData = new FormData() formData.append('file', file) const response = await fetch('/api/notes/import', { method: 'POST', body: formData }) if (response.ok) { const result = await response.json() toast.success(t('dataManagement.import.success', { count: result.count })) window.location.reload() } else { throw new Error('Import failed') } } catch (error) { console.error('Import error:', error) toast.error(t('dataManagement.import.failed')) } finally { setIsImporting(false) event.target.value = '' } } const handleDeleteAll = async () => { if (!confirm(t('dataManagement.delete.confirm'))) { return } setIsDeleting(true) try { const response = await fetch('/api/notes/delete-all', { method: 'POST' }) if (response.ok) { toast.success(t('dataManagement.delete.success')) window.location.reload() } } catch (error) { console.error('Delete error:', error) toast.error(t('dataManagement.delete.failed')) } finally { setIsDeleting(false) } } return (

{t('dataManagement.title')}

{t('dataManagement.toolsDescription')}

💾} description={t('dataManagement.export.description')} >

{t('dataManagement.export.title')}

{t('dataManagement.export.description')}

📥} description={t('dataManagement.import.description')} >

{t('dataManagement.import.title')}

{t('dataManagement.import.description')}

⚠️} description={t('dataManagement.dangerZoneDescription')} >

{t('dataManagement.delete.title')}

{t('dataManagement.delete.description')}

) }