diff options
| author | Mistivia <i@mistivia.com> | 2025-02-11 22:14:02 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-02-11 22:14:02 +0800 |
| commit | ec6b42fd005a5416371a1cace0c35366aa9f1d58 (patch) | |
| tree | f37cc65f547cd55cdc40f3c71e7aa2faaa324786 /src/control | |
| parent | 39c98aef0b1077001571a11adfd6b4c80dec256a (diff) | |
optimize card db loading
Diffstat (limited to 'src/control')
| -rw-r--r-- | src/control/deck.js | 6 | ||||
| -rw-r--r-- | src/control/loading.js | 19 |
2 files changed, 21 insertions, 4 deletions
diff --git a/src/control/deck.js b/src/control/deck.js index 564443a..43c784f 100644 --- a/src/control/deck.js +++ b/src/control/deck.js @@ -1,14 +1,18 @@ import { writable } from "svelte/store"; import { parseYdke } from '../utils'; -import { getCardDb } from '../data/cardDb'; +import { getCardDb, getAltId } from '../data/cardDb'; let deck = writable({main: [], extra: [], side: []}); let deckState = {main: [], extra: [], side: []}; function sanitizeDeck(deck) { let cardDb = getCardDb(); + let altId = getAltId(); let ret = []; for (let id of deck) { + if (altId[id] !== undefined) { + id = altId[id]; + } if (cardDb[id] !== undefined) { ret.push(id); } diff --git a/src/control/loading.js b/src/control/loading.js index 93114d7..70dd99c 100644 --- a/src/control/loading.js +++ b/src/control/loading.js @@ -1,19 +1,32 @@ import { writable } from 'svelte/store'; import { initSearch } from './search'; import { initDeck } from './deck'; -import { setCardDb } from '../data/cardDb'; +import { setCardDb, setAltId } from '../data/cardDb'; let isLoading = writable(true); async function fetchCardDb() { try { - const response = await fetch("https://121.40.137.206/ygo-deck-builder/card_db.json"); + // load card db + let response = await fetch("https://raye.mistivia.com/card_db_parts/index.json"); if (!response.ok) { throw new Error('Network response was not ok'); } - const data = await response.json(); + 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); + // 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; } |
