Refactor handling of environment variables (#2303)

* Refactor environment variables

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
Tilman Vatteroth 2022-09-16 11:03:29 +02:00 committed by GitHub
parent e412115a78
commit 39a4125cb0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
85 changed files with 624 additions and 461 deletions

View file

@ -3,33 +3,58 @@
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
import type { AppProps } from 'next/app'
import type { AppInitialProps, AppProps } from 'next/app'
import { ErrorBoundary } from '../components/error-boundary/error-boundary'
import { ApplicationLoader } from '../components/application-loader/application-loader'
import '../../global-styles/dark.scss'
import '../../global-styles/index.scss'
import type { NextPage } from 'next'
import { BaseHead } from '../components/layout/base-head'
import { StoreProvider } from '../redux/store-provider'
import { UiNotificationBoundary } from '../components/notifications/ui-notification-boundary'
import { ExpectedOriginBoundary } from '../utils/uri-origin-boundary'
import React from 'react'
import { BaseUrlContextProvider } from '../components/common/base-url/base-url-context-provider'
import type { BaseUrls } from '../components/common/base-url/base-url-context-provider'
import { BaseUrlFromEnvExtractor } from '../utils/base-url-from-env-extractor'
interface AppPageProps {
baseUrls: BaseUrls | undefined
}
/**
* The actual hedgedoc next js app.
* Provides necessary wrapper components to every page.
*/
const HedgeDocApp: NextPage<AppProps> = ({ Component, pageProps }: AppProps) => {
function HedgeDocApp({ Component, pageProps }: AppProps<AppPageProps>) {
return (
<StoreProvider>
<BaseHead />
<ApplicationLoader>
<ErrorBoundary>
<UiNotificationBoundary>
<Component {...pageProps} />
</UiNotificationBoundary>
</ErrorBoundary>
</ApplicationLoader>
</StoreProvider>
<BaseUrlContextProvider baseUrls={pageProps.baseUrls}>
<StoreProvider>
<ExpectedOriginBoundary>
<BaseHead />
<ApplicationLoader>
<ErrorBoundary>
<UiNotificationBoundary>
<Component {...pageProps} />
</UiNotificationBoundary>
</ErrorBoundary>
</ApplicationLoader>
</ExpectedOriginBoundary>
</StoreProvider>
</BaseUrlContextProvider>
)
}
const baseUrlFromEnvExtractor: BaseUrlFromEnvExtractor = new BaseUrlFromEnvExtractor()
HedgeDocApp.getInitialProps = (): AppInitialProps<AppPageProps> => {
const baseUrls = baseUrlFromEnvExtractor.extractBaseUrls().orElse(undefined)
return {
pageProps: {
baseUrls
}
}
}
// noinspection JSUnusedGlobalSymbols
export default HedgeDocApp