等待后端更新接口
This commit is contained in:
+47
-10
@@ -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
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user