From 11b3304c544839e8ee6452a71535aab8751c5645 Mon Sep 17 00:00:00 2001 From: Aaron William Po Date: Sat, 25 Feb 2023 19:17:49 -0500 Subject: [PATCH] Update page auth HOF type definitions Added vercel config, update packages --- components/BeerById/BeerInfoHeader.tsx | 50 +- components/BeerForm.tsx | 40 +- config/auth/withPageAuthRequired.ts | 30 +- hooks/useUser.ts | 1 - package-lock.json | 4040 ++++------------------ package.json | 42 +- pages/beers/[id]/edit.tsx | 51 + pages/beers/{[id].tsx => [id]/index.tsx} | 2 +- pages/beers/create.tsx | 2 +- prisma/schema.prisma | 7 - prisma/seed/create/createNewBeerPosts.ts | 2 +- vercel.json | 3 + 12 files changed, 841 insertions(+), 3429 deletions(-) create mode 100644 pages/beers/[id]/edit.tsx rename pages/beers/{[id].tsx => [id]/index.tsx} (99%) create mode 100644 vercel.json diff --git a/components/BeerById/BeerInfoHeader.tsx b/components/BeerById/BeerInfoHeader.tsx index 49f970b..8f59674 100644 --- a/components/BeerById/BeerInfoHeader.tsx +++ b/components/BeerById/BeerInfoHeader.tsx @@ -5,6 +5,7 @@ import { FC, useContext, useEffect, useState } from 'react'; import { BeerPostQueryResult } from '@/services/BeerPost/schema/BeerPostQueryResult'; import UserContext from '@/contexts/userContext'; +import { FaRegEdit } from 'react-icons/fa'; import BeerPostLikeButton from './BeerPostLikeButton'; const BeerInfoHeader: FC<{ beerPost: BeerPostQueryResult; initialLikeCount: number }> = ({ @@ -16,6 +17,18 @@ const BeerInfoHeader: FC<{ beerPost: BeerPostQueryResult; initialLikeCount: numb const { user } = useContext(UserContext); const [likeCount, setLikeCount] = useState(initialLikeCount); + const [isPostOwner, setIsPostOwner] = useState(false); + + useEffect(() => { + const idMatches = user && beerPost.postedBy.id === user.id; + + if (!(user && idMatches)) { + setIsPostOwner(false); + return; + } + + setIsPostOwner(true); + }, [user, beerPost]); useEffect(() => { setLikeCount(initialLikeCount); @@ -28,16 +41,31 @@ const BeerInfoHeader: FC<{ beerPost: BeerPostQueryResult; initialLikeCount: numb return (
-

{beerPost.name}

-

- by{' '} - - {beerPost.brewery.name} - -

+
+
+

{beerPost.name}

+

+ by{' '} + + {beerPost.brewery.name} + +

+
+
+ {isPostOwner && ( + + + Edit + + )} +
+

posted by{' '} @@ -53,7 +81,7 @@ const BeerInfoHeader: FC<{ beerPost: BeerPostQueryResult; initialLikeCount: numb

{beerPost.description}

-
+
= ({ /> - - Type - {errors.typeId?.message} - - - ({ - value: beerType.id, - text: beerType.name, - }))} - placeholder="Beer type" - message="Pick a beer type" - /> - + {formType === 'create' && types.length && ( + <> + + Type + {errors.typeId?.message} + + + ({ + value: beerType.id, + text: beerType.name, + }))} + placeholder="Beer type" + message="Pick a beer type" + /> + + + )} {!isSubmitting && (