From 3544392002aff653b4a3aa4b419be8877b9967cf Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Wed, 15 Nov 2023 12:14:47 +1300 Subject: [PATCH] Handle database importing breaking 1. Backup the current database first 2. Restore the database if something goes wrong 3. Show the user a dialog explaining the error --- SettingsPage.tsx | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/SettingsPage.tsx b/SettingsPage.tsx index 37210bc..72d5119 100644 --- a/SettingsPage.tsx +++ b/SettingsPage.tsx @@ -52,6 +52,7 @@ export default function SettingsPage() { const [formatOptions, setFormatOptions] = useState(twelveHours); const [importing, setImporting] = useState(false); const [deleting, setDeleting] = useState(false); + const [error, setError] = useState(""); const { reset } = useNavigation>(); const { watch, setValue } = useForm({ @@ -109,10 +110,26 @@ export default function SettingsPage() { const confirmImport = useCallback(async () => { setImporting(false); + await FileSystem.cp( + Dirs.DatabaseDir + "/massive.db", + Dirs.DatabaseDir + "/massive-backup.db" + ); await AppDataSource.destroy(); const file = await DocumentPicker.pickSingle(); await FileSystem.cp(file.uri, Dirs.DatabaseDir + "/massive.db"); - await AppDataSource.initialize(); + + try { + await AppDataSource.initialize(); + } catch (e) { + setError(e.toString()); + await FileSystem.cp( + Dirs.DatabaseDir + "/massive-backup.db", + Dirs.DatabaseDir + "/massive.db" + ); + await AppDataSource.initialize(); + return; + } + await setRepo.createQueryBuilder().update().set({ image: null }).execute(); await update("sound", null); await update("backup", false); @@ -495,6 +512,15 @@ export default function SettingsPage() { /> + setError("")} + setShow={() => setError("")} + show={!!error} + > + {error} + +