From 9f3b746f72bc7895d3f659a7201969349f5e5298 Mon Sep 17 00:00:00 2001 From: João Augusto Costa Branco Marado Torres Date: Sun, 27 Jul 2025 10:58:32 -0300 Subject: refactor: cleaner code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: João Augusto Costa Branco Marado Torres --- src/lib/collection/helpers.ts | 162 ------------------------------------------ 1 file changed, 162 deletions(-) (limited to 'src/lib/collection') diff --git a/src/lib/collection/helpers.ts b/src/lib/collection/helpers.ts index 0bfd3c8..f65e7c0 100644 --- a/src/lib/collection/helpers.ts +++ b/src/lib/collection/helpers.ts @@ -13,11 +13,6 @@ import { createKeyFromArmor } from "../pgp/create.ts"; import { getUserIDsFromKey } from "../pgp/user.ts"; import type { UserIDPacket } from "openpgp"; import { getCollection } from "astro:content"; -import { - GetStaticPaths, - GetStaticPathsItem, - GetStaticPathsResult, -} from "astro"; import { getEntry } from "astro:content"; export function getLastUpdate({ data }: CollectionEntry<"blog">): Date { @@ -123,160 +118,3 @@ export async function getTranslationOriginal( } return await getEntry(translation.data.translationOf); } - -export const datePaths = (async (): Promise< - { - params: { date?: string }; - props: { - posts: OriginalEntry[]; - next?: string; - previous?: string; - years: number[]; - months: number[]; - days?: number[]; - }; - }[] -> => { - const posts = await fromPosts(isEntry, identity); - - const archive = { - years: new Set(), - monthsByYear: new Map>(), - daysByMonth: new Map>(), - postsByDate: new Map(), - sortedDates: [] as string[], - }; - - const getYMD = (date: Date) => { - const y = date.getFullYear(); - const m = date.getMonth() + 1; - const d = date.getDate(); - return { y, m, d }; - }; - - for (const post of posts) { - const { y, m, d } = getYMD(post.data.dateCreated); - - archive.years.add(y); - - const months = archive.monthsByYear.get(y.toString()); - if (months === undefined) { - archive.monthsByYear.set(y.toString(), new Set([m])); - } else { - months.add(m); - } - - const ym = `${y}/${String(m).padStart(2, "0")}`; - const days = archive.daysByMonth.get(ym); - if (days === undefined) { - archive.daysByMonth.set(ym, new Set([d])); - } else { - days.add(d); - } - - const ymd = `${ym}/${String(d).padStart(2, "0")}`; - const posts = archive.postsByDate.get(ymd); - if (posts === undefined) { - archive.postsByDate.set(ymd, [post]); - } else { - posts.push(post); - } - } - - archive.sortedDates = Array.from(archive.postsByDate.keys()).sort(); - - const paths: { - params: { date?: string }; - props: { - posts: OriginalEntry[]; - next?: string; - previous?: string; - years: number[]; - months: number[]; - days?: number[]; - }; - }[] = [] satisfies GetStaticPathsItem[]; - - const sortedYears = Array.from(archive.years).sort(); - - const lastYear = Math.max(...sortedYears.map(Number)); - paths.push({ - params: { date: undefined }, - props: { - posts: posts.filter((p) => p.data.dateCreated.getFullYear() === lastYear), - next: undefined, - previous: sortedYears?.[sortedYears.length - 2]?.toString(), - years: sortedYears, - months: Array.from(archive.monthsByYear.get(lastYear.toString()) ?? []), - }, - }); - - for (const y of sortedYears) { - const yearPosts = posts.filter((p) => - p.data.dateCreated.getFullYear() === Number(y) - ); - const idx = sortedYears.indexOf(y); - paths.push({ - params: { date: y.toString() }, - props: { - posts: yearPosts, - next: sortedYears?.[idx + 1]?.toString(), - previous: sortedYears?.[idx - 1]?.toString(), - years: sortedYears, - months: Array.from(archive.monthsByYear.get(y.toString()) ?? []), - }, - }); - } - - const allMonths = Array.from(archive.monthsByYear.entries()) - .flatMap(([year, mset]) => - Array.from(mset).map((m) => `${year}/${String(m).padStart(2, "0")}`) - ) - .sort(); - - for (const [y, months] of archive.monthsByYear) { - const sortedMonths = Array.from(months).sort(); - for (const m of sortedMonths) { - const monthPosts = posts.filter((p) => { - const d = p.data.dateCreated; - return ( - d.getFullYear() === Number(y) && - d.getMonth() + 1 === m - ); - }); - - const ym = `${y}/${String(m).padStart(2, "0")}`; - const idx = allMonths.indexOf(ym); - - paths.push({ - params: { date: ym }, - props: { - posts: monthPosts, - next: allMonths?.[idx + 1], - previous: allMonths?.[idx - 1], - years: sortedYears, - months: Array.from(months).sort(), - days: Array.from(archive.daysByMonth.get(ym) ?? []).sort(), - }, - }); - } - } - - for (let i = 0; i < archive.sortedDates.length; i++) { - const ymd = archive.sortedDates[i]; - const [y, m] = ymd.split("/"); - paths.push({ - params: { date: ymd }, - props: { - posts: archive.postsByDate.get(ymd) ?? [], - next: archive.sortedDates?.[i + 1], - previous: archive.sortedDates?.[i - 1], - years: sortedYears, - months: Array.from(archive.monthsByYear.get(y) ?? []).sort(), - days: Array.from(archive.daysByMonth.get(`${y}/${m}`) ?? []).sort(), - }, - }); - } - - return paths; -}) satisfies GetStaticPaths; -- cgit v1.2.3