import { AxiosInstance, AxiosRequestConfig, RawAxiosRequestHeaders, } from "axios"; import { getStringPreference } from "../App/common/utilities/SharedPreferenceUtils"; import packageJson from "../package.json"; import { BUNDLE_VERSION } from "./NetworkConstant"; const getSessionToken = async () => { return await getStringPreference("SESSION_TOKEN", "string"); }; const getDeviceId = async () => { return await getStringPreference("DEVICE_ID", "string"); }; export const getBundleVersion = () => { return packageJson.versionCode; }; const addBundleVersionToHeader = (axiosInstance: AxiosInstance) => { axiosInstance.interceptors.request.use(requestConfig => { requestConfig.headers[BUNDLE_VERSION] = getBundleVersion(); return requestConfig; }); }; const mergeHeaders = ({ configs, }: { configs: AxiosRequestConfig[]; }): AxiosRequestConfig => { const mergedHeaders = configs.reduce((acc, config) => { const headers = config.headers as RawAxiosRequestHeaders; return { ...acc, ...headers }; }, {} as RawAxiosRequestHeaders); return { headers: mergedHeaders, }; }; export { addBundleVersionToHeader, getDeviceId, getSessionToken, mergeHeaders };