diff options
Diffstat (limited to 'src/control')
| -rw-r--r-- | src/control/deck.svelte.js | 0 | ||||
| -rw-r--r-- | src/control/left_panel.svelte.js | 45 |
2 files changed, 45 insertions, 0 deletions
diff --git a/src/control/deck.svelte.js b/src/control/deck.svelte.js new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/control/deck.svelte.js diff --git a/src/control/left_panel.svelte.js b/src/control/left_panel.svelte.js new file mode 100644 index 0000000..7c52e2f --- /dev/null +++ b/src/control/left_panel.svelte.js @@ -0,0 +1,45 @@ +import { writable } from 'svelte/store'; + +let leftPanelCardId = writable(''); +let leftPanelCardDesc = writable(''); + +let curVersion = 0; +let descCache = new Map(); + +function setLeftPanelCard(id) { + leftPanelCardId.set(id); + curVersion += 1; + leftPanelCardDesc.set('...'); + let ver = curVersion; + setDesc(ver, id); +} + +function setDesc(version, id) { + if (descCache.has(id)) { + leftPanelCardDesc.set(descCache.get(id)); + return; + } + let descUrl = 'https://oss.nebula.moe/ygo-card-text/' + id + '.txt'; + fetch(descUrl) + .then((response) => { + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return response.text(); // 将响应解析为文本 + }) + .then((desc) => { + descCache.set(id, desc); + if (version === curVersion) { + leftPanelCardDesc.set(desc); + } + }) + .catch((error) => { + console.error('Error fetching the file:', error); + }); +} + +export { + leftPanelCardId, + leftPanelCardDesc, + setLeftPanelCard, +}; |
