diff --git a/apps/portal/src/components/resumes/browse/ResumeListItem.tsx b/apps/portal/src/components/resumes/browse/ResumeListItem.tsx index c7f7677a..0d0a2756 100644 --- a/apps/portal/src/components/resumes/browse/ResumeListItem.tsx +++ b/apps/portal/src/components/resumes/browse/ResumeListItem.tsx @@ -1,9 +1,17 @@ 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 +20,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/components/resumes/browse/resumeConstants.ts b/apps/portal/src/components/resumes/browse/resumeConstants.ts index 42d79249..9f0a2058 100644 --- a/apps/portal/src/components/resumes/browse/resumeConstants.ts +++ b/apps/portal/src/components/resumes/browse/resumeConstants.ts @@ -46,16 +46,16 @@ export const EXPERIENCE: Array = [ { label: 'Junior', value: 'Junior' }, { label: 'Senior', value: 'Senior' }, { - label: 'Fresh Grad (0-1 years)', - value: 'Fresh Grad (0-1 years)', + label: 'Entry Level (0 - 2 years)', + value: 'Entry Level (0 - 2 years)', }, { - label: 'Mid-level (2 - 5 years)', - value: 'Mid-level (2 - 5 years)', + label: 'Mid Level (3 - 5 years)', + value: 'Mid Level (3 - 5 years)', }, { - label: 'Senior (5+ years)', - value: 'Senior (5+ years)', + label: 'Senior Level (5+ years)', + value: 'Senior Level (5+ years)', }, ]; 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 && ( )} 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 }, + }, + }); + }, });