Factor out 'toCompactNotation'

This commit is contained in:
infinite-persistence 2022-01-10 10:35:34 +08:00
parent b859283f82
commit df4d142370
No known key found for this signature in database
GPG key ID: B9C3252EDC3D0AA0
2 changed files with 14 additions and 10 deletions

View file

@ -2,6 +2,7 @@
import React from 'react';
import 'scss/component/_view_count.scss';
import * as PAGES from 'constants/pages';
import { toCompactNotation } from 'util/string';
type Props = {
uri: string,
@ -14,16 +15,7 @@ type Props = {
export default function FileViewCountInline(props: Props) {
const { isLivestream, claim, viewCount, lang } = props;
let formattedViewCount;
try {
formattedViewCount = Number(viewCount).toLocaleString(lang || 'en', {
compactDisplay: 'short',
notation: 'compact',
});
} catch (err) {
formattedViewCount = Number(viewCount).toLocaleString();
}
const formattedViewCount = toCompactNotation(viewCount, lang);
// Limit the view-count visibility to specific pages for now. We'll eventually
// show it everywhere, so this band-aid would be the easiest to clean up

View file

@ -3,3 +3,15 @@
export function toCapitalCase(string: string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
export function toCompactNotation(number: string | number, lang: ?string) {
try {
return Number(number).toLocaleString(lang || 'en', {
compactDisplay: 'short',
notation: 'compact',
});
} catch (err) {
// Not all browsers support the addition options.
return Number(number).toLocaleString();
}
}