diff options
| author | Mistivia <i@mistivia.com> | 2025-02-05 14:03:38 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-02-05 14:03:38 +0800 |
| commit | f4d9dd9e349b377431fbc9a3b2a086c29cd6826e (patch) | |
| tree | fa2850216f252ffb54ab0068e2f75563cc808038 /src/control/left_panel.svelte.js | |
| parent | 781917675a1f7a81d61dca8e5134fb4867750685 (diff) | |
impl left panel and card thumbnail
Diffstat (limited to 'src/control/left_panel.svelte.js')
| -rw-r--r-- | src/control/left_panel.svelte.js | 45 |
1 files changed, 45 insertions, 0 deletions
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, +}; |
