| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  | import axios from "axios"; | 
					
						
							|  |  |  | import { alert } from "~/composables/use-toast"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default defineNuxtPlugin(() => { | 
					
						
							|  |  |  |   const tokenName = useRuntimeConfig().public.AUTH_TOKEN; | 
					
						
							|  |  |  |   const axiosInstance = axios.create({ | 
					
						
							|  |  |  |     baseURL: "/", // api calls already pass with /api
 | 
					
						
							|  |  |  |     timeout: 10000, | 
					
						
							|  |  |  |     headers: { | 
					
						
							| 
									
										
										
										
											2025-06-26 22:12:27 +02:00
										 |  |  |       Authorization: "Bearer " + useCookie(tokenName).value, | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     }, | 
					
						
							|  |  |  |     withCredentials: true, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Add request interceptor
 | 
					
						
							|  |  |  |   axiosInstance.interceptors.request.use( | 
					
						
							|  |  |  |     (config) => { | 
					
						
							|  |  |  |       // You can add auth tokens or other headers here
 | 
					
						
							|  |  |  |       return config; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     (error) => { | 
					
						
							|  |  |  |       return Promise.reject(error); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Add response interceptor
 | 
					
						
							|  |  |  |   axiosInstance.interceptors.response.use( | 
					
						
							|  |  |  |     (response) => { | 
					
						
							|  |  |  |       if (response?.data?.message) alert.info(response.data.message as string); | 
					
						
							|  |  |  |       return response; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     (error) => { | 
					
						
							|  |  |  |       if (error?.response?.data?.detail?.message) alert.error(error.response.data.detail.message as string); | 
					
						
							|  |  |  |       return Promise.reject(error); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return { | 
					
						
							|  |  |  |     provide: { | 
					
						
							|  |  |  |       axios: axiosInstance, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | }); |