Skip to content

Commit 9e1e888

Browse files
Handle import errors in popup data restore
Wrap the popup import flow in a try/catch so file read, JSON parse, and storage errors no longer surface as unhandled promise rejections. Keep the successful import path unchanged and show a simple user-facing error when restoring data fails.
1 parent 5a59aa0 commit 9e1e888

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

src/popup/sections/GeneralPart.jsx

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -568,13 +568,27 @@ export function GeneralPart({ config, updateConfig, setTabIndex }) {
568568
input.click()
569569
})
570570
if (!file) return
571-
const data = await new Promise((resolve) => {
572-
const reader = new FileReader()
573-
reader.onload = (e) => resolve(JSON.parse(e.target.result))
574-
reader.readAsText(file)
575-
})
576-
await importDataIntoStorage(Browser.storage.local, data)
577-
window.location.reload()
571+
try {
572+
const data = await new Promise((resolve, reject) => {
573+
const reader = new FileReader()
574+
reader.onload = (e) => {
575+
try {
576+
resolve(JSON.parse(e.target.result))
577+
} catch (error) {
578+
reject(error)
579+
}
580+
}
581+
reader.onerror = () => {
582+
reject(reader.error || new Error('Failed to read import file'))
583+
}
584+
reader.readAsText(file)
585+
})
586+
await importDataIntoStorage(Browser.storage.local, data)
587+
window.location.reload()
588+
} catch (error) {
589+
console.error('[popup] Failed to import data', error)
590+
window.alert(`${t('Error')}: ${error.message || error}`)
591+
}
578592
}}
579593
>
580594
{t('Import All Data')}

0 commit comments

Comments
 (0)