diff --git a/src/lib/restoreFiles.js b/src/lib/restoreFiles.js index 345d2280c..6f58c8828 100644 --- a/src/lib/restoreFiles.js +++ b/src/lib/restoreFiles.js @@ -10,7 +10,7 @@ export default async function restoreFiles(files) { await Promise.all( files.map(async (file, i) => { - rendered = file.render; + rendered ||= !!file.render; if (i === files.length - 1 && !rendered) { file.render = true; diff --git a/src/main.js b/src/main.js index ce2508855..fd173d15a 100644 --- a/src/main.js +++ b/src/main.js @@ -606,15 +606,17 @@ async function loadApp() { if (Array.isArray(files) && files.length) { try { await restoreFiles(files); - // save state to handle file loading gracefully - sessionStorage.setItem("isfilesRestored", true); - // Process any pending intents that were queued before files were restored - await processPendingIntents(); } catch (error) { window.log("error", "File loading failed!"); window.log("error", error); toast("File loading failed!"); + } finally { + // Mark restoration complete even after a partial failure so + // switch-file persistence and queued intents are not blocked. + sessionStorage.setItem("isfilesRestored", true); } + // Process any pending intents that were queued before files were restored + await processPendingIntents(); } else { // Even when no files need to be restored, mark as restored and process pending intents sessionStorage.setItem("isfilesRestored", true); @@ -661,6 +663,9 @@ async function loadApp() { if (settings.value.rememberFiles && activeFile) { localStorage.setItem("lastfile", activeFile.id); } + if (saveState && sessionStorage.getItem("isfilesRestored") === "true") { + acode.exec("save-state"); + } return; }