From d04ab1138cfae6d40cf10d36d60aa1dfd58a4abe Mon Sep 17 00:00:00 2001 From: AskaEth Date: Mon, 27 Jul 2026 08:47:35 +0800 Subject: [PATCH] feat: market checks local installs, shows installed badge --- static/js/pages/market.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/static/js/pages/market.js b/static/js/pages/market.js index 5c7c430..a103b5f 100644 --- a/static/js/pages/market.js +++ b/static/js/pages/market.js @@ -34,8 +34,12 @@ const PageMarket = { const res = await fetch(endpoint); const data = await res.json(); const items = data.items || []; + + let localIds = []; + try { const lr = await fetch('/api/dashboards?category=all'); const ld = await lr.json(); if (Array.isArray(ld)) localIds = ld.map(d => d.id); } catch(e) {} + if (!items.length) { grid.innerHTML = this._emptyHtml(isScene ? '暂无场景' : '暂无仪表盘'); return; } - grid.innerHTML = items.map(d => this._cardHtml(d, isScene)).join(''); + grid.innerHTML = items.map(d => this._cardHtml(d, isScene, localIds.includes(d.name || d.id))).join(''); } catch (e) { grid.innerHTML = '
加载失败
'; } }, @@ -58,9 +62,9 @@ const PageMarket = { } catch (e) { grid.innerHTML = '
加载失败
'; } }, - _cardHtml(d, isScene) { + _cardHtml(d, isScene, installed) { const icon = isScene ? '🎬' : (d.icon || '📦'); - const btnLabel = isScene ? '安装场景' : '安装'; + const label = installed ? '已安装' : (isScene ? '安装场景' : '安装'); const btnClass = isScene ? 'btn-m-install-scene' : 'btn-m-install'; return `
${icon}
@@ -72,7 +76,7 @@ const PageMarket = {
${d.author||''}${d.downloads||0} 次
- +
`; },