From 1cc51c00a70f17f1a18dcdb84a230efee6c4dddd Mon Sep 17 00:00:00 2001 From: tanishqmanuja Date: Wed, 20 Sep 2023 14:49:56 +0530 Subject: [PATCH] refactor: use astro generated CollectionEntry type --- src/components/Card.tsx | 4 ++-- src/components/Search.tsx | 4 ++-- src/content/_schemas.ts | 2 -- src/utils/slugify.ts | 4 ++-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/components/Card.tsx b/src/components/Card.tsx index ca0fe43..9923f5a 100644 --- a/src/components/Card.tsx +++ b/src/components/Card.tsx @@ -1,10 +1,10 @@ import { slugifyStr } from "@utils/slugify"; import Datetime from "./Datetime"; -import type { BlogFrontmatter } from "@content/_schemas"; +import type { CollectionEntry } from "astro:content"; export interface Props { href?: string; - frontmatter: BlogFrontmatter; + frontmatter: CollectionEntry<"blog">["data"]; secHeading?: boolean; } diff --git a/src/components/Search.tsx b/src/components/Search.tsx index fdf9726..1dce51c 100644 --- a/src/components/Search.tsx +++ b/src/components/Search.tsx @@ -2,12 +2,12 @@ import Fuse from "fuse.js"; import { useEffect, useRef, useState, useMemo } from "react"; import Card from "@components/Card"; import slugify from "@utils/slugify"; -import type { BlogFrontmatter } from "@content/_schemas"; +import type { CollectionEntry } from "astro:content"; export type SearchItem = { title: string; description: string; - data: BlogFrontmatter; + data: CollectionEntry<"blog">["data"]; }; interface Props { diff --git a/src/content/_schemas.ts b/src/content/_schemas.ts index 110010c..ce8ec9a 100644 --- a/src/content/_schemas.ts +++ b/src/content/_schemas.ts @@ -14,5 +14,3 @@ export const blogSchema = z canonicalURL: z.string().optional(), }) .strict(); - -export type BlogFrontmatter = z.infer; diff --git a/src/utils/slugify.ts b/src/utils/slugify.ts index 31f212b..167ff8e 100644 --- a/src/utils/slugify.ts +++ b/src/utils/slugify.ts @@ -1,9 +1,9 @@ import { slug as slugger } from "github-slugger"; -import type { BlogFrontmatter } from "@content/_schemas"; +import type { CollectionEntry } from "astro:content"; export const slugifyStr = (str: string) => slugger(str); -const slugify = (post: BlogFrontmatter) => +const slugify = (post: CollectionEntry<"blog">["data"]) => post.postSlug ? slugger(post.postSlug) : slugger(post.title); export const slugifyAll = (arr: string[]) => arr.map(str => slugifyStr(str));