From 9a579a05ab22895cef14add3d26b1535c4ce96eb Mon Sep 17 00:00:00 2001 From: DIYgod Date: Wed, 12 Apr 2023 01:49:34 +0100 Subject: [PATCH] feat: expandCrossbellNote --- src/lib/expand-unit.ts | 58 ++++++++++++++++++++++++++++++++++- src/models/home.model.ts | 66 ++++------------------------------------ 2 files changed, 63 insertions(+), 61 deletions(-) diff --git a/src/lib/expand-unit.ts b/src/lib/expand-unit.ts index b98a7cc5..33fdfa84 100644 --- a/src/lib/expand-unit.ts +++ b/src/lib/expand-unit.ts @@ -1,6 +1,9 @@ -import { PageVisibilityEnum, Notes, Note, Profile } from "~/lib/types" +import { Note, Profile } from "~/lib/types" import { nanoid } from "nanoid" import { toGateway } from "~/lib/ipfs-parser" +import { SITE_URL, SCORE_API_DOMAIN } from "~/lib/env" +import { toCid } from "~/lib/ipfs-parser" +import { ExpandedNote } from "~/lib/types" export const expandUnidataNote = async (page: Note, useStat?: boolean) => { if (page.body?.content && page.body?.mime_type === "text/markdown") { @@ -84,3 +87,56 @@ export const expandUnidataProfile = (site: Profile) => { return site } + +export const expandCrossbellNote = async ( + page: ExpandedNote, + useStat?: boolean, + useScore?: boolean, +) => { + if (page.metadata?.content) { + if (page.metadata?.content?.content) { + const { renderPageContent } = await import("~/markdown") + const rendered = renderPageContent(page.metadata.content.content, true) + if (!page.metadata.content.summary) { + page.metadata.content.summary = rendered.excerpt + } + page.metadata.content.cover = rendered.cover + if (page.metadata) { + page.metadata.content.frontMatter = rendered.frontMatter + } + } + page.metadata.content.slug = encodeURIComponent( + page.metadata.content.attributes?.find( + (a) => a.trait_type === "xlog_slug", + )?.value || "", + ) + + if (useStat) { + const stat = await ( + await fetch( + `https://indexer.crossbell.io/v1/stat/notes/${page.characterId}/${page.noteId}`, + ) + ).json() + page.metadata.content.views = stat.viewDetailCount + } + + if (useScore) { + try { + const score = ( + await ( + await fetch( + `${SCORE_API_DOMAIN || SITE_URL}/api/score?cid=${toCid( + page.metadata?.uri || "", + )}`, + ) + ).json() + ).data + page.metadata.content.score = score + } catch (e) { + // do nothing + } + } + } + + return page +} diff --git a/src/models/home.model.ts b/src/models/home.model.ts index b877b083..d645d1d4 100644 --- a/src/models/home.model.ts +++ b/src/models/home.model.ts @@ -1,62 +1,8 @@ import { ExpandedNote } from "~/lib/types" import { indexer } from "@crossbell/indexer" -import { toCid } from "~/lib/ipfs-parser" import { createClient, cacheExchange, fetchExchange } from "@urql/core" -import { SITE_URL, SCORE_API_DOMAIN } from "~/lib/env" import dayjs from "dayjs" - -const expandPage = async ( - page: ExpandedNote, - useStat?: boolean, - useScore?: boolean, -) => { - if (page.metadata?.content) { - if (page.metadata?.content?.content) { - const { renderPageContent } = await import("~/markdown") - const rendered = renderPageContent(page.metadata.content.content, true) - if (!page.metadata.content.summary) { - page.metadata.content.summary = rendered.excerpt - } - page.metadata.content.cover = rendered.cover - if (page.metadata) { - page.metadata.content.frontMatter = rendered.frontMatter - } - } - page.metadata.content.slug = encodeURIComponent( - page.metadata.content.attributes?.find( - (a) => a.trait_type === "xlog_slug", - )?.value || "", - ) - - if (useStat) { - const stat = await ( - await fetch( - `https://indexer.crossbell.io/v1/stat/notes/${page.characterId}/${page.noteId}`, - ) - ).json() - page.metadata.content.views = stat.viewDetailCount - } - - if (useScore) { - try { - const score = ( - await ( - await fetch( - `${SCORE_API_DOMAIN || SITE_URL}/api/score?cid=${toCid( - page.metadata?.uri || "", - )}`, - ) - ).json() - ).data - page.metadata.content.score = score - } catch (e) { - // do nothing - } - } - } - - return page -} +import { expandCrossbellNote } from "~/lib/expand-unit" export type FeedType = "latest" | "following" | "topic" | "hot" | "search" @@ -92,7 +38,7 @@ export async function getFeed({ const list = await Promise.all( result.list.map(async (page: any) => { - return await expandPage(page, false, true) + return await expandCrossbellNote(page, false, true) }), ) @@ -120,7 +66,7 @@ export async function getFeed({ const list = await Promise.all( result.list.map(async (page: any) => { - return await expandPage(page) + return await expandCrossbellNote(page) }), ) @@ -186,7 +132,7 @@ export async function getFeed({ const list = await Promise.all( result?.data?.notes.map(async (page: any) => { - return await expandPage(page) + return await expandCrossbellNote(page) }), ) @@ -250,7 +196,7 @@ export async function getFeed({ page.stat.viewDetailCount / Math.max(Math.log10(secondAgo), 1) } - return await expandPage(page) + return await expandCrossbellNote(page) }), ) @@ -280,7 +226,7 @@ export async function getFeed({ const list = await Promise.all( result.list.map(async (page: any) => { - return await expandPage(page) + return await expandCrossbellNote(page) }), )