1- import { type LoaderFunctionArgs , type MetaFunction } from "react-router" ;
2- import { useLoaderData } from "react-router" ;
31import { type Route } from "./+types/route" ;
42import { ResourceTag } from "~/ui/resources" ;
53import { getResourcesForRequest } from "./data.server" ;
@@ -9,24 +7,26 @@ import {
97 ResourceCards ,
108 ResourceCategoryTabs ,
119} from "./ui" ;
10+ import type { Category } from "~/lib/resources.server" ;
1211
13- export const loader = async ( { request } : LoaderFunctionArgs ) => {
14- let requestUrl = new URL ( request . url ) ;
15- let siteUrl = requestUrl . protocol + "//" + requestUrl . host ;
12+ export const loader = async ( { request } : Route . LoaderArgs ) => {
1613 let resource = await getResourcesForRequest ( request ) ;
1714
18- return { ...resource , siteUrl } ;
15+ return {
16+ selectedCategory : "all" as Category ,
17+ selectedTags : [ ] ,
18+ ...resource ,
19+ } ;
1920} ;
2021
2122export async function clientLoader ( {
2223 request,
2324 serverLoader,
2425} : Route . ClientLoaderArgs ) {
2526 let { resources } = await serverLoader ( ) ;
26- let url = new URL ( request . url ) ;
2727 // get search params: category and tags
2828 let searchParams = new URL ( request . url ) . searchParams ;
29- let selectedCategory = searchParams . get ( "category" ) ;
29+ let selectedCategory = searchParams . get ( "category" ) as Category ;
3030 let selectedTagsSet = new Set ( searchParams . getAll ( "tag" ) ) ;
3131 let tags = new Set ( resources . flatMap ( ( { tags } ) => tags ) ) ;
3232
@@ -74,8 +74,8 @@ export async function clientLoader({
7474
7575clientLoader . hydrate = true ;
7676
77- export const meta : MetaFunction < typeof loader > = ( args ) => {
78- let { siteUrl } = args . data || { } ;
77+ export const meta = ( args : Route . MetaArgs ) => {
78+ let { siteUrl } = args . matches [ 0 ] . loaderData ;
7979 let title = "Remix Resources" ;
8080 let image = siteUrl ? `${ siteUrl } /img/og.1.jpg` : null ;
8181 let description = "Remix Resources made by the community, for the community" ;
@@ -96,9 +96,9 @@ export const meta: MetaFunction<typeof loader> = (args) => {
9696 ] ;
9797} ;
9898
99- export default function Resources ( ) {
99+ export default function Resources ( { loaderData } : Route . ComponentProps ) {
100100 let { featuredResource, selectedCategory, selectedTags, resources } =
101- useLoaderData < typeof loader > ( ) ;
101+ loaderData ;
102102
103103 return (
104104 < main className = "container flex flex-1 flex-col items-center md:mt-8" >
0 commit comments