import { genealogyContext } from "./genealogy/context.js"; const TOKEN_KEY = 'jiapu_token' const normalizeToken = (token) => { if (typeof token !== 'string' || !token || token.trim() !== token) { throw new TypeError('会话令牌必须是无边界空白的非空字符串') } return token } const readToken = () => { const stored = uni.getStorageSync(TOKEN_KEY) if (stored === '' || stored === null || stored === undefined) return '' try { return normalizeToken(stored) } catch { // 损坏令牌与其账号作用域下的当前家谱必须一起失效,避免页面继续展示 // 上一个账号的领域上下文。 uni.removeStorageSync(TOKEN_KEY) genealogyContext.clearCurrentGenealogyId() return '' } } export const session = { getToken: readToken, saveToken: (token) => { const normalizedToken = normalizeToken(token) const previousToken = readToken() if (previousToken !== normalizedToken) { genealogyContext.clearCurrentGenealogyId() } uni.setStorageSync(TOKEN_KEY, normalizedToken) return normalizedToken }, clear: () => { uni.removeStorageSync(TOKEN_KEY) genealogyContext.clearCurrentGenealogyId() } }