6176f2c341
- records: 底部列表与月份选择器联动,新增 [本月|最近] 分段控件;标题/空态随模式切换 - leaderboard: 领奖台布局(冠军居中+皇冠)、次数标注于底座且三档水平对齐;头像 cloud:// 批量预解析提速(云函数需重新部署) - index/timer: 主色底图标改白色变体修复隐形;目标数字按微信字体缩放补偿真机遮挡 - settings: 配色方案横滑渐变色卡;头像上传前压缩至 200px - theme: 新增 teal 主题;暗黑背景统一对齐 - 圆形头像双保险(image 自身 border-radius)修复月/年榜方图 注: cloudfunctions/leaderboard 改动须在开发者工具重新部署才生效。
51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
/**
|
|
* 系统深色模式监听 — 提供初始值与变更回调
|
|
* 旧设备 wx.onThemeChange 失败时退化为只读一次
|
|
*/
|
|
|
|
const STORAGE_KEY = 'dark_mode_pref'
|
|
|
|
function _readSystemTheme() {
|
|
try {
|
|
// wx.getSystemInfoSync 已废弃,改用 wx.getWindowInfo(同样返回 theme 字段)
|
|
const info = wx.getWindowInfo()
|
|
return info.theme === 'dark'
|
|
} catch (e) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
function getInitialDarkMode() {
|
|
const pref = wx.getStorageSync(STORAGE_KEY) || 'system'
|
|
if (pref === 'system') return _readSystemTheme()
|
|
return pref === 'dark'
|
|
}
|
|
|
|
function getPref() {
|
|
return wx.getStorageSync(STORAGE_KEY) || 'system'
|
|
}
|
|
|
|
function setPref(value) {
|
|
if (!['system', 'light', 'dark'].includes(value)) return
|
|
wx.setStorageSync(STORAGE_KEY, value)
|
|
}
|
|
|
|
function watchDarkMode(onChange) {
|
|
if (typeof wx.onThemeChange !== 'function') return
|
|
try {
|
|
wx.onThemeChange(({ theme }) => {
|
|
const pref = getPref()
|
|
if (pref === 'system') onChange(theme === 'dark')
|
|
})
|
|
} catch (e) {
|
|
// 旧设备不支持,忽略
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
getInitialDarkMode,
|
|
getPref,
|
|
setPref,
|
|
watchDarkMode
|
|
}
|