diff --git a/static/js/pages/dashboard.js b/static/js/pages/dashboard.js
index 10341a0..fd75ac3 100644
--- a/static/js/pages/dashboard.js
+++ b/static/js/pages/dashboard.js
@@ -162,6 +162,9 @@ const PageDashboard = {
});
document.getElementById('btn-market-upload')?.addEventListener('click', () => this._showMarketUpload());
+ document.getElementById('btn-market-login')?.addEventListener('click', () => this._showMarketLogin());
+
+ this._updateMarketUI();
},
async _installFromMarket(id, filename) {
@@ -199,15 +202,29 @@ const PageDashboard = {
const overlay = document.createElement('div');
overlay.className = 'modal-overlay';
overlay.innerHTML = `
`;
document.body.appendChild(overlay);
+ if (this._marketToken) {
+ overlay.querySelector('#ml-login').style.display = 'none';
+ overlay.querySelector('#ml-register').style.display = 'none';
+ overlay.querySelector('#ml-logout').style.display = '';
+ overlay.querySelector('#ml-logout').addEventListener('click', () => {
+ this._marketToken = null;
+ localStorage.removeItem('turbosu-market-token');
+ overlay.remove();
+ this._updateMarketUI();
+ Toast.show('已退出', 'info');
+ });
+ }
+
overlay.addEventListener('click', (e) => { if (e.target === overlay) overlay.remove(); });
overlay.querySelector('#ml-login').addEventListener('click', async () => {
const email = document.getElementById('ml-email').value;
@@ -219,6 +236,7 @@ const PageDashboard = {
localStorage.setItem('turbosu-market-token', data.token);
Toast.show('登录成功', 'success');
overlay.remove();
+ this._updateMarketUI();
} else { Toast.show(data.message || '登录失败', 'error'); }
});
overlay.querySelector('#ml-register').addEventListener('click', async () => {
@@ -230,6 +248,21 @@ const PageDashboard = {
});
},
+ _updateMarketUI() {
+ const loginBtn = document.getElementById('btn-market-login');
+ const uploadBtn = document.getElementById('btn-market-upload');
+ if (!loginBtn || !uploadBtn) return;
+ if (this._marketToken) {
+ loginBtn.textContent = '已登录';
+ loginBtn.className = 'btn btn-sm btn-secondary';
+ uploadBtn.style.display = '';
+ } else {
+ loginBtn.textContent = '登录';
+ loginBtn.className = 'btn btn-sm btn-primary';
+ uploadBtn.style.display = 'none';
+ }
+ },
+
_openDashboard(themeId) {
const gameParam = this._selectedGameId ? `?game=${this._selectedGameId}` : '';
const url = `${location.origin}/dashboard/${themeId}${gameParam}`;
@@ -279,6 +312,7 @@ const PageDashboard = {