diff --git a/packages/fakeyou/src/v2/view/leaderboard/LeaderboardFc.tsx b/packages/fakeyou/src/v2/view/leaderboard/LeaderboardFc.tsx index d1735c0247..1f80fe8e45 100644 --- a/packages/fakeyou/src/v2/view/leaderboard/LeaderboardFc.tsx +++ b/packages/fakeyou/src/v2/view/leaderboard/LeaderboardFc.tsx @@ -1,19 +1,36 @@ -import React, { useCallback, useEffect, useState } from 'react'; -import { Link } from 'react-router-dom'; -import { FrontendUrlConfig } from '../../../common/FrontendUrlConfig'; -import { SessionWrapper } from '@storyteller/components/src/session/SessionWrapper'; -import { Gravatar } from '@storyteller/components/src/elements/Gravatar'; -import { GetLeaderboard, GetLeaderboardIsErr, GetLeaderboardIsOk, Leaderboard, LeaderboardEntryForList, LeaderboardLookupError } from '../../api/misc/GetLeaderboard'; -import { DiscordLink2 } from '@storyteller/components/src/elements/DiscordLink2'; +import React, { useCallback, useEffect, useState } from "react"; +import { Link } from "react-router-dom"; +import { FrontendUrlConfig } from "../../../common/FrontendUrlConfig"; +import { SessionWrapper } from "@storyteller/components/src/session/SessionWrapper"; +import { Gravatar } from "@storyteller/components/src/elements/Gravatar"; +import { + GetLeaderboard, + GetLeaderboardIsErr, + GetLeaderboardIsOk, + Leaderboard, + LeaderboardEntryForList, + LeaderboardLookupError, +} from "../../api/misc/GetLeaderboard"; +import { DiscordLink2 } from "@storyteller/components/src/elements/DiscordLink2"; +import { distance, delay, duration } from "../../../data/animation"; +import { USE_REFRESH } from "../../../Refresh"; + +const Fade = require("react-reveal/Fade"); interface Props { - sessionWrapper: SessionWrapper, + sessionWrapper: SessionWrapper; } function LeaderboardFc(props: Props) { - const [leaderboard, setLeaderboard] = useState(undefined); - const [ttsLeaderboard, setTtsLeaderboard] = useState|undefined>(undefined); - const [w2lLeaderboard, setW2lLeaderboard] = useState|undefined>(undefined); + const [leaderboard, setLeaderboard] = useState( + undefined + ); + const [ttsLeaderboard, setTtsLeaderboard] = useState< + Array | undefined + >(undefined); + const [w2lLeaderboard, setW2lLeaderboard] = useState< + Array | undefined + >(undefined); const [retryCount, setRetryCount] = useState(0); const getLeaderboard = useCallback(async () => { @@ -24,13 +41,13 @@ function LeaderboardFc(props: Props) { setTtsLeaderboard(leaderboardReponse.tts_leaderboard); setW2lLeaderboard(leaderboardReponse.w2l_leaderboard); } else if (GetLeaderboardIsErr(leaderboardReponse)) { - switch(leaderboardReponse) { + switch (leaderboardReponse) { // TODO: There's an issue with the queries not returning before the deadline. // I should add a Redis TTL cache to store the results and an async job to warm the cache. case LeaderboardLookupError.NotFound: if (retryCount < 3) { setTimeout(() => getLeaderboard(), 1000); - setRetryCount(retryCount+1); + setRetryCount(retryCount + 1); } break; } @@ -45,80 +62,133 @@ function LeaderboardFc(props: Props) { return
; } - let ttsRows : Array = []; + let ttsRows: Array = []; if (ttsLeaderboard) { - ttsLeaderboard.forEach(ttsEntry => { + ttsLeaderboard.forEach((ttsEntry) => { ttsRows.push( - + - +   {ttsEntry.display_name} {ttsEntry.uploaded_count} - ) - }) + ); + }); } - let w2lRows : Array = []; + let w2lRows: Array = []; if (w2lLeaderboard) { - w2lLeaderboard.forEach(w2lEntry => { + w2lLeaderboard.forEach((w2lEntry) => { w2lRows.push( - + - +   {w2lEntry.display_name} {w2lEntry.uploaded_count} - ) - }) + ); + }); + } + + if (!USE_REFRESH) { + return ( +
+

Leaderboard

+

Our most frequent contributors!

+ +

+ Want to be on the leaderboard?{" "} + Join our Discord and learn more! +

+ + + + + + + + {ttsRows} + + + + + + {w2lRows} + +
+

TTS Models Uploaded

+
+
+

W2L Templates Uploaded

+
+
+ ); } return (
-

Leaderboard

-

Our most frequent contributors!

+
+ +
+

Leaderboard

+

Our most frequent contributors!

+

+ Want to be on the leaderboard?{" "} + Join our Discord and learn more! +

+
+
+
-

Want to be on the leaderboard? Join our Discord and learn more!

+ +
+
+

TTS Models Uploaded

+
+ + {ttsRows} +
+
+
+
- - - - - - - {ttsRows} - - - - - - {w2lRows} - - -
-

TTS Models Uploaded

-
-
-

W2L Templates Uploaded

-
+
+
+

W2L Templates Uploaded

+
+ + {w2lRows} +
+
+
+
+
- ) + ); } -export { LeaderboardFc } \ No newline at end of file +export { LeaderboardFc };