Files
web-fusion/src/utils/pk-mini/storage.js
2026-02-08 15:33:10 +08:00

80 lines
1.8 KiB
JavaScript

// PK Mini 模块专用 Storage 工具
// 使用 pk_mini_ 前缀避免与主项目冲突
const PREFIX = 'pk_mini_'
export function setStorage(key, value) {
localStorage.setItem(PREFIX + key, JSON.stringify(value))
}
export function getStorage(key) {
const value = localStorage.getItem(PREFIX + key)
if (value) {
try {
return JSON.parse(value)
} catch (e) {
return value
}
}
return null
}
export function getPromiseStorage(key) {
return new Promise((resolve, reject) => {
const value = getStorage(key)
if (value) {
resolve(value)
} else {
reject(new Error('Key not found: ' + key))
}
})
}
export function clearStorage(key) {
localStorage.removeItem(PREFIX + key)
}
export function getPromiseSessionStorage(key) {
return new Promise((resolve, reject) => {
const value = sessionStorage.getItem(PREFIX + key)
if (value) {
try {
resolve(JSON.parse(value))
} catch (e) {
resolve(value)
}
} else {
reject(new Error('Key not found: ' + key))
}
})
}
export function setSessionStorage(key, value) {
sessionStorage.setItem(PREFIX + key, JSON.stringify(value))
}
// 获取主项目的用户数据(用于获取 token 和用户信息)
// 主项目使用 'user' 键存储用户信息
export function getMainUserData() {
// 优先从 'user' 获取(主项目当前使用的键)
let userData = localStorage.getItem('user')
if (userData) {
try {
return JSON.parse(userData)
} catch (e) {
// 解析失败,继续尝试其他键
}
}
// 兼容:尝试从 'user_data' 获取(旧键名)
userData = localStorage.getItem('user_data')
if (userData) {
try {
return JSON.parse(userData)
} catch (e) {
return null
}
}
return null
}