diff options
| author | Mistivia <i@mistivia.com> | 2025-02-20 13:26:43 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-02-20 13:26:43 +0800 |
| commit | 2ebdfe109bbff27b35a5e9ae208dabddd266191e (patch) | |
| tree | ed63233177008c7bef134606fbf0254754e91fb2 /src/loading.js | |
| parent | a7488d695b3f647d657f6b3482d5333e1e869771 (diff) | |
change project layout
Diffstat (limited to 'src/loading.js')
| -rw-r--r-- | src/loading.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/loading.js b/src/loading.js new file mode 100644 index 0000000..2fed39f --- /dev/null +++ b/src/loading.js @@ -0,0 +1,57 @@ +import { writable } from 'svelte/store'; +import { initSearch } from './search'; +import { initDeck } from './deck'; +import { setCardDb, setAltId } from './card_db'; + +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/version"); + if (!response.ok) { + throw new Error('Network response was not ok'); + } + let data = await response.json(); + 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) { + throw new Error('Network response was not ok'); + } + data = await response.json(); + setAltId(data); + } catch (error) { + console.log(error); + alert("加载失败!请刷新重试"); + return; + } + isLoading.set(false); + initDeck(); + initSearch(); +} + +fetchCardDb(); + +export { + isLoading, +}; |
