From 55ccd419e2ad7228140b3a9f1557e4e26d5d1b5a Mon Sep 17 00:00:00 2001 From: tonyrewin Date: Wed, 14 Sep 2022 18:44:06 +0300 Subject: [PATCH] ugly astro subrouter --- src/components/Views/Search.tsx | 2 +- src/pages/[...slug].astro | 1 + src/pages/author/[slug]/index.astro | 4 ++-- src/pages/authors.astro | 6 ++++-- src/pages/feed/index.astro | 4 ++-- src/pages/index.astro | 4 ++-- src/pages/topics.astro | 6 ++++-- src/stores/router.ts | 1 - 8 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/components/Views/Search.tsx b/src/components/Views/Search.tsx index 2a26e160..5f0b7fa1 100644 --- a/src/components/Views/Search.tsx +++ b/src/components/Views/Search.tsx @@ -21,7 +21,7 @@ export const SearchPage = (props: Props) => { setQuery(ev.target.value) } - const handleSubmit = (ev) => { + const handleSubmit = (_ev) => { // TODO page // TODO sort loadSearchResults({ query: getQuery() }) diff --git a/src/pages/[...slug].astro b/src/pages/[...slug].astro index c4caa652..3dc9598e 100644 --- a/src/pages/[...slug].astro +++ b/src/pages/[...slug].astro @@ -2,6 +2,7 @@ import { ArticlePage } from '../components/Views/ArticlePage' import Zine from '../layouts/zine.astro' import { apiClient } from '../utils/apiClient' + const slug = Astro.params.slug as string if (slug.includes('/') || slug.includes('.map')) { diff --git a/src/pages/author/[slug]/index.astro b/src/pages/author/[slug]/index.astro index 0361e84d..225eb2f2 100644 --- a/src/pages/author/[slug]/index.astro +++ b/src/pages/author/[slug]/index.astro @@ -3,8 +3,8 @@ import { AuthorPage } from '../../../components/Views/Author' import Zine from '../../../layouts/zine.astro' import { apiClient } from '../../../utils/apiClient' -const limit = parseInt(Astro.params?.limit as string, 10) || 50 -const offset = parseInt(Astro.params?.offset as string, 10) || 0 +const limit = 50 +const offset = 0 const slug = Astro.params.slug.toString() const articles = await apiClient.getArticlesForAuthors({ authorSlugs: [slug], offset, limit }) const author = articles[0].authors.find((a) => a.slug === slug) diff --git a/src/pages/authors.astro b/src/pages/authors.astro index 92c06d95..7893938a 100644 --- a/src/pages/authors.astro +++ b/src/pages/authors.astro @@ -2,9 +2,11 @@ import { AllAuthorsPage } from '../components/Views/AllAuthors' import Zine from '../layouts/zine.astro' import { apiClient } from '../utils/apiClient' +import { byCreated, sortBy } from '../utils/sortby' -const authors = await apiClient.getAllAuthors() - +const { by } = Object.fromEntries(Astro.url.searchParams.entries()) +let authors = await apiClient.getAllAuthors() +authors = sortBy(authors, by || byCreated) Astro.response.headers.set('Cache-Control', 's-maxage=1, stale-while-revalidate') --- diff --git a/src/pages/feed/index.astro b/src/pages/feed/index.astro index e47cf8b0..8e03da59 100644 --- a/src/pages/feed/index.astro +++ b/src/pages/feed/index.astro @@ -3,8 +3,8 @@ import { FeedPage } from '../../components/Views/Feed' import Zine from '../../layouts/zine.astro' import { apiClient } from '../../utils/apiClient' -const limit = parseInt(Astro.params?.limit as string, 10) || 50 -const offset = parseInt(Astro.params?.offset as string, 10) || 0 +const limit = 50 +const offset = 0 const recentArticles = await apiClient.getRecentArticles({ limit, offset }) const shoutSlugs = recentArticles.map((s) => s.slug) const reactions = await apiClient.getReactionsForShouts({ shoutSlugs }) diff --git a/src/pages/index.astro b/src/pages/index.astro index 9c5e0231..9f54076b 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -3,8 +3,8 @@ import { HomePage } from '../components/Views/Home' import Zine from '../layouts/zine.astro' import { apiClient } from '../utils/apiClient' -const limit = parseInt(Astro.params?.limit as string, 10) || 50 -const offset = parseInt(Astro.params?.offset as string, 10) || 0 +const limit = 50 +const offset = 0 const randomTopics = await apiClient.getRandomTopics() const recentPublished = await apiClient.getRecentPublishedArticles({ limit, offset }) const topMonth = await apiClient.getTopMonthArticles() diff --git a/src/pages/topics.astro b/src/pages/topics.astro index 7418b3fa..1a5f8ad4 100644 --- a/src/pages/topics.astro +++ b/src/pages/topics.astro @@ -2,9 +2,11 @@ import { AllTopicsPage } from '../components/Views/AllTopics' import Zine from '../layouts/zine.astro' import { apiClient } from '../utils/apiClient' +import { sortBy } from '../utils/sortby' -const topics = await apiClient.getAllTopics() - +const { by } = Object.fromEntries(Astro.url.searchParams.entries()) +let topics = await apiClient.getAllTopics() +topics = sortBy(topics, by || 'shouts') Astro.response.headers.set('Cache-Control', 's-maxage=1, stale-while-revalidate') --- diff --git a/src/stores/router.ts b/src/stores/router.ts index 251f6bba..de029176 100644 --- a/src/stores/router.ts +++ b/src/stores/router.ts @@ -1,5 +1,4 @@ import { createRouter, createSearchParams } from '@nanostores/router' -import { atom, computed, onMount } from 'nanostores' import { createEffect } from 'solid-js' import { isServer } from 'solid-js/web'