feat: expandCrossbellNote
This commit is contained in:
parent
5c75096893
commit
9a579a05ab
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}),
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue