Merge remote-tracking branch 'upstream/develop' into feat/maintenance-page

This commit is contained in:
Alex Holliday committed 2024-10-08 09:49:26 +08:00
commit f48b769baa
6 files changed
+56 -222

No files matched your search

+18 -4
View File
@@ -1,16 +1,22 @@
import axios from "axios";
const BASE_URL = import.meta.env.VITE_APP_API_BASE_URL;
const FALLBACK_BASE_URL = "http://localhost:5000/api/v1";
import { clearAuthState } from "../Features/Auth/authSlice";
import { clearUptimeMonitorState } from "../Features/UptimeMonitors/uptimeMonitorsSlice";
import { logger } from "./Logger";
class NetworkService {
constructor(store) {
constructor(store, dispatch, navigate) {
this.store = store;
this.dispatch = dispatch;
this.navigate = navigate;
let baseURL = BASE_URL;
this.axiosInstance = axios.create();
this.setBaseUrl(baseURL);
this.unsubscribe = store.subscribe(() => {
const state = store.getState();
if (BASE_URL === undefined && state.settings.apiBaseUrl) {
if (BASE_URL !== undefined) {
baseURL = BASE_URL;
} else if (state?.settings?.apiBaseUrl ?? null) {
baseURL = state.settings.apiBaseUrl;
} else {
baseURL = FALLBACK_BASE_URL;
@@ -20,9 +26,10 @@ class NetworkService {
this.axiosInstance.interceptors.response.use(
(response) => response,
(error) => {
logger.error(error);
if (error.response && error.response.status === 401) {
logger.error("Invalid token received");
dispatch(clearAuthState());
dispatch(clearUptimeMonitorState());
navigate("/login");
}
return Promise.reject(error);
}
@@ -750,3 +757,10 @@ class NetworkService {
}
export default NetworkService;
let networkService;
export const setNetworkService = (service) => {
networkService = service;
};
export { networkService };