import { MainLayout } from "@components/layouts/main.tsx"; import { GenericResource, ReviewResource } from "@lib/marka/schema.ts"; import { ResourceCard } from "@components/Card.tsx"; import { Grid } from "@components/Grid.tsx"; import { IconArrowLeft } from "@components/icons.tsx"; import { KMenu } from "@islands/KMenu.tsx"; import { RedirectSearchHandler } from "@islands/Search.tsx"; import { PageProps } from "$fresh/server.ts"; import { listResources } from "@lib/marka/index.ts"; import { parseResourceUrl, searchResource } from "@lib/search.ts"; import { parseRating } from "@lib/helpers.ts"; function sortOptional(a: number | string = 0, b: number | string = 0) { return (parseRating(a) > parseRating(b)) ? 1 : -1; } export default async function MovieIndex( props: PageProps< { movies: ReviewResource[] | null; searchResults: GenericResource[] } >, ) { const allMovies = await listResources("movies"); const searchParams = parseResourceUrl(props.url); const searchResults = searchParams && await searchResource({ ...searchParams, types: ["movies"] }); const movies = allMovies.sort((a, b) => sortOptional( a.content.reviewRating?.ratingValue, b.content.reviewRating?.ratingValue, ) ); return (
Back

🍿 Movies

{movies?.map((doc, i) => { return ; })}
); }