diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-03-01 22:08:56 +0100 | 
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-03-01 22:08:56 +0100 | 
| commit | 80d54805e26a6a6971c5ad214b02456dcc226628 (patch) | |
| tree | 9b81e0cd3ff881b2cbeb81f9f96b52b510d67646 /src/components/MetaItems/ReadingTime | |
| parent | 99ae0a9d3a923ca1e998dc9b504dad607fdfd768 (diff) | |
| parent | 8bd9784acdee6871ad70e86d0d7120299bf76969 (diff) | |
refactor: various refactoring
Improve maintenance (meta splitting) and try to
improve performance (dynamic imports).
Diffstat (limited to 'src/components/MetaItems/ReadingTime')
| -rw-r--r-- | src/components/MetaItems/ReadingTime/ReadingTime.tsx | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/src/components/MetaItems/ReadingTime/ReadingTime.tsx b/src/components/MetaItems/ReadingTime/ReadingTime.tsx new file mode 100644 index 0000000..94215b3 --- /dev/null +++ b/src/components/MetaItems/ReadingTime/ReadingTime.tsx @@ -0,0 +1,55 @@ +import { MetaKind } from '@ts/types/app'; +import { useRouter } from 'next/router'; +import { useIntl } from 'react-intl'; +import { MetaItem } from '..'; + +const ReadingTime = ({ +  time, +  words, +  kind, +}: { +  time: number; +  words: number; +  kind: MetaKind; +}) => { +  const intl = useIntl(); +  const { locale } = useRouter(); + +  const getEstimation = () => { +    if (time < 0) { +      return intl.formatMessage({ +        defaultMessage: 'less than 1 minute', +        description: 'ReadingTime: Reading time value', +      }); +    } + +    return intl.formatMessage( +      { +        defaultMessage: +          '{time, plural, =0 {# minutes} one {# minute} other {# minutes}}', +        description: 'ReadingTime: reading time value', +      }, +      { time } +    ); +  }; + +  return ( +    <MetaItem +      title={intl.formatMessage({ +        defaultMessage: 'Reading time:', +        description: 'ReadingTime: reading time meta label', +      })} +      value={getEstimation()} +      info={intl.formatMessage( +        { +          defaultMessage: `Approximately {number} words`, +          description: 'ReadingTime: number of words', +        }, +        { number: words.toLocaleString(locale) } +      )} +      kind={kind} +    /> +  ); +}; + +export default ReadingTime; | 
