From 127347d76a6a202e656ccc2a22c107aa002cb887 Mon Sep 17 00:00:00 2001 From: SunWuyuan Date: Sat, 15 Mar 2025 18:06:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=80=9A=E7=9F=A5=E6=9D=83?= =?UTF-8?q?=E9=99=90=E5=92=8C=E6=8C=81=E4=B9=85=E6=80=A7=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=A1=B9=E9=BB=98=E8=AE=A4=E5=80=BC=E5=8F=8A?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/settings.js | 57 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/src/utils/settings.js b/src/utils/settings.js index b1aa100..5557a18 100644 --- a/src/utils/settings.js +++ b/src/utils/settings.js @@ -1,3 +1,41 @@ +// 请求通知权限 +async function requestNotificationPermission() { + if (Notification && Notification.requestPermission) { + const permission = await Notification.requestPermission(); + if (permission === "granted") { + console.log("通知权限已授予"); + return true; + } else { + console.warn("通知权限被拒绝"); + return false; + } + } else { + console.warn("浏览器不支持通知权限请求"); + return false; + } +} +// 请求持久性存储权限 +async function requestPersistentStorage() { + if (navigator.storage && navigator.storage.persist) { + const isPersisted = await navigator.storage.persist(); + if (isPersisted) { + console.log("持久性存储已启用"); + } else { + console.warn("持久性存储请求被拒绝"); + } + } else { + console.warn("浏览器不支持持久性存储"); + } +} + +// 在页面加载时请求通知权限和持久性存储 +window.addEventListener("load", async () => { + const notificationGranted = await requestNotificationPermission(); + if (notificationGranted) { + await requestPersistentStorage(); + } +}); + /** * 配置项定义 * @typedef {Object} SettingDefinition @@ -20,7 +58,7 @@ const settingsDefinitions = { // 显示设置 "display.emptySubjectDisplay": { type: "string", - default: "button", // 修改默认值为 'button' + default: "card", // 修改默认值为 'button' validate: (value) => ["card", "button"].includes(value), description: "空科目的显示方式:卡片或按钮", }, @@ -83,7 +121,8 @@ const settingsDefinitions = { default: true, description: "是否启用自动保存", }, - "edit.blockNonTodayAutoSave": { // 添加新选项 + "edit.blockNonTodayAutoSave": { + // 添加新选项 type: "boolean", default: true, description: "禁止自动保存非当天数据", @@ -93,7 +132,8 @@ const settingsDefinitions = { default: true, description: "编辑前是否自动刷新", }, - "edit.confirmNonTodaySave": { // 添加新选项 + "edit.confirmNonTodaySave": { + // 添加新选项 type: "boolean", default: true, description: "保存非当天数据时显示确认对话框,禁用则允许直接保存", @@ -110,7 +150,8 @@ const settingsDefinitions = { default: false, description: "是否显示调试配置", }, - "developer.disableMessageLog": { // 添加新的设置项 + "developer.disableMessageLog": { + // 添加新的设置项 type: "boolean", default: false, description: "禁用消息日志记录", @@ -244,7 +285,7 @@ function getSetting(key) { // 确保开发者相关设置正确处理 if (definition.requireDeveloper) { - const devEnabled = settingsCache['developer.enabled']; + const devEnabled = settingsCache["developer.enabled"]; if (!devEnabled) { return definition.default; } @@ -262,14 +303,14 @@ function logSettingsChange(key, oldValue, newValue) { } const shouldLog = - settingsCache['developer.enabled'] && - settingsCache['developer.showDebugConfig']; + settingsCache["developer.enabled"] && + settingsCache["developer.showDebugConfig"]; if (shouldLog) { console.log(`[Settings] ${key}:`, { old: oldValue, new: newValue, - time: new Date().toLocaleTimeString() + time: new Date().toLocaleTimeString(), }); } }