添加Apple登录
This commit is contained in:
48
lib/storage.ts
Normal file
48
lib/storage.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import AsyncStorage from "@react-native-async-storage/async-storage";
|
||||
import type { UserProfile } from "@/types/api";
|
||||
|
||||
const STORAGE_KEYS = {
|
||||
ACCESS_TOKEN: "access_token",
|
||||
REFRESH_TOKEN: "refresh_token",
|
||||
USER: "user",
|
||||
};
|
||||
|
||||
export const storage = {
|
||||
async setAccessToken(token: string): Promise<void> {
|
||||
await AsyncStorage.setItem(STORAGE_KEYS.ACCESS_TOKEN, token);
|
||||
},
|
||||
|
||||
async getAccessToken(): Promise<string | null> {
|
||||
return await AsyncStorage.getItem(STORAGE_KEYS.ACCESS_TOKEN);
|
||||
},
|
||||
|
||||
async setRefreshToken(token: string): Promise<void> {
|
||||
await AsyncStorage.setItem(STORAGE_KEYS.REFRESH_TOKEN, token);
|
||||
},
|
||||
|
||||
async getRefreshToken(): Promise<string | null> {
|
||||
return await AsyncStorage.getItem(STORAGE_KEYS.REFRESH_TOKEN);
|
||||
},
|
||||
|
||||
async setUser(user: UserProfile): Promise<void> {
|
||||
await AsyncStorage.setItem(STORAGE_KEYS.USER, JSON.stringify(user));
|
||||
},
|
||||
|
||||
async getUser(): Promise<UserProfile | null> {
|
||||
const userStr = await AsyncStorage.getItem(STORAGE_KEYS.USER);
|
||||
if (!userStr) return null;
|
||||
try {
|
||||
return JSON.parse(userStr) as UserProfile;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
async clear(): Promise<void> {
|
||||
await AsyncStorage.multiRemove([
|
||||
STORAGE_KEYS.ACCESS_TOKEN,
|
||||
STORAGE_KEYS.REFRESH_TOKEN,
|
||||
STORAGE_KEYS.USER,
|
||||
]);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user