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.
41 lines
1.1 KiB
41 lines
1.1 KiB
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)
|
|
|