You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
42 lines
1.1 KiB
2 years ago
|
import { ErrorFallbackProps, ErrorComponent, ErrorBoundary, AppProps } from "@blitzjs/next"
|
||
|
import { AuthenticationError, AuthorizationError } from "blitz"
|
||
|
import React from "react"
|
||
|
import { withBlitz } from "app/blitz-client"
|
||
|
|
||
|
import "app/core/global.css"
|
||
|
import "app/core/variables.css"
|
||
|
import "app/core/variables.css"
|
||
|
import "app/core/lightTheme.css"
|
||
|
import "app/core/darkTheme.css"
|
||
|
import "app/i18n"
|
||
|
|
||
|
function RootErrorFallback({ error }: ErrorFallbackProps) {
|
||
|
if (error instanceof AuthenticationError) {
|
||
|
return <div>Error: You are not authenticated</div>
|
||
|
} else if (error instanceof AuthorizationError) {
|
||
|
return (
|
||
|
<ErrorComponent
|
||
|
statusCode={error.statusCode}
|
||
|
title="Sorry, you are not authorized to access this"
|
||
|
/>
|
||
|
)
|
||
|
} else {
|
||
|
return (
|
||
|
<ErrorComponent
|
||
|
statusCode={(error as any)?.statusCode || 400}
|
||
|
title={error.message || error.name}
|
||
|
/>
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function MyApp({ Component, pageProps }: AppProps) {
|
||
|
return (
|
||
|
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||
|
<Component {...pageProps} />
|
||
|
</ErrorBoundary>
|
||
|
)
|
||
|
}
|
||
|
|
||
|
export default withBlitz(MyApp)
|