doesitarm/src/pages/app/[...appPath].astro
2022-05-25 18:28:34 -05:00

76 lines
1.8 KiB
Text

---
// Full Astro Component Syntax:
// https://docs.astro.build/core-concepts/astro-components/
import { DoesItAPI } from '~/helpers/api/client.js'
import { catchRedirectResponse } 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
}
// 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.app( 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>