修复聊天室字号偏好和游戏通知显示
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
// 聊天室偏好与每日状态工具,承接从 Blade 内联脚本迁移出的纯数据规整逻辑。
|
||||
|
||||
import { CHAT_FONT_SIZE_STORAGE_KEY, normalizeChatFontSize } from "./font-size.js";
|
||||
|
||||
export const BLOCKABLE_SYSTEM_SENDERS = ["钓鱼播报", "猜成语", "星海小博士", "百家乐", "跑马", "神秘箱子", "五子棋", "老虎机", "双色球彩票"];
|
||||
export const BLOCKED_SYSTEM_SENDERS_STORAGE_KEY = "chat_blocked_system_senders";
|
||||
export const CHAT_SOUND_MUTED_STORAGE_KEY = "chat_sound_muted";
|
||||
@@ -12,7 +14,7 @@ let blockMenuEventsBound = false;
|
||||
*
|
||||
* @param {Record<string, unknown>|null|undefined} raw
|
||||
* @param {string[]} blockableSystemSenders
|
||||
* @returns {{blocked_system_senders:string[],sound_muted:boolean}}
|
||||
* @returns {{blocked_system_senders:string[],sound_muted:boolean,font_size:number|null}}
|
||||
*/
|
||||
export function normalizeChatPreferences(raw, blockableSystemSenders = BLOCKABLE_SYSTEM_SENDERS) {
|
||||
// 服务端或旧本地缓存可能包含已下架发送者,规整时只保留当前白名单。
|
||||
@@ -23,6 +25,7 @@ export function normalizeChatPreferences(raw, blockableSystemSenders = BLOCKABLE
|
||||
return {
|
||||
blocked_system_senders: Array.from(new Set(blocked)),
|
||||
sound_muted: Boolean(raw?.sound_muted),
|
||||
font_size: normalizeChatFontSize(raw?.font_size),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -454,17 +457,19 @@ export function bindBlockMenuControls() {
|
||||
/**
|
||||
* 当前登录账号没有服务端偏好时,判断是否需要迁移旧本地偏好。
|
||||
*
|
||||
* @param {{blocked_system_senders?:string[],sound_muted?:boolean}} serverPreferences
|
||||
* @param {{blocked_system_senders?:string[],sound_muted?:boolean,font_size?:number|null}} serverPreferences
|
||||
* @param {string[]} localBlockedSenders
|
||||
* @param {boolean} localMuted
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function shouldMigrateLocalChatPreferences(serverPreferences, localBlockedSenders, localMuted) {
|
||||
// 只有服务端尚无偏好时才迁移旧本地设置,避免覆盖已同步的账号配置。
|
||||
const localFontSize = normalizeChatFontSize(localStorage.getItem(CHAT_FONT_SIZE_STORAGE_KEY));
|
||||
const hasServerPreferences = (serverPreferences?.blocked_system_senders || []).length > 0
|
||||
|| Boolean(serverPreferences?.sound_muted);
|
||||
|| Boolean(serverPreferences?.sound_muted)
|
||||
|| normalizeChatFontSize(serverPreferences?.font_size) !== null;
|
||||
|
||||
return !hasServerPreferences && (localBlockedSenders.length > 0 || localMuted);
|
||||
return !hasServerPreferences && (localBlockedSenders.length > 0 || localMuted || localFontSize !== null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -580,13 +585,19 @@ export function resolveBlockedSystemSenderKey(msg) {
|
||||
/**
|
||||
* 构建当前聊天室偏好快照。
|
||||
*
|
||||
* @returns {{blocked_system_senders:string[],sound_muted:boolean}}
|
||||
* @returns {{blocked_system_senders:string[],sound_muted:boolean,font_size:number|null}}
|
||||
*/
|
||||
export function buildChatPreferencesPayload() {
|
||||
const state = window.chatState;
|
||||
const selector = document.getElementById("font_size_select");
|
||||
const fontSize = normalizeChatFontSize(selector?.value)
|
||||
?? normalizeChatFontSize(localStorage.getItem(CHAT_FONT_SIZE_STORAGE_KEY))
|
||||
?? normalizeChatFontSize(window.chatContext?.chatPreferences?.font_size);
|
||||
|
||||
return {
|
||||
blocked_system_senders: state ? Array.from(state.blockedSystemSenders) : [],
|
||||
sound_muted: isSoundMuted(),
|
||||
font_size: fontSize,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user