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} 次
- +
`; },