1
0
mirror of https://github.com/kremalicious/portfolio.git synced 2024-06-26 03:06:39 +02:00
This commit is contained in:
Matthias Kretschmann 2021-03-13 01:17:53 +01:00
parent 9493b9d2ef
commit 80cbfd2cd2
Signed by: m
GPG Key ID: 606EEEF3C479A91F
9 changed files with 38 additions and 59 deletions

View File

@ -40,7 +40,7 @@ export default function Layout({ children, location }) {
<> <>
<Typekit /> <Typekit />
<HostnameCheck allowedHosts={allowedHosts} /> <HostnameCheck allowedHosts={allowedHosts} />
<ThemeSwitch /> {/* <ThemeSwitch /> */}
<PoseGroup animateOnMount={process.env.NODE_ENV !== 'test'}> <PoseGroup animateOnMount={process.env.NODE_ENV !== 'test'}>
<RoutesContainer <RoutesContainer

View File

@ -1,45 +1,38 @@
import React, { PureComponent } from 'react' import React, { useEffect, useState } from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import { Helmet } from 'react-helmet' import { Helmet } from 'react-helmet'
import { hostnameInfo } from './HostnameCheck.module.css' import { hostnameInfo } from './HostnameCheck.module.css'
export default class HostnameCheck extends PureComponent { HostnameCheck.propTypes = {
static propTypes = { allowedHosts: PropTypes.array.isRequired
allowedHosts: PropTypes.array.isRequired }
}
checkAllowedHost = () => { export default function HostnameCheck({ allowedHosts }) {
// default to true so SSR builds never show the banner
const [isAllowedHost, setIsAllowedHost] = useState(true)
const checkAllowedHost = () => {
if (typeof window !== 'undefined' && window.location) { if (typeof window !== 'undefined' && window.location) {
return this.props.allowedHosts.includes(window.location.hostname) return allowedHosts.includes(window.location.hostname)
} }
} }
state = { useEffect(() => {
// default to true so SSR builds never show the banner const isAllowedHost = checkAllowedHost()
isAllowedHost: true setIsAllowedHost(isAllowedHost)
} }, [])
componentDidMount() { return !isAllowedHost ? (
const isAllowedHost = this.checkAllowedHost() <>
this.setState({ isAllowedHost }) <Helmet>
} <meta name="robots" content="noindex,nofollow" />
</Helmet>
render() { <aside className={hostnameInfo}>
// return nothing if we're on an allowed host <p>{`Hi there 👋. Please note that only the code and documentation of this
if (this.state.isAllowedHost) return null
return (
<>
<Helmet>
<meta name="robots" content="noindex,nofollow" />
</Helmet>
<aside className={hostnameInfo}>
<p>{`Hi there 👋. Please note that only the code and documentation of this
site are open source. But my logo and the combination of typography, site are open source. But my logo and the combination of typography,
colors, and layout making up my brand identity are not. Don't just colors, and layout making up my brand identity are not. Don't just
clone, do a remix.`}</p> clone, do a remix.`}</p>
</aside> </aside>
</> </>
) ) : null
}
} }

View File

@ -1,4 +1,4 @@
import React, { memo } from 'react' import React from 'react'
import { Helmet } from 'react-helmet' import { Helmet } from 'react-helmet'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import { useMeta } from '../../hooks/use-meta' import { useMeta } from '../../hooks/use-meta'
@ -51,7 +51,7 @@ SEO.propTypes = {
project: PropTypes.object project: PropTypes.object
} }
function SEO({ project }) { export default function SEO({ project }) {
const meta = useMeta() const meta = useMeta()
const { basics } = useResume() const { basics } = useResume()
const title = (project && project.title) || null const title = (project && project.title) || null
@ -71,5 +71,3 @@ function SEO({ project }) {
/> />
) )
} }
export default memo(SEO)

View File

@ -1,4 +1,4 @@
import React, { memo } from 'react' import React from 'react'
import { Helmet } from 'react-helmet' import { Helmet } from 'react-helmet'
import { useMeta } from '../../hooks/use-meta' import { useMeta } from '../../hooks/use-meta'
@ -17,7 +17,7 @@ const TypekitScript = (typekitID) => (
</script> </script>
) )
const Typekit = () => { export default function Typekit() {
const { typekitID } = useMeta() const { typekitID } = useMeta()
return ( return (
@ -30,5 +30,3 @@ const Typekit = () => {
</Helmet> </Helmet>
) )
} }
export default memo(Typekit)

View File

@ -10,7 +10,7 @@ import {
const Animation = posed.aside(fadeIn) const Animation = posed.aside(fadeIn)
const Availability = ({ hide }) => { export default function Availability({ hide }) {
const { availability } = useMeta() const { availability } = useMeta()
const { status, available, unavailable } = availability const { status, available, unavailable } = availability
const className = status const className = status
@ -30,5 +30,3 @@ const Availability = ({ hide }) => {
Availability.propTypes = { Availability.propTypes = {
hide: PropTypes.bool hide: PropTypes.bool
} }
export default Availability

View File

@ -1,4 +1,4 @@
import React, { memo } from 'react' import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import { Link } from 'gatsby' import { Link } from 'gatsby'
import posed from 'react-pose' import posed from 'react-pose'
@ -18,7 +18,7 @@ LogoUnit.propTypes = {
isResume: PropTypes.bool isResume: PropTypes.bool
} }
function LogoUnit({ minimal }) { export default function LogoUnit({ minimal }) {
const { basics } = useResume() const { basics } = useResume()
const Animation = posed.div(moveInBottom) const Animation = posed.div(moveInBottom)
@ -34,5 +34,3 @@ function LogoUnit({ minimal }) {
</Animation> </Animation>
) )
} }
export default memo(LogoUnit)

View File

@ -1,4 +1,4 @@
import React, { memo } from 'react' import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import posed from 'react-pose' import posed from 'react-pose'
import { moveInTop } from '../atoms/Transitions' import { moveInTop } from '../atoms/Transitions'
@ -30,7 +30,7 @@ NetworkLink.propTypes = {
url: PropTypes.string.isRequired url: PropTypes.string.isRequired
} }
function Networks({ small, hide }) { export default function Networks({ small, hide }) {
const { basics } = useResume() const { basics } = useResume()
if (hide) return null if (hide) return null
@ -51,8 +51,6 @@ function Networks({ small, hide }) {
) )
} }
export default memo(Networks)
Networks.propTypes = { Networks.propTypes = {
small: PropTypes.bool, small: PropTypes.bool,
hide: PropTypes.bool hide: PropTypes.bool

View File

@ -1,4 +1,4 @@
import React, { memo } from 'react' import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import loadable from '@loadable/component' import loadable from '@loadable/component'
import LogoUnit from '../molecules/LogoUnit' import LogoUnit from '../molecules/LogoUnit'
@ -37,11 +37,9 @@ FooterMarkup.propTypes = {
year: PropTypes.number.isRequired year: PropTypes.number.isRequired
} }
function Footer() { export default function Footer() {
const metaYaml = useMeta() const metaYaml = useMeta()
const year = new Date().getFullYear() const year = new Date().getFullYear()
return <FooterMarkup year={year} meta={metaYaml} /> return <FooterMarkup year={year} meta={metaYaml} />
} }
export default memo(Footer)

View File

@ -1,4 +1,4 @@
import React, { memo } from 'react' import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import Repository from '../molecules/Repository' import Repository from '../molecules/Repository'
@ -12,7 +12,7 @@ Repositories.propTypes = {
repos: PropTypes.array repos: PropTypes.array
} }
function Repositories({ repos }) { export default function Repositories({ repos }) {
if (!repos) return null if (!repos) return null
return ( return (
@ -26,5 +26,3 @@ function Repositories({ repos }) {
</section> </section>
) )
} }
export default memo(Repositories)