xiangyixiangqin/miniapp/utils/storage.js
2026-01-26 22:33:33 +08:00

207 lines
5.0 KiB
JavaScript

/**
* 存储工具模块
* 封装 uni.setStorageSync/getStorageSync
* Requirements: 1.2
*/
const STORAGE_KEYS = {
TOKEN: 'token',
USER_INFO: 'userInfo',
CONFIG: 'config',
LAST_POPUP_DATE: 'lastPopupDate',
MEMBER_AD_CLOSED_DATE: 'memberAdClosedDate',
MEMBER_AD_CLOSED_FOREVER: 'memberAdClosedForever',
GENDER_PREFERENCE: 'genderPreference',
DEFAULT_AVATAR: 'defaultAvatar',
// 服务号关注弹窗相关
SERVICE_ACCOUNT_POPUP_COUNT: 'serviceAccountPopupCount',
SERVICE_ACCOUNT_POPUP_DATE: 'serviceAccountPopupDate',
SERVICE_ACCOUNT_POPUP_LAST_TIME: 'serviceAccountPopupLastTime',
SERVICE_ACCOUNT_FOLLOWED: 'serviceAccountFollowed',
// 小程序订阅消息提醒相关
SUBSCRIBE_REMINDER_CLOSED_DATE: 'subscribeReminderClosedDate'
}
/**
* 设置存储项
* @param {string} key 存储键
* @param {any} value 存储值
*/
export function setStorage(key, value) {
try {
uni.setStorageSync(key, value)
return true
} catch (e) {
console.error('Storage set error:', e)
return false
}
}
/**
* 获取存储项
* @param {string} key 存储键
* @param {any} defaultValue 默认值
* @returns {any}
*/
export function getStorage(key, defaultValue = null) {
try {
const value = uni.getStorageSync(key)
return value !== '' ? value : defaultValue
} catch (e) {
console.error('Storage get error:', e)
return defaultValue
}
}
/**
* 移除存储项
* @param {string} key 存储键
*/
export function removeStorage(key) {
try {
uni.removeStorageSync(key)
return true
} catch (e) {
console.error('Storage remove error:', e)
return false
}
}
/**
* 清空所有存储
*/
export function clearStorage() {
try {
uni.clearStorageSync()
return true
} catch (e) {
console.error('Storage clear error:', e)
return false
}
}
// Token 相关方法
export function setToken(token) {
return setStorage(STORAGE_KEYS.TOKEN, token)
}
export function getToken() {
return getStorage(STORAGE_KEYS.TOKEN, '')
}
export function removeToken() {
return removeStorage(STORAGE_KEYS.TOKEN)
}
// 用户信息相关方法
export function setUserInfo(userInfo) {
return setStorage(STORAGE_KEYS.USER_INFO, userInfo)
}
export function getUserInfo() {
return getStorage(STORAGE_KEYS.USER_INFO, null)
}
export function removeUserInfo() {
return removeStorage(STORAGE_KEYS.USER_INFO)
}
// 配置相关方法
export function setConfig(config) {
return setStorage(STORAGE_KEYS.CONFIG, config)
}
export function getConfig() {
return getStorage(STORAGE_KEYS.CONFIG, null)
}
// 弹窗日期相关方法
export function setLastPopupDate(date) {
return setStorage(STORAGE_KEYS.LAST_POPUP_DATE, date)
}
export function getLastPopupDate() {
return getStorage(STORAGE_KEYS.LAST_POPUP_DATE, '')
}
// 会员广告关闭日期
export function setMemberAdClosedDate(date) {
return setStorage(STORAGE_KEYS.MEMBER_AD_CLOSED_DATE, date)
}
export function getMemberAdClosedDate() {
return getStorage(STORAGE_KEYS.MEMBER_AD_CLOSED_DATE, '')
}
// 会员广告永久关闭
export function setMemberAdClosedForever(closed) {
return setStorage(STORAGE_KEYS.MEMBER_AD_CLOSED_FOREVER, closed)
}
export function getMemberAdClosedForever() {
return getStorage(STORAGE_KEYS.MEMBER_AD_CLOSED_FOREVER, false)
}
// 性别偏好
export function setGenderPreference(gender) {
return setStorage(STORAGE_KEYS.GENDER_PREFERENCE, gender)
}
export function getGenderPreference() {
return getStorage(STORAGE_KEYS.GENDER_PREFERENCE, 0)
}
// 默认头像
export function setDefaultAvatar(avatar) {
return setStorage(STORAGE_KEYS.DEFAULT_AVATAR, avatar)
}
export function getDefaultAvatar() {
return getStorage(STORAGE_KEYS.DEFAULT_AVATAR, '/static/logo.png')
}
export { STORAGE_KEYS }
// 服务号关注弹窗相关方法
export function setServiceAccountPopupCount(count) {
return setStorage(STORAGE_KEYS.SERVICE_ACCOUNT_POPUP_COUNT, count)
}
export function getServiceAccountPopupCount() {
return getStorage(STORAGE_KEYS.SERVICE_ACCOUNT_POPUP_COUNT, 0)
}
export function setServiceAccountPopupDate(date) {
return setStorage(STORAGE_KEYS.SERVICE_ACCOUNT_POPUP_DATE, date)
}
export function getServiceAccountPopupDate() {
return getStorage(STORAGE_KEYS.SERVICE_ACCOUNT_POPUP_DATE, '')
}
export function setServiceAccountPopupLastTime(time) {
return setStorage(STORAGE_KEYS.SERVICE_ACCOUNT_POPUP_LAST_TIME, time)
}
export function getServiceAccountPopupLastTime() {
return getStorage(STORAGE_KEYS.SERVICE_ACCOUNT_POPUP_LAST_TIME, 0)
}
export function setServiceAccountFollowed(followed) {
return setStorage(STORAGE_KEYS.SERVICE_ACCOUNT_FOLLOWED, followed)
}
export function getServiceAccountFollowed() {
return getStorage(STORAGE_KEYS.SERVICE_ACCOUNT_FOLLOWED, false)
}
// 小程序订阅消息提醒相关方法
export function setSubscribeReminderClosedDate(date) {
return setStorage(STORAGE_KEYS.SUBSCRIBE_REMINDER_CLOSED_DATE, date)
}
export function getSubscribeReminderClosedDate() {
return getStorage(STORAGE_KEYS.SUBSCRIBE_REMINDER_CLOSED_DATE, '')
}