补充前端交互边界注释

This commit is contained in:
2026-04-25 10:17:51 +08:00
parent e341f2d1a7
commit a847dad00a
4 changed files with 7 additions and 0 deletions
+3
View File
@@ -94,6 +94,7 @@ export async function bankAction(type) {
return; return;
} }
// 提交期间禁用按钮,避免连续点击重复发起同一笔存取款请求。
btnEl.disabled = true; btnEl.disabled = true;
try { try {
const response = await fetch(`/bank/${type}`, { const response = await fetch(`/bank/${type}`, {
@@ -112,6 +113,7 @@ export async function bankAction(type) {
inputEl.value = ""; inputEl.value = "";
await bankLoadInfo(); await bankLoadInfo();
// 如果用户正停留在排行榜页,存取款成功后同步刷新当前页余额排名。
if (document.getElementById("bank-view-ranking")?.style.display !== "none") { if (document.getElementById("bank-view-ranking")?.style.display !== "none") {
await fetchBankRanking(bankRankPage); await fetchBankRanking(bankRankPage);
} }
@@ -311,6 +313,7 @@ function syncRankingButtons(lastPage) {
* @returns {string} * @returns {string}
*/ */
function renderRankingRow(user, index) { function renderRankingRow(user, index) {
// 排行榜接口每页 20 条,这里用当前页和页内索引还原全局名次。
const absoluteRank = (bankRankPage - 1) * 20 + index + 1; const absoluteRank = (bankRankPage - 1) * 20 + index + 1;
let rankClass = ""; let rankClass = "";
if (bankRankSort === "desc" && bankRankPage === 1) { if (bankRankSort === "desc" && bankRankPage === 1) {
+1
View File
@@ -347,6 +347,7 @@ export function bindMobileDrawerControls() {
scheduleRenderMobileUserList(); scheduleRenderMobileUserList();
}); });
// 只有名单抽屉打开时才立即重渲染,关闭状态下等下次打开再读取最新 onlineUsers。
window.addEventListener("chatroom:users-updated", () => { window.addEventListener("chatroom:users-updated", () => {
if (mobileDrawerOpen === "users") { if (mobileDrawerOpen === "users") {
renderMobileUserList(); renderMobileUserList();
@@ -15,6 +15,7 @@ let blockMenuEventsBound = false;
* @returns {{blocked_system_senders:string[],sound_muted:boolean}} * @returns {{blocked_system_senders:string[],sound_muted:boolean}}
*/ */
export function normalizeChatPreferences(raw, blockableSystemSenders = BLOCKABLE_SYSTEM_SENDERS) { export function normalizeChatPreferences(raw, blockableSystemSenders = BLOCKABLE_SYSTEM_SENDERS) {
// 服务端或旧本地缓存可能包含已下架发送者,规整时只保留当前白名单。
const blocked = Array.isArray(raw?.blocked_system_senders) const blocked = Array.isArray(raw?.blocked_system_senders)
? raw.blocked_system_senders.filter((sender) => blockableSystemSenders.includes(sender)) ? raw.blocked_system_senders.filter((sender) => blockableSystemSenders.includes(sender))
: []; : [];
@@ -317,6 +318,7 @@ export function bindBlockMenuControls() {
* @returns {boolean} * @returns {boolean}
*/ */
export function shouldMigrateLocalChatPreferences(serverPreferences, localBlockedSenders, localMuted) { export function shouldMigrateLocalChatPreferences(serverPreferences, localBlockedSenders, localMuted) {
// 只有服务端尚无偏好时才迁移旧本地设置,避免覆盖已同步的账号配置。
const hasServerPreferences = (serverPreferences?.blocked_system_senders || []).length > 0 const hasServerPreferences = (serverPreferences?.blocked_system_senders || []).length > 0
|| Boolean(serverPreferences?.sound_muted); || Boolean(serverPreferences?.sound_muted);
+1
View File
@@ -72,6 +72,7 @@ export function renderRoomStatusRow(room, options = {}) {
? '<span style="font-size:9px;color:#7090b0;margin-left:3px;">当前</span>' ? '<span style="font-size:9px;color:#7090b0;margin-left:3px;">当前</span>'
: '<span style="font-size:9px;color:#336699;opacity:.7;margin-left:3px;">当前</span>') : '<span style="font-size:9px;color:#336699;opacity:.7;margin-left:3px;">当前</span>')
: ""; : "";
// 当前房间不生成跳转事件,避免重复进入同一房间触发无意义刷新。
const clickHandler = isCurrent ? "" : buildRoomClickHandler(room.id, options.roomUrlResolver); const clickHandler = isCurrent ? "" : buildRoomClickHandler(room.id, options.roomUrlResolver);
const badge = room.online > 0 const badge = room.online > 0
? `<span style="background:#e8f5e9;color:#2e7d32;border-radius:8px;padding:0 ${variant === "mobile" ? "6px" : "5px"};font-size:10px;font-weight:bold;white-space:nowrap;flex-shrink:0;">${room.online}${variant === "mobile" ? "" : " "}人</span>` ? `<span style="background:#e8f5e9;color:#2e7d32;border-radius:8px;padding:0 ${variant === "mobile" ? "6px" : "5px"};font-size:10px;font-weight:bold;white-space:nowrap;flex-shrink:0;">${room.online}${variant === "mobile" ? "" : " "}人</span>`