-
Bastien DUMONT authoredBastien DUMONT authored
API.ts 3.00 KiB
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',
customPopup: '/api/animator/customPopup',
},
} as const
export const fetchWhoAmI = async () => {
try {
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 () => {
return await axios.get(endpoints.common.logout)
}
export const fetchEcogestureImages = async (
axiosHeaders: AxiosRequestConfig
) => {
const { data: imageNames } = await axios.get<string[]>(
endpoints.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('Aucune information des partenaires trouvée')
throw error
}
}
export const putPartnersInfo = 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('Aucune pop-up personnalisée trouvée')
throw error
}
}
export const putCustomPopup = async (
customPopup: ICustomPopup,
axiosHeaders: AxiosRequestConfig
) => {
try {
await axios.put(
endpoints.animator.customPopup,
{
...customPopup,
},
axiosHeaders
)
toast.success('Pop-up personnalisée enregistrée !')
} catch (e) {
toast.error('Erreur lors de l’enregistrement de la pop-up personnalisée')
console.error(e)
}
}