From 5a1db51328b61af76ddb03db87cbd236f7bf1c55 Mon Sep 17 00:00:00 2001 From: Kevin Wu Date: Tue, 26 Sep 2023 21:55:34 -0400 Subject: [PATCH 1/3] feat: preliminary frontend for buttons --- src/pages/hackers/hacker.tsx | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/pages/hackers/hacker.tsx b/src/pages/hackers/hacker.tsx index 0009f983..c2d3202f 100644 --- a/src/pages/hackers/hacker.tsx +++ b/src/pages/hackers/hacker.tsx @@ -28,6 +28,12 @@ const Hacker: NextPage = () => { const hackerQuery = trpc.hackers.get.useQuery({ id: id ?? "" }, { enabled: !!id }); const presenceQuery = trpc.presence.getFromHackerId.useQuery({ id: id ?? "" }, { enabled: !!id }); + + //nextId = hackerQuery.data.INDEX; + //if nextId exists: + //nextHackerQuery = trpc.hackers.get.useQuery({id: nextID}) + //use nextHackerQuery.data.id in href of next button + if (hackerQuery.isLoading || hackerQuery.data == null) { return ( @@ -82,6 +88,26 @@ const Hacker: NextPage = () => { >
role === Role.ORGANIZER || role === Role.SPONSOR}> +
+ + Previous + + + Next + +
role === Role.HACKER}>{t("not-authorized-to-view-this-page")} From 508e7ba7e756409128a8934f0df2e41b5b2f168d Mon Sep 17 00:00:00 2001 From: Kevin Wu Date: Wed, 4 Oct 2023 20:57:48 -0400 Subject: [PATCH 2/3] feat: implemented working next and prev buttons --- src/pages/hackers/hacker.tsx | 22 +++++------ src/server/api/routers/hackers.ts | 62 +++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 11 deletions(-) diff --git a/src/pages/hackers/hacker.tsx b/src/pages/hackers/hacker.tsx index c2d3202f..1c890996 100644 --- a/src/pages/hackers/hacker.tsx +++ b/src/pages/hackers/hacker.tsx @@ -27,8 +27,10 @@ const Hacker: NextPage = () => { const hackerQuery = trpc.hackers.get.useQuery({ id: id ?? "" }, { enabled: !!id }); const presenceQuery = trpc.presence.getFromHackerId.useQuery({ id: id ?? "" }, { enabled: !!id }); - + const nextHackerQuery = trpc.hackers.getNext.useQuery({ id: id ?? "" }, { enabled: !!id }); + const prevHackerQuery = trpc.hackers.getPrev.useQuery({ id: id ?? "" }, { enabled: !!id }); + //nextId = hackerQuery.data.INDEX; //if nextId exists: //nextHackerQuery = trpc.hackers.get.useQuery({id: nextID}) @@ -89,24 +91,22 @@ const Hacker: NextPage = () => {
role === Role.ORGANIZER || role === Role.SPONSOR}>
- Previous - + )} + {nextHackerQuery.data && ( Next + )}
diff --git a/src/server/api/routers/hackers.ts b/src/server/api/routers/hackers.ts index 6f0ed750..3447061d 100644 --- a/src/server/api/routers/hackers.ts +++ b/src/server/api/routers/hackers.ts @@ -42,6 +42,68 @@ export const hackerRouter = createTRPCRouter({ return hacker; }), + + getNext: publicProcedure + .input( + z + .object({ + id: z.string(), + }) + .or( + z.object({ + email: z.string(), + }), + ), + ) + .query(async ({ ctx, input }) => { + let hacker: HackerInfo | null = null; + if ("id" in input) { + hacker = await ctx.prisma.hackerInfo.findFirst({ + take: 1, + skip: 1, + cursor: { + id: input.id, + }, + }); + } + + if (!hacker) { + throw new Error("Hacker not found"); + } + + return hacker; + }), + + getPrev: publicProcedure + .input( + z + .object({ + id: z.string(), + }) + .or( + z.object({ + email: z.string(), + }), + ), + ) + .query(async ({ ctx, input }) => { + let hacker: HackerInfo | null = null; + if ("id" in input) { + hacker = await ctx.prisma.hackerInfo.findFirst({ + take: -1, + skip: 1, + cursor: { + id: input.id, + }, + }); + } + + if (!hacker) { + throw new Error("Hacker not found"); + } + + return hacker; + }), // Get all hackers all: protectedProcedure From 83d7f23088eeec48b8488817a459b440603095e0 Mon Sep 17 00:00:00 2001 From: Kevin Wu Date: Mon, 9 Oct 2023 13:30:04 -0400 Subject: [PATCH 3/3] fix: cleaned up comments and hacker router getNext and getPrev --- src/pages/hackers/hacker.tsx | 5 ----- src/server/api/routers/hackers.ts | 16 ++++------------ 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/src/pages/hackers/hacker.tsx b/src/pages/hackers/hacker.tsx index 1c890996..50bd8ea1 100644 --- a/src/pages/hackers/hacker.tsx +++ b/src/pages/hackers/hacker.tsx @@ -31,11 +31,6 @@ const Hacker: NextPage = () => { const nextHackerQuery = trpc.hackers.getNext.useQuery({ id: id ?? "" }, { enabled: !!id }); const prevHackerQuery = trpc.hackers.getPrev.useQuery({ id: id ?? "" }, { enabled: !!id }); - //nextId = hackerQuery.data.INDEX; - //if nextId exists: - //nextHackerQuery = trpc.hackers.get.useQuery({id: nextID}) - //use nextHackerQuery.data.id in href of next button - if (hackerQuery.isLoading || hackerQuery.data == null) { return ( diff --git a/src/server/api/routers/hackers.ts b/src/server/api/routers/hackers.ts index 3447061d..7c20d096 100644 --- a/src/server/api/routers/hackers.ts +++ b/src/server/api/routers/hackers.ts @@ -43,17 +43,13 @@ export const hackerRouter = createTRPCRouter({ return hacker; }), + // Get next hacker in db from an id getNext: publicProcedure .input( z .object({ id: z.string(), - }) - .or( - z.object({ - email: z.string(), - }), - ), + }), ) .query(async ({ ctx, input }) => { let hacker: HackerInfo | null = null; @@ -74,17 +70,13 @@ export const hackerRouter = createTRPCRouter({ return hacker; }), + // Get prev hacker in db from an id getPrev: publicProcedure .input( z .object({ id: z.string(), - }) - .or( - z.object({ - email: z.string(), - }), - ), + }), ) .query(async ({ ctx, input }) => { let hacker: HackerInfo | null = null;