mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-18 06:44:46 -07:00
76 lines
1.8 KiB
Text
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>
|