添加赔率设置功能,支持选择博彩公司并展示赔率信息;优化状态管理和国际化文本

This commit is contained in:
yuchenglong
2026-01-19 17:24:09 +08:00
parent e1320a67e4
commit 7024b03c30
7 changed files with 439 additions and 51 deletions

View File

@@ -1,12 +1,18 @@
import AsyncStorage from "@react-native-async-storage/async-storage";
import type { UserProfile } from "@/types/api";
import AsyncStorage from "@react-native-async-storage/async-storage";
const STORAGE_KEYS = {
ACCESS_TOKEN: "access_token",
REFRESH_TOKEN: "refresh_token",
USER: "user",
ODDS_SETTINGS: "odds_settings",
};
export interface OddsSettings {
enabled: boolean;
selectedBookmakers: string[];
}
export const storage = {
async setAccessToken(token: string): Promise<void> {
await AsyncStorage.setItem(STORAGE_KEYS.ACCESS_TOKEN, token);
@@ -38,11 +44,29 @@ export const storage = {
}
},
async setOddsSettings(settings: OddsSettings): Promise<void> {
await AsyncStorage.setItem(
STORAGE_KEYS.ODDS_SETTINGS,
JSON.stringify(settings),
);
},
async getOddsSettings(): Promise<OddsSettings> {
const settingsStr = await AsyncStorage.getItem(STORAGE_KEYS.ODDS_SETTINGS);
if (!settingsStr) return { enabled: false, selectedBookmakers: [] };
try {
return JSON.parse(settingsStr) as OddsSettings;
} catch {
return { enabled: false, selectedBookmakers: [] };
}
},
async clear(): Promise<void> {
await AsyncStorage.multiRemove([
STORAGE_KEYS.ACCESS_TOKEN,
STORAGE_KEYS.REFRESH_TOKEN,
STORAGE_KEYS.USER,
STORAGE_KEYS.ODDS_SETTINGS,
]);
},
};