From d65c58fd924af39e4a5ebef79d43e21e21a6e56b Mon Sep 17 00:00:00 2001 From: hppeng Date: Wed, 13 Jul 2022 01:17:45 -0700 Subject: [PATCH] Move some js files into `debug/`, implement db corruption detector --- builder/doc.html | 2 +- dps_vis.html | 2 +- js/builder.js | 9 +++++++++ js/{ => debug}/dps_vis.js | 0 js/{ => debug}/render_compute_graph.js | 0 js/utils.js | 11 +++++++++-- 6 files changed, 20 insertions(+), 4 deletions(-) rename js/{ => debug}/dps_vis.js (100%) rename js/{ => debug}/render_compute_graph.js (100%) diff --git a/builder/doc.html b/builder/doc.html index 3be47b0..7354388 100644 --- a/builder/doc.html +++ b/builder/doc.html @@ -1407,7 +1407,7 @@ savelink - + diff --git a/dps_vis.html b/dps_vis.html index 8df124b..b6ba16e 100644 --- a/dps_vis.html +++ b/dps_vis.html @@ -67,6 +67,6 @@ - + diff --git a/js/builder.js b/js/builder.js index f7bee7e..215ef22 100644 --- a/js/builder.js +++ b/js/builder.js @@ -373,6 +373,15 @@ function init() { }); decodeBuild(url_tag); builder_graph_init(); + for (const item_node of item_nodes) { + if (item_node.get_value() === null) { + // likely DB load failure... + if (confirm('One or more items failed to load correctly. This could be due to a corrupted build link, or (more likely) a database load failure. Would you like to reload?')) { + hardReload(); + } + break; + } + } } window.onerror = function(message, source, lineno, colno, error) { diff --git a/js/dps_vis.js b/js/debug/dps_vis.js similarity index 100% rename from js/dps_vis.js rename to js/debug/dps_vis.js diff --git a/js/render_compute_graph.js b/js/debug/render_compute_graph.js similarity index 100% rename from js/render_compute_graph.js rename to js/debug/render_compute_graph.js diff --git a/js/utils.js b/js/utils.js index 9a42bc3..f43fbe9 100644 --- a/js/utils.js +++ b/js/utils.js @@ -619,8 +619,15 @@ function addClasses(elem, classes) { */ async function hardReload() { //https://gist.github.com/rmehner/b9a41d9f659c9b1c3340 - const dbs = await window.indexedDB.databases(); - await dbs.forEach(db => { window.indexedDB.deleteDatabase(db.name) }); + try { + const dbs = await window.indexedDB.databases(); + await dbs.forEach(db => { window.indexedDB.deleteDatabase(db.name) }); + } catch (error) { + // Hacky patch for firefox... + console.log(error); + const db_names = ['item_db', 'ing_db', 'map_db', 'tome_db']; + await db_names.forEach(db => { window.indexedDB.deleteDatabase(db) }); + } location.reload(true); }