---
// Full Astro Component Syntax:
// https://docs.astro.build/core-concepts/astro-components/

import { DoesItAPI } from '~/helpers/api/client.js'
import {
    catchRedirectResponse,
    applyResponseDefaults
} from '~/helpers/astro/request.js'
import {
    getVideoImages,
    ListingDetails
} from '~/helpers/listing-page.js'
import { getPathPartsFromAstroRequest } from '~/helpers/url.js'

import Layout from '~/src/layouts/default.astro'
import Listing from '~/src/components/default-listing.astro'
import VideoListing from '~/src/components/video-listing.astro'


const redirectResponse = await catchRedirectResponse( Astro )

if ( redirectResponse !== null ) {
  return redirectResponse
}

applyResponseDefaults( Astro )

// Get type and slug from the request path
// so that we don't have extra parts for
// urls like /:type/:slug/benchmarks
const {
    pathSlug,
    subSlug = null
 } = getPathPartsFromAstroRequest( Astro.request )

const isBenchmarkPage = subSlug === 'benchmarks'


// Astro Request reference
// https://docs.astro.build/en/reference/api-reference/#astrorequests

// Request App data from API
const appListing = await DoesItAPI.game( pathSlug ).get()

const listingDetails = new ListingDetails( appListing )

const headOptions = listingDetails.headOptions


if ( isBenchmarkPage ) {

    // Set the page title
    headOptions.title = `${ listingDetails.api.name } Benchmarks for Apple Silicon - Does It ARM`

    const { preloads } = getVideoImages( listingDetails.initialVideo )

    // Add image preloads for video thumbnail
    headOptions.link = [
        ...headOptions.link,
        ...preloads
    ]

}

---
<Layout
    headOptions={ headOptions }
>
    { isBenchmarkPage ? (
        <VideoListing
            listing={ appListing }
        />
    ) : (
         <Listing
            listing={ appListing }
        />
    )}

</Layout>
