Files
JKVideo/utils/secureStorage.ts
Developer 8f733b6c34 feat: 深色模式完善 + UP主主页 + 缓存管理
- 深色模式:补全 settings 页选项按钮、退出登录按钮主题色
- UP主主页:新增 /creator/[mid] 路由,展示 UP 主信息、粉丝数、视频列表
  - bilibili.ts 新增 getUploaderInfo / getUploaderVideos API
  - 视频详情页 UP 主行可点击跳转主页
- 缓存管理:settings 页新增「存储」分区,显示缓存大小并支持一键清除
  - 新增 utils/cache.ts(计算大小 + 清除 expo-image/文件系统缓存)
2026-03-26 01:16:20 +08:00

33 lines
993 B
TypeScript

import AsyncStorage from '@react-native-async-storage/async-storage';
import { Platform } from 'react-native';
// expo-secure-store is only available on native platforms
let SecureStore: typeof import('expo-secure-store') | null = null;
if (Platform.OS !== 'web') {
try { SecureStore = require('expo-secure-store'); } catch {}
}
/** Read a sensitive value from SecureStore (native) or AsyncStorage (web fallback). */
export async function getSecure(key: string): Promise<string | null> {
if (SecureStore) {
return SecureStore.getItemAsync(key);
}
return AsyncStorage.getItem(key);
}
export async function setSecure(key: string, value: string): Promise<void> {
if (SecureStore) {
await SecureStore.setItemAsync(key, value);
} else {
await AsyncStorage.setItem(key, value);
}
}
export async function deleteSecure(key: string): Promise<void> {
if (SecureStore) {
await SecureStore.deleteItemAsync(key);
} else {
await AsyncStorage.removeItem(key);
}
}