'use strict'; const cfg = require('../config.js'); const SETTINGS_HANDLERS = { autoLaunch: { // 宽松强制转换:布尔、真值字符串('true' / 'yes')、1 都视为开启 apply: (cur, v) => cfg.sanitize({ ...cur, autoLaunch: Boolean(v) }), }, maxItems: { apply: (cur, v) => cfg.sanitize({ ...cur, maxItems: v }), }, displayLimit: { // 界面显示条数 —— 只影响渲染层,不动数据库。运行时改完要通知所有窗口 // 重拉,preload 的默认值才会跟着变(见 main.js settings:set 分支)。 apply: (cur, v) => cfg.sanitize({ ...cur, displayLimit: v }), }, pollMs: { apply: (cur, v) => cfg.sanitize({ ...cur, pollMs: v }), }, hotkey: { // 预设白名单校验在 cfg.sanitize 里(非法值回落默认 Ctrl+Alt+V)。 // 运行时的注册/解绑在 main.js settings:set 的 hotkey 分支, // 那里才拿得到 globalShortcut。 apply: (cur, v) => cfg.sanitize({ ...cur, hotkey: v }), }, // dataDir 刻意没有 handler:更换目录必须走 settings:choose-dir // (关库 → 搬文件 → 校验 → 改配置 → 重启)。只在这里改 config.dataDir, // 运行中的数据库连接仍指向旧目录 —— 内存与落盘分叉,重启后数据"消失"。 }; function applyPatch(current, { key, value }) { const h = SETTINGS_HANDLERS[key]; if (!h) return { ...current }; return h.apply(current, value); } module.exports = { SETTINGS_HANDLERS, applyPatch };