NTP-8696 | React BuildConfig Optimisations (#13268)
This commit is contained in:
committed by
GitHub
parent
4239607795
commit
3757bf8cb6
11
App.tsx
11
App.tsx
@@ -14,10 +14,7 @@ import {
|
||||
import { sendAsAnalyticsEvent } from "./App/common/hooks/useAnalyticsEvent";
|
||||
import { CtaData } from "./App/common/interface";
|
||||
import RnApp from "./App/common/navigator/RnAppCreator";
|
||||
import {
|
||||
getBuildConfigDetails,
|
||||
setBuildConfigDetails,
|
||||
} from "./App/common/utilities/CacheUtils";
|
||||
import { setBuildConfigDetailsFromCta } from "./App/common/utilities/CacheUtils";
|
||||
import {
|
||||
getStringPreference,
|
||||
setStringPreference,
|
||||
@@ -39,11 +36,8 @@ export default class App extends Component<{}, AppState> {
|
||||
};
|
||||
}
|
||||
checkForUpdates = async () => {
|
||||
let flavor: string | undefined;
|
||||
getBuildConfigDetails().then(res => {
|
||||
flavor = res?.baseUrl;
|
||||
});
|
||||
const cta = this.getInitialCta();
|
||||
await setBuildConfigDetailsFromCta(cta!!);
|
||||
await codePush.sync(
|
||||
{
|
||||
installMode:
|
||||
@@ -146,7 +140,6 @@ export default class App extends Component<{}, AppState> {
|
||||
|
||||
override componentDidMount(): void {
|
||||
this.checkForUpdates();
|
||||
setBuildConfigDetails();
|
||||
}
|
||||
|
||||
override componentWillUnmount(): void {
|
||||
|
||||
6
App/common/constants/BuildConfigConstants.ts
Normal file
6
App/common/constants/BuildConfigConstants.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export enum BuildConfigConstants {
|
||||
BASE_URL = "baseUrl",
|
||||
APP_VERSION_NAME = "appVersionName",
|
||||
APP_VERSION_CODE = "appVersionCode",
|
||||
FLAVOR = "flavor",
|
||||
}
|
||||
@@ -9,3 +9,4 @@ export * from "./SentryConstants";
|
||||
export * from "./StringConstant";
|
||||
export * from "./WidgetNameConstants";
|
||||
export * from "./StatusCodeConstant";
|
||||
export * from "./BuildConfigConstants";
|
||||
|
||||
@@ -4,6 +4,7 @@ export type CtaData = {
|
||||
url: string;
|
||||
type?: string;
|
||||
parameters?: Array<LineItem>;
|
||||
additionalParameters?: Array<LineItem>;
|
||||
data?: any;
|
||||
finish?: boolean;
|
||||
screenKey?: string;
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
import AsyncStorage from "@react-native-async-storage/async-storage";
|
||||
import { BASE_URL } from "../../../network/NetworkConstant";
|
||||
import { NetworkConnectorModule } from "../../common/native-module/NativeModules";
|
||||
import {
|
||||
BENEFIT_SCREEN,
|
||||
BUILD_CONFIG_DETAILS,
|
||||
BUY_INSURANCE_SCREEN,
|
||||
BuildConfigConstants,
|
||||
COMPARE_PLAN_SCREEN,
|
||||
QUOTE_OFFER_SCREEN,
|
||||
} from "../constants/ScreenNameConstants";
|
||||
import { BUILD_CONFIG_DETAILS } from "../constants/StringConstant";
|
||||
} from "../constants";
|
||||
import { CtaData } from "../interface";
|
||||
import { ScreenData } from "../interface/widgets/screenData/ScreenData";
|
||||
|
||||
import { LineItem } from "../interface/widgets/screenData/ScreenMetaData";
|
||||
export const getScreenDataFromCache = async (
|
||||
key: string,
|
||||
): Promise<ScreenData | null> => {
|
||||
@@ -66,6 +69,20 @@ export const setBuildConfigDetails = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
export const setBuildConfigDetailsFromCta = async (
|
||||
ctaData: CtaData,
|
||||
): Promise<BuildConfigDetails | null> => {
|
||||
let buildConfigDetails: BuildConfigDetails =
|
||||
getBuildConfigDetailsFromCta(ctaData);
|
||||
if (buildConfigDetails) {
|
||||
await AsyncStorage.setItem(
|
||||
BUILD_CONFIG_DETAILS,
|
||||
JSON.stringify(buildConfigDetails),
|
||||
);
|
||||
}
|
||||
return buildConfigDetails;
|
||||
};
|
||||
|
||||
export const getBuildConfigDetails =
|
||||
async (): Promise<BuildConfigDetails | null> => {
|
||||
const value = await AsyncStorage.getItem(BUILD_CONFIG_DETAILS);
|
||||
@@ -87,6 +104,36 @@ export const getBuildConfigDetails =
|
||||
}
|
||||
};
|
||||
|
||||
export const getBuildConfigDetailsFromCta = (
|
||||
ctaData: CtaData,
|
||||
): BuildConfigDetails => {
|
||||
let buildConfigDetails: BuildConfigDetails = {
|
||||
baseUrl: "",
|
||||
flavor: "",
|
||||
appVersionName: "",
|
||||
appVersionCode: "",
|
||||
};
|
||||
ctaData?.additionalParameters?.forEach((item: LineItem) => {
|
||||
switch (item.key) {
|
||||
case BuildConfigConstants.BASE_URL:
|
||||
buildConfigDetails.baseUrl = item.value || BASE_URL;
|
||||
break;
|
||||
case BuildConfigConstants.FLAVOR:
|
||||
buildConfigDetails.flavor = item.value || "";
|
||||
break;
|
||||
case BuildConfigConstants.APP_VERSION_NAME:
|
||||
buildConfigDetails.appVersionName = item.value || "";
|
||||
break;
|
||||
case BuildConfigConstants.APP_VERSION_CODE:
|
||||
buildConfigDetails.appVersionCode = item.value || "";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
return buildConfigDetails;
|
||||
};
|
||||
|
||||
export const isScreenWhiteListedForCaching = (
|
||||
screenName: string | null | undefined,
|
||||
) => {
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler
|
||||
import com.facebook.react.modules.core.DeviceEventManagerModule
|
||||
import com.google.gson.Gson
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.base.model.LineItem
|
||||
import com.navi.base.utils.PROD
|
||||
import com.navi.base.utils.orFalse
|
||||
import com.navi.common.CommonLibManager
|
||||
@@ -68,7 +69,8 @@ class ReactActivity : BaseActivity(), DefaultHardwareBackBtnHandler, RequestToCa
|
||||
// also libjsi is pre-instantiated from node modules
|
||||
val reactApplication = application as ReactApplication
|
||||
reactInstanceManager = reactApplication.reactNativeHost.reactInstanceManager
|
||||
val ctaData = intent.extras?.getString(Constants.KEY_CTA_DATA)
|
||||
var ctaData = intent.extras?.getString(Constants.KEY_CTA_DATA)
|
||||
val buildConfigDetails = CommonLibManager.buildConfigDetails
|
||||
val ctaDataObject: CtaData? = gson.fromJson(ctaData, CtaData::class.java)
|
||||
var statusBarColor: Int? = R.color.white
|
||||
ctaDataObject?.parameters?.forEach {
|
||||
@@ -76,6 +78,26 @@ class ReactActivity : BaseActivity(), DefaultHardwareBackBtnHandler, RequestToCa
|
||||
statusBarColor = it.value.parseColorSafe()
|
||||
}
|
||||
}
|
||||
ctaDataObject?.additionalParameters =
|
||||
listOf(
|
||||
LineItem(
|
||||
key = Constants.BuildConfigConstants.BASE_URL,
|
||||
value = buildConfigDetails.baseUrl
|
||||
),
|
||||
LineItem(
|
||||
key = Constants.BuildConfigConstants.APP_VERSION_NAME,
|
||||
value = buildConfigDetails.appVersionName
|
||||
),
|
||||
LineItem(
|
||||
key = Constants.BuildConfigConstants.APP_VERSION_CODE,
|
||||
value = buildConfigDetails.appVersionCode
|
||||
),
|
||||
LineItem(
|
||||
key = Constants.BuildConfigConstants.FLAVOR,
|
||||
value = buildConfigDetails.flavor
|
||||
)
|
||||
)
|
||||
ctaData = gson.toJson(ctaDataObject)
|
||||
val bundle: Bundle? = if (ctaData != null) Bundle() else null
|
||||
bundle?.putString(Constants.KEY_CTA_DATA, ctaData.toString())
|
||||
reactRootView.startReactApplication(
|
||||
|
||||
@@ -387,4 +387,11 @@ object Constants {
|
||||
const val TOGGLE_SWITCH_CHECKED_STATE = "checked"
|
||||
const val AUTHENTICATION_SESSION_TIME_OUT_THRESHOLD = 5 * 60 * 1000L // 5 mins
|
||||
}
|
||||
|
||||
object BuildConfigConstants {
|
||||
const val BASE_URL = "baseUrl"
|
||||
const val APP_VERSION_NAME = "appVersionName"
|
||||
const val APP_VERSION_CODE = "appVersionCode"
|
||||
const val FLAVOR = "flavor"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
export const BASE_URL = "https://sa.navi.com";
|
||||
export const BASE_URL = "https://sa.navi.com/";
|
||||
export const BUNDLE_VERSION = "x-rn-bundle-version";
|
||||
export const GZIP = "gzip";
|
||||
|
||||
Reference in New Issue
Block a user