mirror of
https://github.com/Steffo99/festa.git
synced 2024-12-22 14:44:21 +00:00
Create a component to provide and store the AuthContext
This commit is contained in:
parent
5d633f51bd
commit
d5d67dcc6d
2 changed files with 17 additions and 4 deletions
|
@ -1,5 +1,7 @@
|
||||||
import { Token, User } from "@prisma/client"
|
import { Token, User } from "@prisma/client"
|
||||||
|
import { default as React } from "react"
|
||||||
import { createStateContext } from "../../utils/stateContext"
|
import { createStateContext } from "../../utils/stateContext"
|
||||||
|
import { useLocalStorageAuthState } from "./storage"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,3 +18,15 @@ export type AuthContextContents = Token & { user: User } | null
|
||||||
* Please note that the data containing in this context is not validated, and has to be validated by the server on every request.
|
* Please note that the data containing in this context is not validated, and has to be validated by the server on every request.
|
||||||
*/
|
*/
|
||||||
export const AuthContext = createStateContext<AuthContextContents>()
|
export const AuthContext = createStateContext<AuthContextContents>()
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Component which stores the login status using {@link useLocalStorageAuthState} and provides it to its children through a {@link AuthContext}.
|
||||||
|
*/
|
||||||
|
export function AuthContextProvider({ storageKey, children }: { storageKey: string, children: React.ReactNode }) {
|
||||||
|
return (
|
||||||
|
<AuthContext.Provider value={useLocalStorageAuthState(storageKey)}>
|
||||||
|
{children}
|
||||||
|
</AuthContext.Provider>
|
||||||
|
)
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ import { AxiosSWRFetcherProvider } from '../components/auth/requests'
|
||||||
import { useStatePostcard } from '../components/postcard/storage'
|
import { useStatePostcard } from '../components/postcard/storage'
|
||||||
import { PageErrorBoundary } from '../components/generic/errors/boundaries'
|
import { PageErrorBoundary } from '../components/generic/errors/boundaries'
|
||||||
import { PostcardContext } from '../components/postcard/base'
|
import { PostcardContext } from '../components/postcard/base'
|
||||||
import { AuthContext } from '../components/auth/base'
|
import { AuthContext, AuthContextProvider } from '../components/auth/base'
|
||||||
import { PostcardRenderer } from '../components/postcard/renderer'
|
import { PostcardRenderer } from '../components/postcard/renderer'
|
||||||
import '../styles/globals.css'
|
import '../styles/globals.css'
|
||||||
import defaultPostcard from "../public/postcards/adi-goldstein-Hli3R6LKibo-unsplash.jpg"
|
import defaultPostcard from "../public/postcards/adi-goldstein-Hli3R6LKibo-unsplash.jpg"
|
||||||
|
@ -19,18 +19,17 @@ fontAwesomeConfig.autoAddCss = false
|
||||||
const App = ({ Component, pageProps }: AppProps): JSX.Element => {
|
const App = ({ Component, pageProps }: AppProps): JSX.Element => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const postcardState = useStatePostcard(defaultPostcard)
|
const postcardState = useStatePostcard(defaultPostcard)
|
||||||
const authState = useLocalStorageAuthState("auth")
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PageErrorBoundary text={t("genericError")}>
|
<PageErrorBoundary text={t("genericError")}>
|
||||||
<AxiosSWRFetcherProvider>
|
<AxiosSWRFetcherProvider>
|
||||||
<PostcardContext.Provider value={postcardState}>
|
<PostcardContext.Provider value={postcardState}>
|
||||||
<AuthContext.Provider value={authState}>
|
<AuthContextProvider storageKey="auth">
|
||||||
<AxiosSWRFetcherProvider>
|
<AxiosSWRFetcherProvider>
|
||||||
<PostcardRenderer />
|
<PostcardRenderer />
|
||||||
<Component {...pageProps} />
|
<Component {...pageProps} />
|
||||||
</AxiosSWRFetcherProvider>
|
</AxiosSWRFetcherProvider>
|
||||||
</AuthContext.Provider>
|
</AuthContextProvider>
|
||||||
</PostcardContext.Provider>
|
</PostcardContext.Provider>
|
||||||
</AxiosSWRFetcherProvider>
|
</AxiosSWRFetcherProvider>
|
||||||
</PageErrorBoundary>
|
</PageErrorBoundary>
|
||||||
|
|
Loading…
Reference in a new issue