import { useRouter } from "next/navigation"; import Cookies from "js-cookie"; import { getCsrfToken } from "../auth"; import axiosBaseProdInstance from "./axios-base-prod-instance"; export async function httpGetInterceptor(pathUrl: any) { const pathname = window.location.pathname; const response = await axiosBaseProdInstance .get(pathUrl) .catch((error) => error.response); console.log("Response interceptor : ", response); if (response?.status == 200 || response?.status == 201) { return { error: false, message: "success", data: response?.data, }; } else if (response?.status == 401) { Object.keys(Cookies.get()).forEach((cookieName) => { Cookies.remove(cookieName); }); if ( pathname?.includes("/contributor/") || pathname?.includes("/admin/") || pathname?.includes("/supervisor/") ) { window.location.href = "/"; } } else { return { error: true, message: response?.data?.message || response?.data || null, data: null, }; } } export async function httpPostInterceptor( pathUrl: any, data?: any, headers?: any ) { const resCsrf = await getCsrfToken(); const defaultHeaders = { "Content-Type": "application/json", }; const mergedHeaders = { ...defaultHeaders, ...headers, }; const response = await axiosBaseProdInstance .post(pathUrl, data, { headers: mergedHeaders }) .catch((error) => error.response); console.log("Response interceptor : ", response); if (response?.status == 200 || response?.status == 201) { return { error: false, message: "success", data: response?.data, }; } else if (response?.status == 401) { Object.keys(Cookies.get()).forEach((cookieName) => { Cookies.remove(cookieName); }); window.location.href = "/"; } else { return { error: true, message: response?.data?.message || response?.data || null, data: null, }; } } export async function httpPutInterceptor( pathUrl: any, data: any, headers?: any ) { const resCsrf = await getCsrfToken(); const csrfToken = resCsrf?.data?.token; const defaultHeaders = { "Content-Type": "application/json", }; const mergedHeaders = { ...defaultHeaders, ...headers, }; const response = await axiosBaseProdInstance .put(pathUrl, data, { headers: mergedHeaders }) .catch((error) => error.response); console.log("Response interceptor : ", response); if (response?.status == 200 || response?.status == 201) { return { error: false, message: "success", data: response?.data, }; } else if (response?.status == 401) { Object.keys(Cookies.get()).forEach((cookieName) => { Cookies.remove(cookieName); }); window.location.href = "/"; } else { return { error: true, message: response?.data?.message || response?.data || null, data: null, }; } } export async function httpDeleteInterceptor(pathUrl: any, data?: any) { const resCsrf = await getCsrfToken(); const csrfToken = resCsrf?.data?.token; const defaultHeaders = { "Content-Type": "application/json", }; const mergedHeaders = { ...defaultHeaders, ...(csrfToken ? { "X-XSRF-TOKEN": csrfToken } : {}), }; const response = await axiosBaseProdInstance .delete(pathUrl, { headers: mergedHeaders, data }) .catch((error) => error.response); console.log("Response interceptor : ", response); if (response?.status == 200 || response?.status == 201) { return { error: false, message: "success", data: response?.data, }; } else if (response?.status == 401) { Object.keys(Cookies.get()).forEach((cookieName) => { Cookies.remove(cookieName); }); window.location.href = "/"; } else { return { error: true, message: response?.data?.message || response?.data || null, data: null, }; } } export async function httpGetInterceptorWithToken(pathUrl: any, headers?: any) { const response = await axiosBaseProdInstance .get(pathUrl, headers) .catch((error) => error.response); console.log("Response interceptor : ", response); if (response?.status == 200 || response?.status == 201) { return { error: false, message: "success", data: response?.data, }; } else { return { error: true, message: response?.data?.message || response?.data || null, data: null, }; } }