等待后端更新接口

This commit is contained in:
2026-08-03 16:49:26 +08:00
parent ac5823547a
commit 5b79893650
131 changed files with 5324 additions and 1392 deletions
+47 -10
View File
@@ -133,6 +133,10 @@
else root.location.href = 'login.html';
}
function isForbidden(error) {
return Number(error && (error.status || error.code)) === 403;
}
async function init() {
var list = root.document && root.document.querySelector('[data-help-list]');
var status = root.document && root.document.querySelector('[data-help-status]');
@@ -145,23 +149,48 @@
return;
}
function setStatus(message) {
if (status) status.textContent = message || '';
function setApiState(target, type, message) {
if (!target) return;
if (root.ProfileUI && root.ProfileUI.setApiState && type) {
root.ProfileUI.setApiState(target, type, message);
return;
}
target.textContent = message || '';
}
function setStatus(type, message) {
setApiState(status, type, message);
}
function setHelpList(items) {
if (!items.length) {
setApiState(list, 'empty', '当前暂无帮助文章。');
return;
}
list.innerHTML = renderHelpArticleList(items);
}
function setPendingButton(button, pending, label) {
if (!button) return;
if (!button.dataset.defaultLabel) button.dataset.defaultLabel = button.textContent;
button.disabled = pending;
button.textContent = pending ? label : button.dataset.defaultLabel;
}
async function refreshList() {
try {
list.classList.add('is-loading');
setStatus('正在读取帮助文章…');
list.innerHTML = renderHelpArticleList(await loadHelpArticles(api));
setStatus('');
setApiState(list, 'loading', '正在读取帮助文章…');
setStatus('loading', '正在读取帮助文章…');
setHelpList(await loadHelpArticles(api));
setStatus('', '');
} catch (error) {
if (shouldRedirectToLogin(api, error)) {
redirectToLogin(api);
return;
}
list.innerHTML = '<div class="api-empty">帮助文章读取失败,请稍后重试</div>';
setStatus(error.message || '帮助文章读取失败');
setApiState(list, isForbidden(error) ? 'forbidden' : 'error', isForbidden(error) ? '暂无权限查看帮助文章。' : '帮助文章读取失败,请稍后重试。');
setStatus(isForbidden(error) ? 'forbidden' : 'error', isForbidden(error) ? '暂无权限查看帮助文章。' : (error.message || '帮助文章读取失败,请稍后重试。'));
} finally {
list.classList.remove('is-loading');
}
@@ -177,7 +206,7 @@
panel = list.querySelector('[data-help-detail-panel="' + helpId + '"]');
if (!panel) return;
button.disabled = true;
panel.textContent = '正在读取完整解答…';
setApiState(panel, 'loading', '正在读取完整解答…');
try {
panel.innerHTML = renderHelpArticleDetail(await loadHelpArticleDetail(api, helpId));
} catch (error) {
@@ -185,11 +214,18 @@
redirectToLogin(api);
return;
}
panel.textContent = error.message || '帮助文章详情读取失败';
setApiState(panel, isForbidden(error) ? 'forbidden' : 'error', isForbidden(error) ? '暂无权限查看该帮助文章。' : (error.message || '帮助文章详情读取失败,请稍后重试。'));
}
});
if (refresh) refresh.addEventListener('click', refreshList);
if (refresh) refresh.addEventListener('click', async function () {
setPendingButton(refresh, true, '正在刷新…');
try {
await refreshList();
} finally {
setPendingButton(refresh, false, '正在刷新…');
}
});
await refreshList();
}
@@ -200,6 +236,7 @@
renderHelpArticleDetail: renderHelpArticleDetail,
loadHelpArticleDetail: loadHelpArticleDetail,
loadHelpArticles: loadHelpArticles,
isForbidden: isForbidden,
shouldRedirectToLogin: shouldRedirectToLogin,
init: init
};