Files
super-app/App/common/utilities/CacheUtils.ts

102 lines
2.6 KiB
TypeScript
Raw Normal View History

import AsyncStorage from "@react-native-async-storage/async-storage";
import { NetworkConnectorModule } from "../../common/native-module/NativeModules";
import {
BENEFIT_SCREEN,
BUY_INSURANCE_SCREEN,
COMPARE_PLAN_SCREEN,
QUOTE_OFFER_SCREEN,
} from "../constants/ScreenNameConstants";
import { BUILD_CONFIG_DETAILS } from "../constants/StringConstant";
import { ScreenData } from "../interface/widgets/screenData/ScreenData";
export const getScreenDataFromCache = async (
key: string,
): Promise<ScreenData | null> => {
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<BuildConfigDetails | null> => {
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,
) => {
return !screensWithCachingDisabled.includes(screenName || "");
};
export const screensWithCachingDisabled = [
BUY_INSURANCE_SCREEN,
QUOTE_OFFER_SCREEN,
COMPARE_PLAN_SCREEN,
BENEFIT_SCREEN,
];