nico.fyi
    Published on

    Early return for unhappy path

    Authors
    • avatar
      Name
      Nico Prananta
      Twitter
      @2co_p

    A PR was made, something like this:

    // next.js getServerSideProps
    export const getServerSideProps = async (ctx) => {
      const { valid, event } = await isValidEvent({
        organizationSlug,
        projectSlug,
        probeSlug,
        eventSlug,
        userID: ctx.user?.id,
      })
    
      const currentEvent = {
        id: event?.id,
        locationId: event?.locationId,
        monika: event?.monikaId,
        alert: event?.alertId,
        response: parseEventResponse(event?.response),
        createdAt: event?.createdAt.toString(),
        recoveredAt: event?.recoveredAt?.toString() || '',
        location: event?.location,
      }
    
      return {
        props: {
          currentEvent,
        },
      }
    }
    

    The problem with that PR is that it's reading the optional event too many times. Furthermore, in this case since it's Next.js's getServerSideProps, it's better to check the existence of event and return notFound when it's null or undefined since the page component expects a valid event data.