[Glitch] simplify counters
Port e0d230fb37
to glitch-soc
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
pull/2291/head
parent
5b9e43187c
commit
9e311f95aa
|
@ -1,59 +0,0 @@
|
||||||
// @ts-check
|
|
||||||
import { FormattedMessage } from 'react-intl';
|
|
||||||
/**
|
|
||||||
* Returns custom renderer for one of the common counter types
|
|
||||||
* @param {"statuses" | "following" | "followers"} counterType
|
|
||||||
* Type of the counter
|
|
||||||
* @param {boolean} isBold Whether display number must be displayed in bold
|
|
||||||
* @returns {(displayNumber: JSX.Element, pluralReady: number) => JSX.Element}
|
|
||||||
* Renderer function
|
|
||||||
* @throws If counterType is not covered by this function
|
|
||||||
*/
|
|
||||||
export function counterRenderer(counterType, isBold = true) {
|
|
||||||
/**
|
|
||||||
* @type {(displayNumber: JSX.Element) => JSX.Element}
|
|
||||||
*/
|
|
||||||
const renderCounter = isBold
|
|
||||||
? (displayNumber) => <strong>{displayNumber}</strong>
|
|
||||||
: (displayNumber) => displayNumber;
|
|
||||||
|
|
||||||
switch (counterType) {
|
|
||||||
case 'statuses': {
|
|
||||||
return (displayNumber, pluralReady) => (
|
|
||||||
<FormattedMessage
|
|
||||||
id='account.statuses_counter'
|
|
||||||
defaultMessage='{count, plural, one {{counter} Post} other {{counter} Posts}}'
|
|
||||||
values={{
|
|
||||||
count: pluralReady,
|
|
||||||
counter: renderCounter(displayNumber),
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
case 'following': {
|
|
||||||
return (displayNumber, pluralReady) => (
|
|
||||||
<FormattedMessage
|
|
||||||
id='account.following_counter'
|
|
||||||
defaultMessage='{count, plural, one {{counter} Following} other {{counter} Following}}'
|
|
||||||
values={{
|
|
||||||
count: pluralReady,
|
|
||||||
counter: renderCounter(displayNumber),
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
case 'followers': {
|
|
||||||
return (displayNumber, pluralReady) => (
|
|
||||||
<FormattedMessage
|
|
||||||
id='account.followers_counter'
|
|
||||||
defaultMessage='{count, plural, one {{counter} Follower} other {{counter} Followers}}'
|
|
||||||
values={{
|
|
||||||
count: pluralReady,
|
|
||||||
counter: renderCounter(displayNumber),
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
default: throw Error(`Incorrect counter name: ${counterType}. Ensure it accepted by commonCounter function`);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
|
export const StatusesCounter = (
|
||||||
|
displayNumber: React.ReactNode,
|
||||||
|
pluralReady: number
|
||||||
|
) => (
|
||||||
|
<FormattedMessage
|
||||||
|
id='account.statuses_counter'
|
||||||
|
defaultMessage='{count, plural, one {{counter} Post} other {{counter} Posts}}'
|
||||||
|
values={{
|
||||||
|
count: pluralReady,
|
||||||
|
counter: <strong>{displayNumber}</strong>,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
export const FollowingCounter = (
|
||||||
|
displayNumber: React.ReactNode,
|
||||||
|
pluralReady: number
|
||||||
|
) => (
|
||||||
|
<FormattedMessage
|
||||||
|
id='account.following_counter'
|
||||||
|
defaultMessage='{count, plural, one {{counter} Following} other {{counter} Following}}'
|
||||||
|
values={{
|
||||||
|
count: pluralReady,
|
||||||
|
counter: <strong>{displayNumber}</strong>,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
export const FollowersCounter = (
|
||||||
|
displayNumber: React.ReactNode,
|
||||||
|
pluralReady: number
|
||||||
|
) => (
|
||||||
|
<FormattedMessage
|
||||||
|
id='account.followers_counter'
|
||||||
|
defaultMessage='{count, plural, one {{counter} Follower} other {{counter} Followers}}'
|
||||||
|
values={{
|
||||||
|
count: pluralReady,
|
||||||
|
counter: <strong>{displayNumber}</strong>,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
Loading…
Reference in New Issue