lbry-desktop/ui/component/fileViewCount/view.jsx

45 lines
1.3 KiB
React
Raw Normal View History

2020-01-06 19:32:35 +01:00
// @flow
import { SIMPLE_SITE } from 'config';
import React from 'react';
2020-01-06 19:32:35 +01:00
import HelpLink from 'component/common/help-link';
type Props = {
livestream?: boolean,
isLive?: boolean,
// --- redux ---
claimId: ?string,
fetchViewCount: (string) => void,
uri: string,
2020-01-06 19:32:35 +01:00
viewCount: string,
activeViewers?: number,
2020-01-06 19:32:35 +01:00
};
2020-01-06 21:57:49 +01:00
function FileViewCount(props: Props) {
const { claimId, fetchViewCount, viewCount, livestream, activeViewers, isLive = false } = props;
// @Note: it's important this only runs once on initial render.
React.useEffect(() => {
if (claimId) {
fetchViewCount(claimId);
}
}, []); // eslint-disable-line react-hooks/exhaustive-deps
2020-01-06 19:32:35 +01:00
2020-05-25 18:19:15 +02:00
const formattedViewCount = Number(viewCount).toLocaleString();
2020-01-06 19:32:35 +01:00
return (
2020-09-30 22:46:20 +02:00
<span className="media__subtitle--centered">
2021-07-18 19:06:52 +02:00
{livestream &&
2021-06-17 20:55:23 +02:00
__('%viewer_count% currently %viewer_state%', {
viewer_count: activeViewers === undefined ? '...' : activeViewers,
viewer_state: isLive ? __('watching') : __('waiting'),
})}
2021-07-18 19:06:52 +02:00
{!livestream &&
2021-06-17 20:55:23 +02:00
activeViewers === undefined &&
(viewCount !== 1 ? __('%view_count% views', { view_count: formattedViewCount }) : __('1 view'))}
2021-10-21 22:21:51 +02:00
{!SIMPLE_SITE && <HelpLink href="https://odysee.com/@OdyseeHelp:b/OdyseeBasics:c" />}
2020-01-06 19:32:35 +01:00
</span>
);
}
2020-01-06 21:57:49 +01:00
export default FileViewCount;