aboutsummaryrefslogtreecommitdiff
path: root/src/control/left_panel.js
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-02-05 15:39:41 +0800
committerMistivia <i@mistivia.com>2025-02-05 15:39:41 +0800
commit365c471cfea10e781b87a63e5b6b4e28a17e2bfc (patch)
tree310414e9ada881446413ecebb15646fb06a47ed8 /src/control/left_panel.js
parent473e284e3eba96a4845c4a1a6c155dfac1f7cb68 (diff)
impl main panel
Diffstat (limited to 'src/control/left_panel.js')
-rw-r--r--src/control/left_panel.js45
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,
+};