From 42bda72347e42b847625eb94384e5cfb1e15bc40 Mon Sep 17 00:00:00 2001 From: Mayank Singh Date: Wed, 15 May 2024 17:47:45 +0530 Subject: [PATCH] TP-64336 | bundle version added (#10857) --- network/NetworkConstant.ts | 1 + network/NetworkService.ts | 75 +++++++++++++++++++++++--------------- network/NetworkUtils.ts | 12 +++++- package.json | 3 +- 4 files changed, 60 insertions(+), 31 deletions(-) diff --git a/network/NetworkConstant.ts b/network/NetworkConstant.ts index 9b8df34fca..01cc81b4f7 100644 --- a/network/NetworkConstant.ts +++ b/network/NetworkConstant.ts @@ -2,3 +2,4 @@ export const BASE_URL = "https://sa.navi.com"; export const APPLICATION_ID_PATH = "/arc-warden/api/v2/application"; export const FILL_APPLICATION_PATH = "/arc-warden/api/v2/application/:applicationId/fill"; +export const BUNDLE_VERSION = "x-rn-bundle-version"; diff --git a/network/NetworkService.ts b/network/NetworkService.ts index 008e97dcff..119652d4f7 100644 --- a/network/NetworkService.ts +++ b/network/NetworkService.ts @@ -1,25 +1,28 @@ -import { handleError, handleSuccess, ApiClient, getDefaultHeaderData } from "./ApiClient"; -import { AxiosRequestConfig, InternalAxiosRequestConfig } from "axios"; -import { getDeviceId, getSessionToken } from "./NetworkUtils"; +import { handleError, handleSuccess } from "./ApiClient"; +import { AxiosRequestConfig } from "axios"; import { BASE_URL } from "./NetworkConstant"; import axios from "axios"; import { getBuildConfigDetails } from "../App/common/utilities/CacheUtils"; +import { addBundleVersionToHeader } from "./NetworkUtils"; export const get = async ( url: string, - config?: AxiosRequestConfig + config?: AxiosRequestConfig, ): Promise => { try { - let requestConfig: AxiosRequestConfig = config || {} - let baseUrl: string | undefined - await getBuildConfigDetails().then((response) => { - baseUrl = response?.baseUrl - }) + let requestConfig: AxiosRequestConfig = config || {}; + let baseUrl: string | undefined; + await getBuildConfigDetails().then(response => { + baseUrl = response?.baseUrl; + }); let axiosInstance = axios.create({ baseURL: baseUrl ? baseUrl : BASE_URL, timeout: 10000, - headers: requestConfig.headers - }) + headers: requestConfig.headers, + }); + + addBundleVersionToHeader(axiosInstance); + const response = await axiosInstance.get(baseUrl + url, requestConfig); return handleSuccess(response); } catch (error) { @@ -30,20 +33,27 @@ export const get = async ( export const post = async ( url: string, data?: any, - config?: AxiosRequestConfig + config?: AxiosRequestConfig, ): Promise => { try { - let requestConfig: AxiosRequestConfig = config || {} - let baseUrl: string | undefined - await getBuildConfigDetails().then((response) => { - baseUrl = response?.baseUrl - }) + let requestConfig: AxiosRequestConfig = config || {}; + let baseUrl: string | undefined; + await getBuildConfigDetails().then(response => { + baseUrl = response?.baseUrl; + }); let axiosInstance = axios.create({ baseURL: baseUrl ? baseUrl : BASE_URL, timeout: 10000, - headers: requestConfig.headers - }) - const response = await axiosInstance.post(baseUrl + url, data, requestConfig); + headers: requestConfig.headers, + }); + + addBundleVersionToHeader(axiosInstance); + + const response = await axiosInstance.post( + baseUrl + url, + data, + requestConfig, + ); return handleSuccess(response); } catch (error) { return handleError(error); @@ -53,20 +63,27 @@ export const post = async ( export const patch = async ( url: string, data?: any, - config?: AxiosRequestConfig + config?: AxiosRequestConfig, ): Promise => { try { - let requestConfig: AxiosRequestConfig = config || {} - let baseUrl: string | undefined - await getBuildConfigDetails().then((response) => { - baseUrl = response?.baseUrl - }) + let requestConfig: AxiosRequestConfig = config || {}; + let baseUrl: string | undefined; + await getBuildConfigDetails().then(response => { + baseUrl = response?.baseUrl; + }); let axiosInstance = axios.create({ baseURL: baseUrl ? baseUrl : BASE_URL, timeout: 10000, - headers: requestConfig.headers - }) - const response = await axiosInstance.patch(baseUrl + url, data, requestConfig); + headers: requestConfig.headers, + }); + + addBundleVersionToHeader(axiosInstance); + + const response = await axiosInstance.patch( + baseUrl + url, + data, + requestConfig, + ); return handleSuccess(response); } catch (error) { return handleError(error); diff --git a/network/NetworkUtils.ts b/network/NetworkUtils.ts index fc0c664f41..aa7f9690c7 100644 --- a/network/NetworkUtils.ts +++ b/network/NetworkUtils.ts @@ -1,4 +1,7 @@ import { getStringPreference } from "../App/common/utilities/SharedPreferenceUtils"; +import packageJson from "../package.json"; +import { BUNDLE_VERSION } from "./NetworkConstant"; +import { AxiosInstance } from "axios"; const getSessionToken = async () => { return await getStringPreference("SESSION_TOKEN", "string"); @@ -8,4 +11,11 @@ const getDeviceId = async () => { return await getStringPreference("DEVICE_ID", "string"); }; -export { getSessionToken, getDeviceId }; +const addBundleVersionToHeader = (axiosInstance: AxiosInstance) => { + axiosInstance.interceptors.request.use(requestConfig => { + requestConfig.headers[BUNDLE_VERSION] = (packageJson as any).versionCode; + return requestConfig; + }); +}; + +export { getSessionToken, getDeviceId, addBundleVersionToHeader }; diff --git a/package.json b/package.json index abd50c51ce..e31bd8cfce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "NaviApp", - "version": "0.0.2", + "version": "0.1.0", + "versionCode": 1, "private": true, "scripts": { "start": "yarn react-native start",