import type { UsAppBoundLocationDto } from '../types/usAppBound' const KEY_ACCESS = 'access_token' const KEY_REFRESH = 'refresh_token' const KEY_LOCATIONS = 'bound_locations_json' const KEY_LOGGED = 'isLoggedIn' const KEY_USER = 'userName' const KEY_EMAIL = 'user_email' const KEY_REMEMBER = 'login_remember_me' const KEY_SAVED_EMAIL = 'login_saved_email' const KEY_SAVED_PASSWORD = 'login_saved_password' export function saveAuthSession(payload: { token: string refreshToken: string locations: UsAppBoundLocationDto[] /** 展示用:无姓名接口时用邮箱本地部分或全文 */ displayName: string email: string }): void { uni.setStorageSync(KEY_ACCESS, payload.token) uni.setStorageSync(KEY_REFRESH, payload.refreshToken) uni.setStorageSync(KEY_LOCATIONS, JSON.stringify(payload.locations ?? [])) uni.setStorageSync(KEY_LOGGED, 'true') uni.setStorageSync(KEY_USER, payload.displayName) uni.setStorageSync(KEY_EMAIL, payload.email) } export function setBoundLocations(locations: UsAppBoundLocationDto[]): void { uni.setStorageSync(KEY_LOCATIONS, JSON.stringify(locations ?? [])) } export function getBoundLocations(): UsAppBoundLocationDto[] { try { const raw = uni.getStorageSync(KEY_LOCATIONS) if (!raw || typeof raw !== 'string') return [] const parsed = JSON.parse(raw) as unknown if (!Array.isArray(parsed)) return [] return parsed as UsAppBoundLocationDto[] } catch { return [] } } export function clearAuthSession(): void { uni.removeStorageSync(KEY_ACCESS) uni.removeStorageSync(KEY_REFRESH) uni.removeStorageSync(KEY_LOCATIONS) uni.removeStorageSync(KEY_LOGGED) uni.removeStorageSync(KEY_USER) uni.removeStorageSync(KEY_EMAIL) uni.removeStorageSync('storeId') uni.removeStorageSync('storeName') uni.removeStorageSync('storeLocationCode') } export function isLoggedIn(): boolean { return !!uni.getStorageSync(KEY_ACCESS) && uni.getStorageSync(KEY_LOGGED) === 'true' } export function getAccessToken(): string { return uni.getStorageSync(KEY_ACCESS) || '' } export function saveRememberPreference(remember: boolean, email: string, password: string): void { uni.setStorageSync(KEY_REMEMBER, remember ? '1' : '0') if (remember) { uni.setStorageSync(KEY_SAVED_EMAIL, email) uni.setStorageSync(KEY_SAVED_PASSWORD, password) } else { uni.removeStorageSync(KEY_SAVED_EMAIL) uni.removeStorageSync(KEY_SAVED_PASSWORD) } } export function loadSavedCredentials(): { email: string; password: string; remember: boolean } { const remember = uni.getStorageSync(KEY_REMEMBER) === '1' return { remember, email: remember ? (uni.getStorageSync(KEY_SAVED_EMAIL) || '') : '', password: remember ? (uni.getStorageSync(KEY_SAVED_PASSWORD) || '') : '', } }