mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-28 16:54:19 -04:00 
			
		
		
		
	
		
			
	
	
		
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|   | 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: { | ||
|  |       "Content-Type": "application/json", | ||
|  |       "Authorization": "Bearer " + useCookie(tokenName).value, | ||
|  |     }, | ||
|  |     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, | ||
|  |     }, | ||
|  |   }; | ||
|  | }); |