FPSMS-frontend
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 

38 satır
1.2 KiB

  1. "use client";
  2. import React, {createContext, useContext, useEffect, useState} from 'react';
  3. import axiosInstance, {SetupAxiosInterceptors} from './axiosInstance';
  4. const AxiosContext = createContext(axiosInstance);
  5. const TokenContext = createContext({
  6. setAccessToken: (token: string | null) => {},
  7. });
  8. export const AxiosProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
  9. const [accessToken, setAccessToken] = useState<string | null>(localStorage.getItem("accessToken"));
  10. useEffect(() => {
  11. if (accessToken) {
  12. axiosInstance.defaults.headers.Authorization = `Bearer ${accessToken}`;
  13. SetupAxiosInterceptors(accessToken);
  14. console.log("[debug] Updated accessToken:", accessToken);
  15. }
  16. }, [accessToken]);
  17. return (
  18. <AxiosContext.Provider value={axiosInstance}>
  19. <TokenContext.Provider value={{ setAccessToken }}>
  20. {children}
  21. </TokenContext.Provider>
  22. </AxiosContext.Provider>
  23. );
  24. };
  25. // Custom hook to use Axios instance
  26. export const useAxios = () => {
  27. return useContext(AxiosContext);
  28. };
  29. // Custom hook to manage access token
  30. export const useToken = () => {
  31. return useContext(TokenContext);
  32. };