Replace empty components with hooks (#666)

This commit is contained in:
mrdrogdrog 2020-10-12 22:33:23 +02:00 committed by GitHub
parent 9e9108ec9a
commit 0d2c2fe0ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 19 additions and 24 deletions

View file

@ -2,10 +2,10 @@ import React, { Fragment, useCallback, useEffect, useRef, useState } from 'react
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import useMedia from 'use-media' import useMedia from 'use-media'
import { useApplyDarkMode } from '../../hooks/common/use-apply-dark-mode'
import { useDocumentTitle } from '../../hooks/common/use-document-title'
import { ApplicationState } from '../../redux' import { ApplicationState } from '../../redux'
import { setEditorMode } from '../../redux/editor/methods' import { setEditorMode } from '../../redux/editor/methods'
import { ApplyDarkMode } from '../common/apply-dark-mode/apply-dark-mode'
import { DocumentTitle } from '../common/document-title/document-title'
import { extractNoteTitle } from '../common/document-title/note-title-extractor' import { extractNoteTitle } from '../common/document-title/note-title-extractor'
import { MotdBanner } from '../common/motd-banner/motd-banner' import { MotdBanner } from '../common/motd-banner/motd-banner'
import { AppBar, AppBarMode } from './app-bar/app-bar' import { AppBar, AppBarMode } from './app-bar/app-bar'
@ -104,11 +104,12 @@ export const Editor: React.FC = () => {
} }
}, [editorSyncScroll]) }, [editorSyncScroll])
useApplyDarkMode()
useDocumentTitle(documentTitle)
return ( return (
<Fragment> <Fragment>
<ApplyDarkMode/>
<MotdBanner/> <MotdBanner/>
<DocumentTitle title={documentTitle}/>
<div className={'d-flex flex-column vh-100'}> <div className={'d-flex flex-column vh-100'}>
<AppBar mode={AppBarMode.EDITOR}/> <AppBar mode={AppBarMode.EDITOR}/>
<DocumentBar title={documentTitle} noteContent={markdownContent} updateNoteContent={(newContent) => setMarkdownContent(newContent)}/> <DocumentBar title={documentTitle} noteContent={markdownContent} updateNoteContent={(newContent) => setMarkdownContent(newContent)}/>

View file

@ -1,14 +1,15 @@
import React from 'react' import React from 'react'
import { Container } from 'react-bootstrap' import { Container } from 'react-bootstrap'
import { DocumentTitle } from '../common/document-title/document-title' import { useDocumentTitle } from '../../hooks/common/use-document-title'
import { Footer } from './footer/footer' import { Footer } from './footer/footer'
import { MotdBanner } from '../common/motd-banner/motd-banner' import { MotdBanner } from '../common/motd-banner/motd-banner'
import { HeaderBar } from './navigation/header-bar/header-bar' import { HeaderBar } from './navigation/header-bar/header-bar'
export const LandingLayout: React.FC = ({ children }) => { export const LandingLayout: React.FC = ({ children }) => {
useDocumentTitle()
return ( return (
<Container className="text-light d-flex flex-column mvh-100"> <Container className="text-light d-flex flex-column mvh-100">
<DocumentTitle/>
<MotdBanner/> <MotdBanner/>
<HeaderBar/> <HeaderBar/>
<div className={'d-flex flex-column justify-content-between flex-fill text-center'}> <div className={'d-flex flex-column justify-content-between flex-fill text-center'}>

View file

@ -3,8 +3,8 @@ import { Alert } from 'react-bootstrap'
import { Trans, useTranslation } from 'react-i18next' import { Trans, useTranslation } from 'react-i18next'
import { useParams } from 'react-router' import { useParams } from 'react-router'
import { getNote, Note } from '../../api/notes' import { getNote, Note } from '../../api/notes'
import { ApplyDarkMode } from '../common/apply-dark-mode/apply-dark-mode' import { useApplyDarkMode } from '../../hooks/common/use-apply-dark-mode'
import { DocumentTitle } from '../common/document-title/document-title' import { useDocumentTitle } from '../../hooks/common/use-document-title'
import { extractNoteTitle } from '../common/document-title/note-title-extractor' import { extractNoteTitle } from '../common/document-title/note-title-extractor'
import { MotdBanner } from '../common/motd-banner/motd-banner' import { MotdBanner } from '../common/motd-banner/motd-banner'
import { ShowIf } from '../common/show-if/show-if' import { ShowIf } from '../common/show-if/show-if'
@ -47,10 +47,11 @@ export const PadViewOnly: React.FC = () => {
.finally(() => setLoading(false)) .finally(() => setLoading(false))
}, [id]) }, [id])
useApplyDarkMode()
useDocumentTitle(documentTitle)
return ( return (
<div className={'d-flex flex-column mvh-100 bg-light'}> <div className={'d-flex flex-column mvh-100 bg-light'}>
<ApplyDarkMode/>
<DocumentTitle title={documentTitle}/>
<MotdBanner/> <MotdBanner/>
<AppBar mode={AppBarMode.BASIC}/> <AppBar mode={AppBarMode.BASIC}/>
<div className={'container'}> <div className={'container'}>

View file

@ -1,8 +1,8 @@
import React, { useEffect } from 'react' import { useEffect } from 'react'
import { useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import { ApplicationState } from '../../../redux' import { ApplicationState } from '../../redux'
export const ApplyDarkMode: React.FC = () => { export const useApplyDarkMode = ():void => {
const darkModeActivated = useSelector((state: ApplicationState) => state.darkMode.darkMode) const darkModeActivated = useSelector((state: ApplicationState) => state.darkMode.darkMode)
useEffect(() => { useEffect(() => {
@ -15,6 +15,4 @@ export const ApplyDarkMode: React.FC = () => {
window.document.body.classList.remove('dark') window.document.body.classList.remove('dark')
} }
}, [darkModeActivated]) }, [darkModeActivated])
return null
} }

View file

@ -1,17 +1,11 @@
import React, { useEffect } from 'react' import { useEffect } from 'react'
import { useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import { ApplicationState } from '../../../redux' import { ApplicationState } from '../../redux'
export interface DocumentTitleProps { export const useDocumentTitle = (title?: string):void => {
title?: string
}
export const DocumentTitle: React.FC<DocumentTitleProps> = ({ title }) => {
const brandingName = useSelector((state: ApplicationState) => state.config.branding.name) const brandingName = useSelector((state: ApplicationState) => state.config.branding.name)
useEffect(() => { useEffect(() => {
document.title = `${title ? title + ' - ' : ''}HedgeDoc ${brandingName ? ` @ ${brandingName}` : ''}` document.title = `${title ? title + ' - ' : ''}HedgeDoc ${brandingName ? ` @ ${brandingName}` : ''}`
}, [brandingName, title]) }, [brandingName, title])
return null
} }