import { NextPage } from 'next'; import Head from 'next/head'; import React from 'react'; import Layout from '@/components/ui/Layout'; import withPageAuthRequired from '@/getServerSideProps/withPageAuthRequired'; import getBeerPostById from '@/services/BeerPost/getBeerPostById'; import beerPostQueryResult from '@/services/BeerPost/schema/BeerPostQueryResult'; import EditBeerPostForm from '@/components/EditBeerPostForm'; import FormPageLayout from '@/components/ui/forms/FormPageLayout'; import { BiBeer } from 'react-icons/bi'; import { z } from 'zod'; interface EditPageProps { beerPost: z.infer; } const EditPage: NextPage = ({ beerPost }) => { const pageTitle = `Edit "${beerPost.name}"`; return ( {pageTitle} ); }; export default EditPage; export const getServerSideProps = withPageAuthRequired( async (context, session) => { const beerPostId = context.params?.id as string; const beerPost = await getBeerPostById(beerPostId); const { id: userId } = session; if (!beerPost) { return { notFound: true }; } const isBeerPostOwner = beerPost.postedBy.id === userId; return isBeerPostOwner ? { props: { beerPost: JSON.parse(JSON.stringify(beerPost)) } } : { redirect: { destination: `/beers/${beerPostId}`, permanent: false } }; }, );