1
Fork 0
mirror of https://github.com/Steffo99/festa.git synced 2024-12-22 22:54:22 +00:00

Globally configure SWR

This commit is contained in:
Steffo 2022-05-31 17:07:25 +02:00
parent 6042e305a3
commit 9d20277706
Signed by: steffo
GPG key ID: 6965406171929D01

View file

@ -9,18 +9,36 @@ import { StaticImageData } from 'next/image'
import { appWithTranslation } from 'next-i18next' import { appWithTranslation } from 'next-i18next'
import { FestaLoginData } from '../types/user' import { FestaLoginData } from '../types/user'
import {useStoredLogin} from "../hooks/useStoredLogin" import {useStoredLogin} from "../hooks/useStoredLogin"
import { Fetcher, SWRConfig } from 'swr'
import axios, { AxiosRequestConfig } from 'axios'
const App = ({ Component, pageProps }: AppProps): JSX.Element => { const App = ({ Component, pageProps }: AppProps): JSX.Element => {
const [login, setLogin] = useState<FestaLoginData | null>(null)
const [postcard, setPostcard] = useState<string | StaticImageData>(defaultPostcard) const [postcard, setPostcard] = useState<string | StaticImageData>(defaultPostcard)
const [login, setLogin] = useState<FestaLoginData | null>(null)
useStoredLogin(setLogin) useStoredLogin(setLogin)
const axiosConfig = {
headers: {
"Authorization": login ? `Bearer ${login.token}` : "",
}
}
const swrConfig = {
fetcher: async (resource: string, localAxiosConfig: AxiosRequestConfig<any>) => {
const response = await axios.get(resource, {...axiosConfig, ...localAxiosConfig})
return response.data
}
}
return ( return (
<PostcardContext.Provider value={[postcard, setPostcard]}> <PostcardContext.Provider value={[postcard, setPostcard]}>
<LoginContext.Provider value={[login, setLogin]}> <LoginContext.Provider value={[login, setLogin]}>
<SWRConfig value={swrConfig}>
<Postcard/> <Postcard/>
<Component {...pageProps} /> <Component {...pageProps} />
</SWRConfig>
</LoginContext.Provider> </LoginContext.Provider>
</PostcardContext.Provider> </PostcardContext.Provider>
) )