// 聊天室字号偏好控制，保留旧的 localStorage key 以兼容已有用户设置。

export const CHAT_FONT_SIZE_STORAGE_KEY = "chat_font_size";
let fontSizeEventsBound = false;

/**
 * 应用字号到聊天消息窗口，并保存到 localStorage。
 *
 * @param {string|number} size 字号大小
 * @returns {boolean}
 */
export function applyFontSize(size) {
    const px = Number.parseInt(size, 10);
    if (Number.isNaN(px) || px < 10 || px > 30) {
        return false;
    }

    const publicContainer = document.getElementById("chat-messages-container");
    const privateContainer = document.getElementById("chat-messages-container2");
    if (publicContainer) {
        publicContainer.style.fontSize = `${px}px`;
    }
    if (privateContainer) {
        privateContainer.style.fontSize = `${px}px`;
    }

    localStorage.setItem(CHAT_FONT_SIZE_STORAGE_KEY, String(px));

    const selector = document.getElementById("font_size_select");
    if (selector) {
        selector.value = String(px);
    }

    return true;
}

/**
 * 从 localStorage 恢复已保存的聊天室字号。
 *
 * @returns {boolean}
 */
export function restoreChatFontSize() {
    const saved = localStorage.getItem(CHAT_FONT_SIZE_STORAGE_KEY);

    return saved ? applyFontSize(saved) : false;
}

/**
 * 绑定字号选择器事件。
 *
 * @returns {void}
 */
export function bindChatFontSizeControl() {
    if (fontSizeEventsBound || typeof document === "undefined") {
        return;
    }

    fontSizeEventsBound = true;
    document.addEventListener("change", (event) => {
        if (!(event.target instanceof HTMLSelectElement) || event.target.id !== "font_size_select") {
            return;
        }

        applyFontSize(event.target.value);
    });
}
