thêm quét QR đăng nhập, sửa lại logic để gọi api bằng ip thiết bị
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { TOKEN } from "@/constants";
|
||||
import { DOMAIN, TOKEN } from "@/constants";
|
||||
import { removeStorageItem } from "@/utils/storage";
|
||||
import { Router } from "expo-router";
|
||||
|
||||
@@ -17,7 +17,12 @@ export const setRouterInstance = (router: Router) => {
|
||||
export const handle401 = () => {
|
||||
if (routerInstance) {
|
||||
removeStorageItem(TOKEN);
|
||||
(routerInstance as any).replace("/auth/login");
|
||||
removeStorageItem(DOMAIN);
|
||||
// Cancel all pending requests to prevent further API calls
|
||||
if (typeof window !== "undefined" && (window as any).axiosAbortController) {
|
||||
(window as any).axiosAbortController.abort();
|
||||
}
|
||||
routerInstance.navigate("/auth/login");
|
||||
} else {
|
||||
console.warn("Router instance not set, cannot redirect to login");
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { TOKEN } from "@/constants";
|
||||
import { DOMAIN, TOKEN } from "@/constants";
|
||||
import { showErrorToast } from "@/services/toast_service";
|
||||
import { getStorageItem } from "@/utils/storage";
|
||||
import axios, { AxiosInstance } from "axios";
|
||||
import { handle401 } from "./auth";
|
||||
import { showToastError } from "./toast";
|
||||
|
||||
const codeMessage = {
|
||||
200: "The server successfully returned the requested data。",
|
||||
@@ -38,9 +38,15 @@ api.interceptors.request.use(
|
||||
async (config) => {
|
||||
// Thêm auth token nếu có
|
||||
const token = await getStorageItem(TOKEN);
|
||||
const domain = await getStorageItem(DOMAIN);
|
||||
if (domain) {
|
||||
config.baseURL = `http://${domain}`;
|
||||
}
|
||||
if (token) {
|
||||
config.headers.Authorization = `${token}`;
|
||||
}
|
||||
// console.log("Domain Request: ", config.baseURL);
|
||||
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
@@ -57,7 +63,9 @@ api.interceptors.response.use(
|
||||
if (!error.response) {
|
||||
const networkErrorMsg =
|
||||
error.message || "Network error - please check connection";
|
||||
showToastError("Lỗi kết nối", networkErrorMsg);
|
||||
showErrorToast("Lỗi kết nối");
|
||||
console.error("Response Network Error: ", networkErrorMsg);
|
||||
|
||||
return Promise.reject(error);
|
||||
}
|
||||
|
||||
@@ -70,8 +78,7 @@ api.interceptors.response.use(
|
||||
statusText ||
|
||||
"Unknown error";
|
||||
|
||||
showToastError(`Lỗi ${status}`, errMsg);
|
||||
|
||||
showErrorToast(`Lỗi ${status}: ${errMsg}`);
|
||||
if (status === 401) {
|
||||
handle401();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user