2024-11-29 13:20:27 -06:00
|
|
|
import { formatCompact } from '@blitzkit/core';
|
2024-06-30 19:59:32 -05:00
|
|
|
import { InfoCircledIcon } from '@radix-ui/react-icons';
|
|
|
|
|
import { Callout, Flex } from '@radix-ui/themes';
|
2024-11-29 13:20:27 -06:00
|
|
|
import { awaitableAverageDefinitions } from '../../core/awaitables/averageDefinitions';
|
|
|
|
|
import { awaitableDiscoveredIdsDefinitions } from '../../core/awaitables/discoveredIdsDefinitions';
|
2025-01-06 20:31:21 -06:00
|
|
|
import { literals } from '../../core/i18n/literals';
|
|
|
|
|
import { useLocale } from '../../hooks/useLocale';
|
2024-10-18 10:24:39 -05:00
|
|
|
import type { MaybeSkeletonComponentProps } from '../../types/maybeSkeletonComponentProps';
|
2024-10-06 00:02:50 -05:00
|
|
|
|
2024-11-29 13:20:27 -06:00
|
|
|
const [discoveredIdsDefinitions, averageDefinitions] = await Promise.all([
|
|
|
|
|
awaitableDiscoveredIdsDefinitions,
|
|
|
|
|
awaitableAverageDefinitions,
|
|
|
|
|
]);
|
2024-06-30 19:59:32 -05:00
|
|
|
|
2024-10-18 10:24:39 -05:00
|
|
|
export function PerformanceInfo({ skeleton }: MaybeSkeletonComponentProps) {
|
2025-01-06 20:31:21 -06:00
|
|
|
const { strings, locale } = useLocale();
|
|
|
|
|
const samples = formatCompact(
|
|
|
|
|
locale,
|
|
|
|
|
Math.round(discoveredIdsDefinitions.count),
|
|
|
|
|
);
|
2024-07-18 19:05:18 -05:00
|
|
|
const minutesAgo = Math.floor(
|
2024-10-06 00:02:50 -05:00
|
|
|
(Date.now() - averageDefinitions.time) / (1000 * 60),
|
2024-07-18 19:05:18 -05:00
|
|
|
);
|
|
|
|
|
const hoursAgo = Math.floor(minutesAgo / 60);
|
2025-01-06 20:31:21 -06:00
|
|
|
const timeAgo = literals(
|
|
|
|
|
strings.website.tools.performance.estimation[
|
|
|
|
|
hoursAgo === 0 ? 'minutes' : 'hours'
|
|
|
|
|
],
|
|
|
|
|
[`${hoursAgo === 0 ? minutesAgo : hoursAgo}`],
|
|
|
|
|
);
|
2024-06-30 19:59:32 -05:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Flex justify="center">
|
|
|
|
|
<Callout.Root style={{ width: 'fit-content' }}>
|
|
|
|
|
<Callout.Icon>
|
|
|
|
|
<InfoCircledIcon />
|
|
|
|
|
</Callout.Icon>
|
|
|
|
|
<Callout.Text>
|
2025-01-06 20:31:21 -06:00
|
|
|
{/* Estimated stats based on{' '}
|
2024-10-18 10:24:39 -05:00
|
|
|
{skeleton ? <InlineSkeleton width="2rem" /> : samples} players.
|
2025-01-06 20:31:21 -06:00
|
|
|
Updated {skeleton ? <InlineSkeleton width="3rem" /> : timeAgo} ago. */}
|
|
|
|
|
|
|
|
|
|
{literals(strings.website.tools.performance.estimation.body, [
|
|
|
|
|
samples,
|
|
|
|
|
timeAgo,
|
|
|
|
|
])}
|
2024-06-30 19:59:32 -05:00
|
|
|
</Callout.Text>
|
|
|
|
|
</Callout.Root>
|
|
|
|
|
</Flex>
|
|
|
|
|
);
|
|
|
|
|
}
|