diff --git a/apps/expo/src/components/cards/QuestionCard.tsx b/apps/expo/src/components/cards/QuestionCard.tsx index 8ce67071..f0b4bcb9 100644 --- a/apps/expo/src/components/cards/QuestionCard.tsx +++ b/apps/expo/src/components/cards/QuestionCard.tsx @@ -76,7 +76,11 @@ const QuestionCard: FC = ({ className="absolute left-0 top-0 h-[103px] w-[140px] rounded-l-xl" /> - + {index + 1} -{" "} {match(question.type) .with("multiple_choice", () => "Multiple Choice") @@ -86,7 +90,7 @@ const QuestionCard: FC = ({ .exhaustive()} diff --git a/apps/expo/src/components/my-library/LibraryTabs.tsx b/apps/expo/src/components/my-library/LibraryTabs.tsx index 370308a0..611b7653 100644 --- a/apps/expo/src/components/my-library/LibraryTabs.tsx +++ b/apps/expo/src/components/my-library/LibraryTabs.tsx @@ -77,7 +77,7 @@ export const LibraryTabs: FC = ({ tabData }) => { onPress={() => navigation.navigate("TestDetails", { testId: item.id }) } - className=" my-5 h-28 w-full flex-row overflow-hidden rounded-xl border-2 border-gray-100" + className=" mb-5 h-28 w-full flex-row overflow-hidden rounded-xl border-2 border-gray-100" > = ({ tabData }) => { /> - + = ({ tabData }) => { - {dayjs(item.createdAt).fromNow()} - . - {item.plays ? item.plays.length : 0} plays + {((fromNow) => + fromNow.charAt(0).toUpperCase() + fromNow.slice(1))( + dayjs(item.createdAt).fromNow(), + )} + + + • {item.plays ? item.plays.length : 0}{" "} + {item.plays + ? item.plays.length > 1 + ? "plays" + : "play" + : "play"} diff --git a/apps/expo/src/components/my-reviewer/ReviewerTab.tsx b/apps/expo/src/components/my-reviewer/ReviewerTab.tsx index 26747d38..06b9ecfa 100644 --- a/apps/expo/src/components/my-reviewer/ReviewerTab.tsx +++ b/apps/expo/src/components/my-reviewer/ReviewerTab.tsx @@ -82,7 +82,12 @@ export const ReviewerTabs: FC = ({ tabData }) => { - {dayjs(item.createdAt).fromNow()} + + {((fromNow) => + fromNow.charAt(0).toUpperCase() + fromNow.slice(1))( + dayjs(item.createdAt).fromNow(), + )} + diff --git a/apps/expo/src/components/view-all-display/reviewers/ViewAllScreenReviewerCard.tsx b/apps/expo/src/components/view-all-display/reviewers/ViewAllScreenReviewerCard.tsx index ad245e05..abae65ee 100644 --- a/apps/expo/src/components/view-all-display/reviewers/ViewAllScreenReviewerCard.tsx +++ b/apps/expo/src/components/view-all-display/reviewers/ViewAllScreenReviewerCard.tsx @@ -1,8 +1,8 @@ import React from "react"; import { Image, Text, View } from "react-native"; import type { ImageSourcePropType } from "react-native"; -import { getTimeAgo } from "../../../functions/timeAgo"; import { FC } from "react"; +import dayjs from "dayjs"; interface Props { imageSource: ImageSourcePropType; @@ -13,8 +13,6 @@ interface Props { } const ViewAllScreenReviewerCard: FC = (props) => { - const timeAgo = getTimeAgo(new Date(props.date), new Date()); - return ( @@ -40,9 +38,11 @@ const ViewAllScreenReviewerCard: FC = (props) => { numberOfLines={1} ellipsizeMode="tail" > - {timeAgo} + {((fromNow) => + fromNow.charAt(0).toUpperCase() + fromNow.slice(1))( + dayjs(props.date).fromNow(), + )} - = (props) => { @@ -54,14 +55,21 @@ const ViewAllScreenTestCard: FC = (props) => { > {timeAgo} - - - {props.plays} plays - + {props.displayPlays && ( + <> + + • + + + + {props.plays} {props.plays <= 1 ? "play" : "plays"} + + + )} = (props) => { imageUrl: string; createdAt: Date; updatedAt: Date; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + plays: any; }[] | undefined = undefined; let headerTitle = ""; @@ -64,14 +66,6 @@ export const ViewAllTestDisplay: FC = (props) => { const { data } = trpc.test.getDiscoverTests.useQuery(); fetchedTestData = data; headerTitle = "Discover Tests"; - } else if (props.testsFor == "trending") { - const { data } = trpc.test.getTrendingTests.useQuery(); - fetchedTestData = data; - headerTitle = "Trending"; - } else if (props.testsFor == "topPicks") { - const { data } = trpc.test.getTopPicks.useQuery(); - fetchedTestData = data; - headerTitle = "Top Picks"; } else if (props.testsFor == "questions") { const { type } = props; headerTitle = "Questions"; @@ -185,13 +179,14 @@ export const ViewAllTestDisplay: FC = (props) => { title={item.title} questions={item.questions.length} date={new Date(item.createdAt)} - plays={0} + plays={item.plays.length} userImageSource={{ uri: item.user.imageUrl ?? "https://example.com/dummy-image.jpg", }} userName={fullName} + displayPlays={true} /> ); diff --git a/apps/expo/src/screens/settings/HistoryTest.tsx b/apps/expo/src/screens/settings/HistoryTest.tsx index 2410ad14..24517328 100644 --- a/apps/expo/src/screens/settings/HistoryTest.tsx +++ b/apps/expo/src/screens/settings/HistoryTest.tsx @@ -64,11 +64,12 @@ export const HistoryTestScreen = () => { title={testHistory.title} questions={testHistory.questions.length} date={new Date(testHistory.createdAt)} - plays={0} userImageSource={{ uri: testHistory.creatorImage ?? IMAGE_PLACEHOLDER, }} userName={fullName} + plays={0} + displayPlays={false} /> ); diff --git a/apps/expo/src/screens/test-history/index.tsx b/apps/expo/src/screens/test-history/index.tsx index 40beb8cc..12fb5d7b 100644 --- a/apps/expo/src/screens/test-history/index.tsx +++ b/apps/expo/src/screens/test-history/index.tsx @@ -143,7 +143,10 @@ export const TestHistoryScreen: FC = ({ numberOfLines={1} ellipsizeMode="tail" > - + {testHistory.title} @@ -202,7 +205,10 @@ export const TestHistoryScreen: FC = ({ Description - + {testHistory?.description ?? "N/A"} diff --git a/packages/api/src/router/test.ts b/packages/api/src/router/test.ts index 5be7f52d..87eea018 100644 --- a/packages/api/src/router/test.ts +++ b/packages/api/src/router/test.ts @@ -634,8 +634,8 @@ export const testRouter = router({ }) .input(highlightTestsInput) .output(z.any()) - .query(({ ctx, input }) => { - return ctx.prisma.test.findMany({ + .query(async ({ ctx, input }) => { + return await ctx.prisma.test.findMany({ ...(input && input.amountOfTests ? { take: input.amountOfTests } : { take: 50 }), @@ -647,6 +647,11 @@ export const testRouter = router({ title: true, description: true, imageUrl: true, + plays: { + select: { + isFinished: true, + }, + }, keywords: { select: { id: true,