Files
JKVideo/store/settingsStore.ts

37 lines
929 B
TypeScript
Raw Permalink Normal View History

2026-03-19 16:34:56 +08:00
import { create } from 'zustand';
import AsyncStorage from '@react-native-async-storage/async-storage';
interface SettingsState {
darkMode: boolean;
trafficSaving: boolean;
setDarkMode: (v: boolean) => Promise<void>;
setTrafficSaving: (v: boolean) => Promise<void>;
2026-03-19 16:34:56 +08:00
restore: () => Promise<void>;
}
export const useSettingsStore = create<SettingsState>((set) => ({
darkMode: false,
trafficSaving: false,
2026-03-19 16:34:56 +08:00
setDarkMode: async (v) => {
await AsyncStorage.setItem('DARK_MODE', v ? '1' : '0');
set({ darkMode: v });
},
setTrafficSaving: async (v) => {
await AsyncStorage.setItem('TRAFFIC_SAVING', v ? '1' : '0');
set({ trafficSaving: v });
2026-03-19 16:34:56 +08:00
},
restore: async () => {
const [dm, ts] = await Promise.all([
AsyncStorage.getItem('DARK_MODE'),
AsyncStorage.getItem('TRAFFIC_SAVING'),
]);
set({
darkMode: dm === '1',
trafficSaving: ts === '1',
});
2026-03-19 16:34:56 +08:00
},
}));