Fix: getAllTags bug when there are more than 15 tags

This commit fixes a bug in the getAllTags function that caused it to not retrieve all tags when there were more than 15 tags. This bug resulted in 404 errors on tag slug pages.

fix #99
This commit is contained in:
Jungley Yeh 2024-03-10 12:40:47 +08:00
parent 10bcac444b
commit 15dc9b0719
4 changed files with 21 additions and 18 deletions

View File

@ -1,13 +1,13 @@
---
import type { InferGetStaticParamsType, InferGetStaticPropsType } from 'astro';
import DefaultPageLayout from "../../layouts/default.astro";
import PostPreview from "../../components/PostPreview.astro";
import { getAllPosts, getAllTags, getSettings, invariant } from "@matthiesenxyz/astro-ghostcms/api";
import type { InferGetStaticParamsType, InferGetStaticPropsType } from 'astro';
import PostPreview from "../../components/PostPreview.astro";
import DefaultPageLayout from "../../layouts/default.astro";
import { getGhostImgPath } from "../../utils";
export async function getStaticPaths() {
const posts = await getAllPosts();
const { tags } = await getAllTags();
const tags = await getAllTags();
const settings = await getSettings();
return tags.map((tag) => {

View File

@ -1,13 +1,13 @@
---
import DefaultPageLayout from "../layouts/default.astro";
import { getAllTags, getSettings, invariant } from "@matthiesenxyz/astro-ghostcms/api";
import TagCard from "../components/TagCard.astro";
import { getSettings, getAllTags, invariant } from "@matthiesenxyz/astro-ghostcms/api";
import DefaultPageLayout from "../layouts/default.astro";
let title = "All Tags";
let description = "All the tags used so far...";
const { tags } = await getAllTags();
const tags = await getAllTags();
const settings = await getSettings();
invariant(settings, "Settings not found");
---

View File

@ -1,5 +1,5 @@
import { TSGhostContentAPI } from "@ts-ghost/content-api";
import type { Page, Post } from "../schemas/api";
import type { Page, Post, Tag } from "../schemas/api";
// LOAD ENVIRONMENT VARIABLES
import { loadEnv } from "vite";
@ -94,17 +94,20 @@ export const getSettings = async () => {
};
export const getAllTags = async () => {
const results = await api.tags
.browse()
const tags: Tag[] = [];
let cursor = await api.tags
.browse({
limit: 'all'
})
.include({ "count.posts": true })
.fetch();
if (!results.success) {
throw new Error(results.errors.map((e) => e.message).join(", "));
.paginate();
if (cursor.current.success) tags.push(...cursor.current.data);
while (cursor.next) {
cursor = await cursor.next.paginate();
if (cursor.current.success) tags.push(...cursor.current.data);
}
return {
tags: results.data,
meta: results.meta,
};
return tags;
};
export const getFeaturedPosts = async () => {

View File

@ -16,7 +16,7 @@ import satoriOG from "../../satori";
export const getStaticPaths: GetStaticPaths = async () => {
const result: GetStaticPathsItem[] = [];
const posts = await getAllPosts();
const { tags } = await getAllTags();
const tags = await getAllTags();
const settings = await getSettings();
invariant(settings, "Settings are required");