1import { AsyncStorage } from 'react-native'; 2 3const STORAGE_PREFIX = '@@expo@@'; 4 5/** 6 * A mock implementation of the native kernel module that can be used when loading Home as a regular 7 * project or when running it on web. 8 * 9 * Longer term, it may make sense to natively define a private, unprivileged implementation of the 10 * kernel module and use this implementation only on web. 11 */ 12export default { 13 sdkVersions: [] as string[], 14 15 async doesCurrentTaskEnableDevtools(): Promise<boolean> { 16 return false; 17 }, 18 19 addDevMenu(): void {}, 20 21 async getDevMenuItemsToShowAsync(): Promise<unknown> { 22 return {}; 23 }, 24 25 selectDevMenuItemWithKey(_key: string): void {}, 26 selectRefresh(): void {}, 27 selectCloseMenu(): void {}, 28 selectGoToHome(): void {}, 29 selectQRReader(): void {}, 30 31 async setIsLegacyMenuBehaviorEnabledAsync(_enabled: boolean): Promise<void> {}, 32 33 async getIsNuxFinishedAsync(): Promise<boolean> { 34 const item = await AsyncStorage.getItem(`${STORAGE_PREFIX}:nux`); 35 return !!item; 36 }, 37 38 async setIsNuxFinishedAsync(finished: boolean): Promise<void> { 39 if (finished) { 40 await AsyncStorage.setItem(`${STORAGE_PREFIX}:nux`, '1'); 41 } else { 42 await AsyncStorage.removeItem(`${STORAGE_PREFIX}:nux`); 43 } 44 }, 45 46 async getSessionAsync(): Promise<unknown> { 47 const json = await AsyncStorage.getItem(`${STORAGE_PREFIX}:session`); 48 return json ? JSON.parse(json) : null; 49 }, 50 51 async setSessionAsync(session: object): Promise<void> { 52 const json = JSON.stringify(session); 53 await AsyncStorage.setItem(`${STORAGE_PREFIX}:session`, json); 54 }, 55 56 async removeSessionAsync(): Promise<void> { 57 await AsyncStorage.removeItem(`${STORAGE_PREFIX}:session`); 58 }, 59 60 onEventSuccess(_eventId: string, _result: object): void {}, 61 62 onEventFailure(_eventId: string, _message: string): void {}, 63}; 64