Files
super-app/network/NetworkService.ts

106 lines
2.8 KiB
TypeScript
Raw Normal View History

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";
function newAbortSignal(timeoutMs: number): AbortSignal {
const abortController = new AbortController();
setTimeout(() => abortController.abort(), timeoutMs || 10000);
return abortController.signal;
}
export const get = async <T>(
url: string,
config?: AxiosRequestConfig,
params?: Record<string, any>,
): Promise<T> => {
try {
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,
signal: newAbortSignal(11000),
});
addBundleVersionToHeader(axiosInstance);
if (params) {
requestConfig.params = params;
}
const response = await axiosInstance.get<T>(baseUrl + url, requestConfig);
return handleSuccess<T>(response);
} catch (error) {
return handleError(error);
}
};
export const post = async <T>(
url: string,
data?: any,
config?: AxiosRequestConfig,
): Promise<T> => {
try {
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,
signal: newAbortSignal(11000),
});
addBundleVersionToHeader(axiosInstance);
const response = await axiosInstance.post<T>(
baseUrl + url,
data,
requestConfig,
);
return handleSuccess<T>(response);
} catch (error) {
return handleError(error);
}
};
export const patch = async <T>(
url: string,
data?: any,
config?: AxiosRequestConfig,
): Promise<T> => {
try {
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,
signal: newAbortSignal(11000),
});
addBundleVersionToHeader(axiosInstance);
const response = await axiosInstance.patch<T>(
baseUrl + url,
data,
requestConfig,
);
return handleSuccess<T>(response);
} catch (error) {
return handleError(error);
}
};