import { type RouteDefinition, type RouteSectionProps, createAsync, useSearchParams } from '@solidjs/router' import { Suspense, createEffect, createSignal, on } from 'solid-js' import { Topic, TopicStat } from '~/graphql/schema/core.gen' import { loadTopics } from '~/lib/api' import { byTopicStatDesc } from '~/utils/sortby' import { AllTopics } from '../components/Views/AllTopics' import { Loading } from '../components/_shared/Loading' import { PageLayout } from '../components/_shared/PageLayout' import { useLocalize } from '../context/localize' import { ReactionsProvider } from '../context/reactions' const fetchData = async () => { const topicsFetcher = loadTopics() return await topicsFetcher() } export const route = { load: loadTopics } satisfies RouteDefinition export default function HomePage(props: RouteSectionProps<{ topics: Topic[] }>) { const { t } = useLocalize() const topics = createAsync(async () => props.data.topics || (await fetchData()) || []) const [topicsSort, setTopicsSort] = createSignal('shouts') const [searchParams] = useSearchParams<{ by?: string }>() createEffect(on(() => searchParams?.by || 'shouts', setTopicsSort)) return ( }> ) }