/** * ============================================================================== * Imports * ============================================================================== */ import React from "react"; /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** * ============================================================================== * Main Component { Functional } * ============================================================================== * @param {Object} props - Server props */ export default function Homepage(props) { // ## Get Contexts /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ // ## Javascript Variables /** ********************* Head Items */ let head = ( <React.Fragment> <title>Showmerebates | Home</title> <meta name="description" content="Find great property rebates" /> </React.Fragment> ); /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ // ## React Hooks { useState, useEffect, useRef, etc ... } /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ // ## Function Return return ( <React.Fragment> <GeneralLayout head={ head } user={ props.user }> <main> <Hero /> <HowItWorks /> <FeaturedProperties data={ props.data } user={ props.user } /> <AboutUsSection /> { !props.user && <LoginPromptPopup user={ props.user } /> } </main> </GeneralLayout> </React.Fragment> ); /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ }; /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** * ============================================================================== * Server Side Props or Static Props * ============================================================================== * @param {Object} req - http incoming request object * @param {Object} res - http response object * @param {Object} query - queries attached to the url */ export async function getServerSideProps({ req, res, query }) { // ## Environment processes /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ // ## User Authentication const user = await userAuth(req, res); /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ // ## Page/Site Data Data Fetching let properties = await dbHandler(` SELECT ListingKeyNumeric,City,RoomsTotal,BathroomsFull,BathroomsTotalInteger,BedroomsTotal,UnparsedAddress,BuildingAreaTotal,ListPrice,PostalCode FROM utahapidata WHERE PhotosCount > 0 AND ListPrice > 0 AND BedroomsTotal > 0 LIMIT 3 `); /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ // ## Server Props Return return { props: { user: user, data: properties, }, }; /** ********************************************** */ /** ********************************************** */ /** ********************************************** */ }