diff --git a/common/src/api/schema.ts b/common/src/api/schema.ts index 97416e77..c9d0565e 100644 --- a/common/src/api/schema.ts +++ b/common/src/api/schema.ts @@ -10,6 +10,7 @@ import {Notification} from 'common/notifications' import {CompatibilityScore} from 'common/profiles/compatibility-score' import {MAX_COMPATIBILITY_QUESTION_LENGTH, OPTION_TABLES} from 'common/profiles/constants' import {Profile, ProfileRow} from 'common/profiles/profile' +import {Stats} from 'common/stats' // mqp: very unscientific, just balancing our willingness to accept load import {PrivateMessageChannel} from 'common/supabase/private-messages' import {Row} from 'common/supabase/utils' import {PrivateUser, User} from 'common/user' @@ -150,14 +151,7 @@ export const API = (_apiTypeCheck = { rateLimited: true, props: z.object({}), cache: 'public, max-age=60', - returns: {} as { - users: number - profiles: number - upcomingEvents: number - messages: number - genderRatio: Record - genderCounts: Record - }, + returns: {} as Stats, summary: 'Get platform statistics', tag: 'General', }, diff --git a/common/src/stats.ts b/common/src/stats.ts new file mode 100644 index 00000000..0643b96b --- /dev/null +++ b/common/src/stats.ts @@ -0,0 +1,8 @@ +export type Stats = { + users: number + profiles: number + upcomingEvents: number + messages: number + genderRatio: Record + genderCounts: Record +} diff --git a/web/pages/stats.tsx b/web/pages/stats.tsx index 47bd6360..a3acf3c5 100644 --- a/web/pages/stats.tsx +++ b/web/pages/stats.tsx @@ -1,4 +1,5 @@ import clsx from 'clsx' +import {type Stats} from 'common/stats' import {useEffect, useState} from 'react' import {Col} from 'web/components/layout/col' import {PageBase} from 'web/components/page-base' @@ -12,7 +13,7 @@ import {getCount} from 'web/lib/supabase/users' export default function Stats() { const t = useT() const [data, setData] = useState>({}) - const [statsData, setStatsData] = useState(null) + const [statsData, setStatsData] = useState(undefined) useEffect(() => { async function load() { @@ -21,7 +22,6 @@ export default function Stats() { 'active_members', 'bookmarked_searches', 'private_user_message_channels', - 'private_user_messages', 'profile_comments', 'compatibility_prompts', 'compatibility_answers', @@ -88,8 +88,8 @@ export default function Stats() { label={t('stats.discussions', 'Discussions')} /> )} - {!!data.private_user_messages && ( - + {!!statsData?.messages && ( + )} {!!data.compatibility_prompts && ( )}