No posts found.
)} {count > 5 ? ( ) : null}import { IPost } from '~/server/db' import Link from 'next/link' import { useRouter } from 'next/router' import { useEffect, useState } from 'react' import PostTeaser from './PostTeaser' const PostQuery = ({ defaults }: { defaults: { posts: IPost[] count: number } }) => { const router = useRouter() const page = parseInt(router.query.page as string) || 1 const makePageUrl = (p: number) => { let pathname = router.pathname .replace(/\/$/, '') .replace(/\d+$/, '') .replace(/\/$/, '') if (pathname !== '/tag' && pathname !== '/blog') { pathname = '/blog' } if (p > 1) { pathname += '/' + p } if (router.query.q) { pathname += `?q=${encodeURIComponent(router.query.q as string)}` } return pathname } const [posts, setPosts] = useState([] as IPost[]) const [count, setCount] = useState(0) const [isLoading, setLoading] = useState(router.asPath.includes('?')) useEffect(() => { const u = new URL(location.href) const q = u.searchParams.get('q') if (q) { const querystrings: string[] = [] for (const [k, v] of Object.entries({ q, page: router.query.page, tag: router.query.tag })) { if (v) { querystrings.push(`${k}=${encodeURIComponent(v as string)}`) } } fetch(`/api/q${querystrings.length ? `?${querystrings.join('&')}` : ''}`) .then((r) => r.json()) .then(({ result, count }) => { setPosts(result) setCount(count) setLoading(false) }) } else { setPosts(defaults.posts) setCount(defaults.count) setLoading(false) } }, [router.query.q, router.query.page, router.query.tag]) const totalPages = Math.ceil(count / 5) return isLoading ? (
No posts found.
)} {count > 5 ? ( ) : null}