61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import { create, MMKVLoader, MMKVInstance, ProcessingModes, IOSAccessibleStates } from 'react-native-mmkv-storage';
|
|
|
|
const MMKV = new MMKVLoader()
|
|
// MODES.MULTI_PROCESS = ACCESSIBLE BY APP GROUP (iOS)
|
|
.setProcessingMode(ProcessingModes.MULTI_PROCESS)
|
|
.setAccessibleIOS(IOSAccessibleStates.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY)
|
|
.withEncryption()
|
|
.initialize();
|
|
|
|
export const useUserPreferences = create(MMKV);
|
|
|
|
class UserPreferences {
|
|
private mmkv: MMKVInstance;
|
|
constructor() {
|
|
this.mmkv = MMKV;
|
|
}
|
|
|
|
getString(key: string): string | null {
|
|
try {
|
|
return this.mmkv.getString(key) ?? null;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
setString(key: string, value: string): boolean | undefined {
|
|
return this.mmkv.setString(key, value) ?? undefined;
|
|
}
|
|
|
|
getBool(key: string): boolean | null {
|
|
try {
|
|
return this.mmkv.getBool(key) ?? null;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
setBool(key: string, value: boolean): boolean | undefined {
|
|
return this.mmkv.setBool(key, value) ?? undefined;
|
|
}
|
|
|
|
getMap(key: string): object | null {
|
|
try {
|
|
return this.mmkv.getMap(key) ?? null;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
setMap(key: string, value: object): boolean | undefined {
|
|
return this.mmkv.setMap(key, value) ?? undefined;
|
|
}
|
|
|
|
removeItem(key: string): boolean | undefined {
|
|
return this.mmkv.removeItem(key) ?? undefined;
|
|
}
|
|
}
|
|
|
|
const userPreferences = new UserPreferences();
|
|
export default userPreferences;
|