79 lines
1.6 KiB
JavaScript
79 lines
1.6 KiB
JavaScript
const STORAGE_KEYS = {
|
|
APP_STATE: 'font2svg:app-state',
|
|
FAVORITES: 'font2svg:favorites',
|
|
ROUTE_STATE: 'font2svg:route-state',
|
|
}
|
|
|
|
function getStorage(key, fallbackValue) {
|
|
try {
|
|
const value = wx.getStorageSync(key)
|
|
if (value === '' || value === undefined || value === null) {
|
|
return fallbackValue
|
|
}
|
|
return value
|
|
} catch (error) {
|
|
console.warn('读取本地存储失败:', key, error)
|
|
return fallbackValue
|
|
}
|
|
}
|
|
|
|
function setStorage(key, value) {
|
|
try {
|
|
wx.setStorageSync(key, value)
|
|
} catch (error) {
|
|
console.warn('写入本地存储失败:', key, error)
|
|
}
|
|
}
|
|
|
|
function loadAppState() {
|
|
return getStorage(STORAGE_KEYS.APP_STATE, {})
|
|
}
|
|
|
|
function saveAppState(partialState) {
|
|
const current = loadAppState()
|
|
const next = {
|
|
...current,
|
|
...partialState,
|
|
updatedAt: Date.now(),
|
|
}
|
|
setStorage(STORAGE_KEYS.APP_STATE, next)
|
|
return next
|
|
}
|
|
|
|
function loadFavorites() {
|
|
return getStorage(STORAGE_KEYS.FAVORITES, [])
|
|
}
|
|
|
|
function saveFavorites(favorites) {
|
|
const unique = Array.from(new Set(favorites))
|
|
setStorage(STORAGE_KEYS.FAVORITES, unique)
|
|
return unique
|
|
}
|
|
|
|
function loadRouteState() {
|
|
return getStorage(STORAGE_KEYS.ROUTE_STATE, {})
|
|
}
|
|
|
|
function saveRouteState(partialState) {
|
|
const current = loadRouteState()
|
|
const next = {
|
|
...current,
|
|
...partialState,
|
|
updatedAt: Date.now(),
|
|
}
|
|
setStorage(STORAGE_KEYS.ROUTE_STATE, next)
|
|
return next
|
|
}
|
|
|
|
module.exports = {
|
|
STORAGE_KEYS,
|
|
getStorage,
|
|
setStorage,
|
|
loadAppState,
|
|
saveAppState,
|
|
loadFavorites,
|
|
saveFavorites,
|
|
loadRouteState,
|
|
saveRouteState,
|
|
}
|