feat: expandCrossbellNote

This commit is contained in:
DIYgod 2023-04-12 01:49:34 +01:00
parent 5c75096893
commit 9a579a05ab
No known key found for this signature in database
2 changed files with 63 additions and 61 deletions

View File

@ -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
}

View File

@ -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)
}),
)