From fd199b392bfb254d72dc7cc80f06a22666ce04ec Mon Sep 17 00:00:00 2001 From: Tan Su Yin Date: Fri, 14 Oct 2022 15:34:33 +0800 Subject: [PATCH 1/2] [resumes][fix] Fix browse page UI --- apps/portal/src/pages/resumes/browse.tsx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/portal/src/pages/resumes/browse.tsx b/apps/portal/src/pages/resumes/browse.tsx index d6631f4d..0331c720 100644 --- a/apps/portal/src/pages/resumes/browse.tsx +++ b/apps/portal/src/pages/resumes/browse.tsx @@ -144,7 +144,7 @@ export default function ResumeHomePage() { }, ); - const onClickNew = () => { + const onSubmitResume = () => { if (sessionData?.user?.id) { router.push('/resumes/submit'); } else { @@ -185,7 +185,9 @@ export default function ResumeHomePage() {
-

Filters

+

+ Shortcuts: +

@@ -240,8 +242,8 @@ export default function ResumeHomePage() {
@@ -252,7 +254,7 @@ export default function ResumeHomePage() {
-

Categories

+

Shortcuts

    @@ -266,7 +268,9 @@ export default function ResumeHomePage() { ))}
- +

+ Explore these filters: +

{filters.map((section) => (
-
+
{renderSignInButton && ( )} From b8b5b8b8be167b9230db1e2c16ecc7ad7773b7f3 Mon Sep 17 00:00:00 2001 From: Tan Su Yin Date: Fri, 14 Oct 2022 15:34:53 +0800 Subject: [PATCH 2/2] [resumes][feat] Add coloured star if resume is starred --- .../resumes/browse/ResumeListItem.tsx | 44 ++++++++++++++++--- .../resumes/resumes-resume-user-router.ts | 14 ++++++ 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/apps/portal/src/components/resumes/browse/ResumeListItem.tsx b/apps/portal/src/components/resumes/browse/ResumeListItem.tsx index c7f7677a..026395cd 100644 --- a/apps/portal/src/components/resumes/browse/ResumeListItem.tsx +++ b/apps/portal/src/components/resumes/browse/ResumeListItem.tsx @@ -1,9 +1,18 @@ +import clsx from 'clsx'; import formatDistanceToNow from 'date-fns/formatDistanceToNow'; import Link from 'next/link'; +import { useSession } from 'next-auth/react'; import type { UrlObject } from 'url'; import { ChevronRightIcon } from '@heroicons/react/20/solid'; +import { + AcademicCapIcon, + BriefcaseIcon, + StarIcon as ColouredStarIcon, +} from '@heroicons/react/20/solid'; import { ChatBubbleLeftIcon, StarIcon } from '@heroicons/react/24/outline'; +import { trpc } from '~/utils/trpc'; + import type { Resume } from '~/types/resume'; type Props = Readonly<{ @@ -12,24 +21,47 @@ type Props = Readonly<{ }>; export default function BrowseListItem({ href, resumeInfo }: Props) { + const { data: sessionData } = useSession(); + + // Find out if user has starred this particular resume + const resumeId = resumeInfo.id; + const isStarredQuery = trpc.useQuery([ + 'resumes.resume.user.isResumeStarred', + { resumeId }, + ]); + return ( -
+
{resumeInfo.title}
- {resumeInfo.role} -
+
+
+
+
-
-
+
+
{resumeInfo.numComments} comments
- + {isStarredQuery.data && sessionData?.user ? ( + + ) : ( + + )} {resumeInfo.numStars} stars
diff --git a/apps/portal/src/server/router/resumes/resumes-resume-user-router.ts b/apps/portal/src/server/router/resumes/resumes-resume-user-router.ts index 3b0b5a0b..b443c3e2 100644 --- a/apps/portal/src/server/router/resumes/resumes-resume-user-router.ts +++ b/apps/portal/src/server/router/resumes/resumes-resume-user-router.ts @@ -112,4 +112,18 @@ export const resumesResumeUserRouter = createProtectedRouter() return resume; }); }, + }) + .query('isResumeStarred', { + input: z.object({ + resumeId: z.string(), + }), + async resolve({ ctx, input }) { + const userId = ctx.session?.user?.id; + const { resumeId } = input; + return await ctx.prisma.resumesStar.findUnique({ + where: { + userId_resumeId: { resumeId, userId }, + }, + }); + }, });