Skip to content
Snippets Groups Projects
API.ts 2.59 KiB
Newer Older
  • Learn to ignore specific revisions
  • import axios, { AxiosRequestConfig } from 'axios'
    
    import { toast } from 'react-toastify'
    
    import { ICustomPopup } from './models/customPopup.model'
    import { IPartnersInfo } from './models/partnersInfo.model'
    
    import { User } from './models/user.model'
    
    
    const endpoints = {
      /** public endpoints */
      common: {
        WhoAmI: '/api/common/WhoAmI',
        partnersInfo: '/api/common/partnersInfo',
        customPop: '/api/common/customPopup',
        logout: '/Logout',
      },
      /** animator role required endpoints */
      animator: {
        partnersInfo: '/api/animator/partnersInfo',
        imageNames: '/api/animator/imageNames',
        savePartnersInfo: '/api/animator/savePartnersInfo',
      },
    } as const
    
    export const fetchWhoAmI = async () => {
    
        const { data } = await axios.get<User | null>(endpoints.common.WhoAmI)
    
        return data
      } catch (error) {
        console.error('error whoami', error)
        toast.error('Accès refusé, veuillez vous connecter')
      }
    
    }
    
    export const fetchLogout = async () => {
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
      return await axios.get(endpoints.common.logout)
    
    
    export const fetchEcogestureImages = async (
      axiosHeaders: AxiosRequestConfig
    ) => {
      const { data: imageNames } = await axios.get<string[]>(
        `/api/animator/imageNames`,
        axiosHeaders
      )
      if (imageNames && imageNames !== null) {
        return imageNames.map(image => `/assets/ecogesture/${image}`)
      }
      return []
    }
    
    
    export const fetchPartnersIssue = async () => {
      try {
        const { data } = await axios.get<IPartnersInfo>(
          endpoints.common.partnersInfo
        )
        return data
      } catch (error) {
        console.error('error partnersInfo', error)
        toast.error('Accès refusé, veuillez vous connecter')
        throw error
      }
    }
    
    export const savePartnersInfo = async (
      partnersInfo: IPartnersInfo,
      axiosHeaders: AxiosRequestConfig
    ) => {
      try {
        await axios.put<IPartnersInfo>(
          endpoints.animator.partnersInfo,
          {
            grdf_failure: partnersInfo.grdf_failure,
            enedis_failure: partnersInfo.enedis_failure,
            egl_failure: partnersInfo.egl_failure,
            notification_activated: partnersInfo.notification_activated,
          },
          axiosHeaders
        )
        toast.success('Information des partenaires mises à jour !')
      } catch (error) {
        toast.error('Erreur lors de la mise à jour des information des partenaires')
        console.error(error)
      }
    }
    
    export const fetchCustomPopup = async (): Promise<ICustomPopup> => {
      try {
        const { data } = await axios.get<ICustomPopup>(endpoints.common.customPop)
        return data
      } catch (error) {
        console.error('error customPopup', error)
        toast.error('Accès refusé, veuillez vous connecter')
        throw error
      }
    }