import AsyncStorage from "@react-native-async-storage/async-storage"; import { BUY_INSURANCE_SCREEN, QUOTE_OFFER_SCREEN } from "../constants/ScreenNameConstants"; import { ScreenData } from "../interface/widgets/screenData/ScreenData"; import { NetworkConnectorModule } from "../../common/native-module/NativeModules"; import { BUILD_CONFIG_DETAILS } from "../constants/StringConstant"; export const getScreenDataFromCache = async ( key: string ): Promise => { try { const value = await AsyncStorage.getItem(key); if (!!value) { // The key exists in AsyncStorage const deserializedObject = JSON.parse(value); try { return deserializedObject as ScreenData; } catch (error) { return null; } } else { return null; } } catch (error) { console.error("Error checking AsyncStorage:", error); return null; } }; export const saveScreenDataInCache = async ( key: string | null, data: ScreenData | null ) => { if (!!key && !!data) { const serializedObject = JSON.stringify(data); await AsyncStorage.setItem(key, serializedObject); } else { console.error("key or data was invalid"); } }; export const getCacheKey = ( screenName: string | null | undefined, screenKey: string | null | undefined ) => { if (!!screenKey && !!screenName) { return screenName + "#" + screenKey; } else { return screenName; } }; export const setBuildConfigDetails = async () => { let buildConfigData: string | undefined await NetworkConnectorModule.getBuildConfigDetails().then((response: string) => { buildConfigData = response }); if (buildConfigData) { await AsyncStorage.setItem(BUILD_CONFIG_DETAILS, buildConfigData); } } export const getBuildConfigDetails = async ( ): Promise => { const value = await AsyncStorage.getItem(BUILD_CONFIG_DETAILS); try { if (!!value) { // The key exists in AsyncStorage const buildConfigData = JSON.parse(value); try { return buildConfigData as BuildConfigDetails; } catch (error) { return null; } } else { return null; } } catch (error) { // Sentry log -> Error checking BuildConfigDetails return null; } } export const isScreenWhiteListedForCaching = ( screenName: string | null | undefined ) => { console.log( "Caching eligibilty", screenName, !screensWithCachingDisabled.includes(screenName || "") ); return !screensWithCachingDisabled.includes(screenName || ""); }; export const screensWithCachingDisabled = [BUY_INSURANCE_SCREEN, QUOTE_OFFER_SCREEN];