mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-18 17:25:16 -04:00
feat(renderer): Use callback instead of redux for renderer ready
Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
parent
285daeef8b
commit
2817740c94
12 changed files with 82 additions and 118 deletions
|
@ -4,43 +4,34 @@
|
|||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
import React, { Fragment, useMemo } from 'react'
|
||||
import { useIntroPageContent } from './hooks/use-intro-page-content'
|
||||
import { useApplicationState } from '../../hooks/common/use-application-state'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { WaitSpinner } from '../common/wait-spinner/wait-spinner'
|
||||
import { RenderIframe } from '../editor-page/renderer-pane/render-iframe'
|
||||
import { RendererType } from '../render-page/window-post-message-communicator/rendering-message'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { fetchFrontPageContent } from './requests'
|
||||
|
||||
/**
|
||||
* Fetches the content for the customizable part of the intro page and renders it.
|
||||
*/
|
||||
export const IntroCustomContent: React.FC = () => {
|
||||
const introPageContent = useIntroPageContent()
|
||||
const rendererReady = useApplicationState((state) => state.rendererStatus.rendererReady)
|
||||
const { t } = useTranslation()
|
||||
const [content, setContent] = useState<string[] | undefined>(undefined)
|
||||
|
||||
const spinner = useMemo(() => {
|
||||
if (!rendererReady && introPageContent !== undefined) {
|
||||
return <WaitSpinner />
|
||||
}
|
||||
}, [introPageContent, rendererReady])
|
||||
useEffect(() => {
|
||||
fetchFrontPageContent()
|
||||
.then((content) => setContent(content.split('\n')))
|
||||
.catch(() => setContent(undefined))
|
||||
}, [t])
|
||||
|
||||
const introContent = useMemo(() => {
|
||||
if (introPageContent !== undefined) {
|
||||
return (
|
||||
<RenderIframe
|
||||
frameClasses={'w-100 overflow-y-hidden'}
|
||||
markdownContentLines={introPageContent}
|
||||
rendererType={RendererType.INTRO}
|
||||
forcedDarkMode={true}
|
||||
/>
|
||||
)
|
||||
}
|
||||
}, [introPageContent])
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
{spinner}
|
||||
{introContent}
|
||||
</Fragment>
|
||||
return content === undefined ? (
|
||||
<WaitSpinner />
|
||||
) : (
|
||||
<RenderIframe
|
||||
frameClasses={'w-100 overflow-y-hidden'}
|
||||
markdownContentLines={content}
|
||||
rendererType={RendererType.INTRO}
|
||||
forcedDarkMode={true}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue