diff --git a/src/screens/ConfigEditorScreen/ConfigEditorScreen.test.tsx b/src/screens/ConfigEditorScreen/ConfigEditorScreen.test.tsx index 0b113ee..d0f2a31 100644 --- a/src/screens/ConfigEditorScreen/ConfigEditorScreen.test.tsx +++ b/src/screens/ConfigEditorScreen/ConfigEditorScreen.test.tsx @@ -45,6 +45,28 @@ describe('ConfigEditorScreen', () => { localStorage.removeItem('newtab-config'); }); + it('saves and closes on successful import', async () => { + const user = userEvent.setup(); + const onSave = vi.fn(); + const onClose = vi.fn(); + render(); + + await user.click(screen.getByRole('button', { name: 'Import' })); + + const modal = screen.getByText('Import Config').closest('.config-editor-modal')!; + const textarea = within(modal as HTMLElement).getByPlaceholderText('Paste exported base64 string here...'); + + const validConfig = JSON.stringify(mockConfig); + const encoded = btoa(validConfig); + await user.type(textarea, encoded); + + const applyButton = within(modal as HTMLElement).getByRole('button', { name: 'Apply' }); + await user.click(applyButton); + + expect(onSave).toHaveBeenCalledWith(mockConfig); + expect(onClose).toHaveBeenCalled(); + }); + it('shows import error on invalid base64 input', async () => { const user = userEvent.setup(); render(); diff --git a/src/screens/ConfigEditorScreen/ConfigEditorScreen.tsx b/src/screens/ConfigEditorScreen/ConfigEditorScreen.tsx index c3b9852..3526d2b 100644 --- a/src/screens/ConfigEditorScreen/ConfigEditorScreen.tsx +++ b/src/screens/ConfigEditorScreen/ConfigEditorScreen.tsx @@ -54,7 +54,6 @@ export function ConfigEditor({ config, onSave, onClose, onPreview }: ConfigEdito const [copied, setCopied] = useState(false); const [importString, setImportString] = useState(''); const [importError, setImportError] = useState(''); - const [importSuccess, setImportSuccess] = useState(false); const handleExport = () => { if (activePanel === 'export') { @@ -86,13 +85,11 @@ export function ConfigEditor({ config, onSave, onClose, onPreview }: ConfigEdito } setImportString(''); setImportError(''); - setImportSuccess(false); setActivePanel('import'); }; const handleImportApply = () => { setImportError(''); - setImportSuccess(false); const trimmed = importString.trim(); if (!trimmed) { @@ -122,23 +119,13 @@ export function ConfigEditor({ config, onSave, onClose, onPreview }: ConfigEdito } onSave(parsed); - - const bg = parsed.background; - onPreview(bg ? { - imageUrl: bg.imageUrl, - opacity: bg.opacity ?? 0.5, - color: bg.color ?? '#000000', - gradient: bg.gradient, - } : undefined); - - setImportSuccess(true); + onClose(); }; const closePanel = () => { setActivePanel('none'); setImportString(''); setImportError(''); - setImportSuccess(false); setCopied(false); }; @@ -229,16 +216,13 @@ export function ConfigEditor({ config, onSave, onClose, onPreview }: ConfigEdito { setImportString(e.target.value); setImportError(''); setImportSuccess(false); }} + onChange={(e) => { setImportString(e.target.value); setImportError(''); }} rows={5} placeholder="Paste exported base64 string here..." /> {importError && ( {importError} )} - {importSuccess && ( - Config applied successfully. - )}