// Dependencies import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import { nsMerge } from 'shared/utils.mjs' // Hooks import { useTranslation } from 'next-i18next' import { useState, useEffect } from 'react' import { useBackend } from 'shared/hooks/use-backend.mjs' // Components import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs' import { ns as authNs } from 'shared/components/wrappers/auth/index.mjs' import { Loading } from 'shared/components/spinner.mjs' import { PageLink } from 'shared/components/link.mjs' // Translation namespaces used on this page const ns = nsMerge(authNs, pageNs, 'status', 'stats') /* * Each page MUST be wrapped in the PageWrapper component. * You also MUST spread props.page into this wrapper component * when path and locale come from static props (as here) * or set them manually. */ const StatsPage = ({ page }) => { const { t } = useTranslation(ns) const backend = useBackend() const [stats, setStats] = useState(false) useEffect(() => { const loadStats = async () => { const result = await backend.getStats() if (result.success && result.data) { setStats(result.data) } } if (!stats) loadStats() }, []) if (!stats) return ( ) return (
{t('stats:users')}
{stats.user}
{t('stats:totalNumberStored')}
{t('stats:patterns')}
{stats.pattern}
{t('stats:totalNumberStored')}
{t('stats:sets')}
{stats.set}
{t('stats:totalNumberStored')}
{t('stats:csets')}
{stats.curatedSet}
{t('stats:totalNumberStored')}
{t('stats:bookmarks')}
{stats.bookmark}
{t('stats:totalNumberStored')}
{t('stats:apikeys')}
{stats.apikey}
{t('stats:totalNumberStored')}
{t('stats:jwtCalls')}
{stats.activity.jwt}
{t('stats:totalNumberSeen')}
{t('stats:keyCalls')}
{stats.activity.key}
{t('stats:totalNumberSeen')}

{t('topUsers')}

    {stats.topUsers.map((u) => (
  1. {u.username}
  2. ))}

{t('topDesigns')}

    {Object.entries(stats.designs).map(([d, c]) => (
  1. {d} : {c}
  2. ))}
) } export default StatsPage export async function getStaticProps({ locale }) { return { props: { ...(await serverSideTranslations(locale, ns)), page: { locale, path: ['users'], }, }, } }