diff options
| author | Mistivia <i@mistivia.com> | 2025-02-05 15:39:41 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-02-05 15:39:41 +0800 |
| commit | 365c471cfea10e781b87a63e5b6b4e28a17e2bfc (patch) | |
| tree | 310414e9ada881446413ecebb15646fb06a47ed8 /src/control/left_panel.js | |
| parent | 473e284e3eba96a4845c4a1a6c155dfac1f7cb68 (diff) | |
impl main panel
Diffstat (limited to 'src/control/left_panel.js')
| -rw-r--r-- | src/control/left_panel.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/control/left_panel.js b/src/control/left_panel.js new file mode 100644 index 0000000..898d8af --- /dev/null +++ b/src/control/left_panel.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, +}; |
