aboutsummaryrefslogtreecommitdiff
path: root/src/control/loading.js
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-02-11 22:34:11 +0800
committerMistivia <i@mistivia.com>2025-02-11 22:34:11 +0800
commita7488d695b3f647d657f6b3482d5333e1e869771 (patch)
tree1864b117a2d5ab180cd5f29e9c4fc24f6d87df6d /src/control/loading.js
parentec6b42fd005a5416371a1cace0c35366aa9f1d58 (diff)
cache card db in localStorage
Diffstat (limited to 'src/control/loading.js')
-rw-r--r--src/control/loading.js27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/control/loading.js b/src/control/loading.js
index 70dd99c..2d0b1ce 100644
--- a/src/control/loading.js
+++ b/src/control/loading.js
@@ -6,18 +6,33 @@ import { setCardDb, setAltId } from '../data/cardDb';
let isLoading = writable(true);
async function fetchCardDb() {
+ let localVer = localStorage.getItem('card_db_ver');
try {
// load card db
- let response = await fetch("https://raye.mistivia.com/card_db_parts/index.json");
+ let response = await fetch("https://raye.mistivia.com/card_db_parts/version");
if (!response.ok) {
throw new Error('Network response was not ok');
}
let data = await response.json();
- let tasks = data.map((i)=>fetch('https://raye.mistivia.com/card_db_parts/' + i));
- let datas = await Promise.all(tasks);
- datas = await Promise.all(datas.map((x) => x.text()));
- data = JSON.parse(datas.join(''));
- setCardDb(data);
+ data = String(data)
+ if (localVer === data && localStorage.getItem('card_db') !== null) {
+ setCardDb(JSON.parse(localStorage.getItem('card_db')));
+ } else {
+ localVer = data;
+ response = await fetch("https://raye.mistivia.com/card_db_parts/index.json");
+ if (!response.ok) {
+ throw new Error('Network response was not ok');
+ }
+ data = await response.json();
+ let tasks = data.map((i)=>fetch('https://raye.mistivia.com/card_db_parts/' + i));
+ let datas = await Promise.all(tasks);
+ datas = await Promise.all(datas.map((x) => x.text()));
+ data = JSON.parse(datas.join(''));
+ setCardDb(data);
+ localStorage.setItem('card_db_ver', localVer);
+ localStorage.setItem('card_db', datas.join(''));
+ }
+
// load alt id
response = await fetch("https://ygocdb.com/api/v0/idChangelog.jsonp");
if (!response.ok) {