45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
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 };
|