/** * AsyncStorage 封装工具 * 提供类型安全的本地存储操作 */ import AsyncStorage from '@react-native-async-storage/async-storage'; /** * 存储键名常量 */ export enum STORAGE_KEYS { AUTH_TOKEN = 'auth_token', USER_INFO = 'user_info', SETTINGS = 'settings', THEME = 'theme', LANGUAGE = 'language', USER_PREFERENCES = 'user_preferences', TENANT_STORE = 'tenant_storage', USER_STORE = 'user_storage', SETTINGS_STORE = 'settings_storage', } /** * Storage 工具类 */ class Storage { /** * 存储字符串 */ static async setString(key: string, value: string): Promise { try { await AsyncStorage.setItem(key, value); if (__DEV__) { console.log(`💾 Storage set: ${key}`); } } catch (error) { console.error(`Storage setString error for key "${key}":`, error); throw error; } } /** * 获取字符串 */ static async getString(key: string): Promise { try { const value = await AsyncStorage.getItem(key); if (__DEV__) { console.log(`📖 Storage get: ${key}`, value ? '✓' : '✗'); } return value; } catch (error) { console.error(`Storage getString error for key "${key}":`, error); return null; } } /** * 存储对象(自动序列化为 JSON) */ static async setObject(key: string, value: T): Promise { try { const jsonValue = JSON.stringify(value); await AsyncStorage.setItem(key, jsonValue); if (__DEV__) { console.log(`💾 Storage set object: ${key}`); } } catch (error) { console.error(`Storage setObject error for key "${key}":`, error); throw error; } } /** * 获取对象(自动反序列化 JSON) */ static async getObject(key: string): Promise { try { const jsonValue = await AsyncStorage.getItem(key); if (jsonValue === null) { return null; } const value = JSON.parse(jsonValue) as T; if (__DEV__) { console.log(`📖 Storage get object: ${key} ✓`); } return value; } catch (error) { console.error(`Storage getObject error for key "${key}":`, error); return null; } } /** * 删除指定键 */ static async remove(key: string): Promise { try { await AsyncStorage.removeItem(key); if (__DEV__) { console.log(`🗑️ Storage remove: ${key}`); } } catch (error) { console.error(`Storage remove error for key "${key}":`, error); throw error; } } /** * 清空所有存储 */ static async clear(): Promise { try { await AsyncStorage.clear(); if (__DEV__) { console.log('🗑️ Storage cleared all'); } } catch (error) { console.error('Storage clear error:', error); throw error; } } /** * 获取所有键名 */ static async getAllKeys(): Promise { try { const keys = await AsyncStorage.getAllKeys(); if (__DEV__) { console.log('🔑 Storage all keys:', keys); } return keys; } catch (error) { console.error('Storage getAllKeys error:', error); return []; } } /** * 批量获取 */ static async multiGet(keys: string[]): Promise<[string, string | null][]> { try { const values = await AsyncStorage.multiGet(keys); return values; } catch (error) { console.error('Storage multiGet error:', error); return []; } } /** * 批量设置 */ static async multiSet(keyValuePairs: [string, string][]): Promise { try { await AsyncStorage.multiSet(keyValuePairs); if (__DEV__) { console.log(`💾 Storage multiSet: ${keyValuePairs.length} items`); } } catch (error) { console.error('Storage multiSet error:', error); throw error; } } /** * 批量删除 */ static async multiRemove(keys: string[]): Promise { try { await AsyncStorage.multiRemove(keys); if (__DEV__) { console.log(`🗑️ Storage multiRemove: ${keys.length} items`); } } catch (error) { console.error('Storage multiRemove error:', error); throw error; } } } export default Storage;