feat(motd): read motd in RSC and provide via context

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
Tilman Vatteroth 2023-10-13 21:22:21 +02:00 committed by Erik Michelson
parent 83c7f81a76
commit a0bc8e98d0
11 changed files with 190 additions and 125 deletions

View file

@ -6,6 +6,7 @@
import { DropdownHeader } from '../dropdown-header'
import { VersionInfoHelpMenuEntry } from './instance/version-info-help-menu-entry'
import React, { Fragment } from 'react'
import { MotdModalHelpMenuEntry } from './instance/motd-modal-help-menu-entry'
/**
* Renders the instance submenu for the help dropdown.
@ -15,6 +16,7 @@ export const InstanceSubmenu: React.FC = () => {
<Fragment>
<DropdownHeader i18nKey={'appbar.help.instance.header'} />
<VersionInfoHelpMenuEntry />
<MotdModalHelpMenuEntry />
</Fragment>
)
}

View file

@ -0,0 +1,35 @@
/*
* SPDX-FileCopyrightText: 2023 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
import React, { Fragment } from 'react'
import { TranslatedDropdownItem } from '../../translated-dropdown-item'
import { InfoCircleFill as IconInfoCircleFill } from 'react-bootstrap-icons'
import { useBooleanState } from '../../../../../../../hooks/common/use-boolean-state'
import { MotdModal } from '../../../../../../global-dialogs/motd-modal/motd-modal'
import { useMotdContextValue } from '../../../../../../motd/motd-context'
/**
* Help menu entry for the motd modal.
* When no modal content is defined, the menu entry will not render.
*/
export const MotdModalHelpMenuEntry: React.FC = () => {
const [modalVisibility, showModal, closeModal] = useBooleanState(false)
const contextValue = useMotdContextValue()
if (!contextValue) {
return null
}
return (
<Fragment>
<TranslatedDropdownItem
icon={IconInfoCircleFill}
i18nKey={'appbar.help.instance.motdModal'}
onClick={showModal}
/>
<MotdModal show={modalVisibility} onDismiss={closeModal} />
</Fragment>
)
}