fix: html content in feed

This commit is contained in:
DIYgod 2023-05-17 00:41:37 +01:00
parent 46969f85cb
commit 22b0d2d5e6
No known key found for this signature in database
8 changed files with 75 additions and 21 deletions

View File

@ -10,6 +10,8 @@ export async function GET(request: Request) {
const feed = await getFeed({
type: "hot",
daysInterval: parseInt(searchParams.get("interval") || "0"),
useHTML: true,
limit: 10,
})
const data = {

View File

@ -7,6 +7,8 @@ import { getFeed } from "~/models/home.model"
export async function GET(request: Request) {
const feed = await getFeed({
type: "latest",
useHTML: true,
limit: 10,
})
const data = {

View File

@ -21,6 +21,7 @@ export async function GET(
type: "post",
visibility: PageVisibilityEnum.Published,
keepBody: true,
useHTML: true,
})
const hasAudio = pages.list?.find((page) => page.metadata?.content?.audio)
@ -47,7 +48,7 @@ export async function GET(
id: page.characterId + "-" + page.noteId,
title: page.metadata?.content?.title,
summary: page.metadata?.content?.summary,
content_html: page.metadata?.content?.content,
content_html: page.metadata?.content?.contentHTML,
url: `${SITE_URL}/api/redirection?characterId=${page.characterId}&noteId=${page.noteId}`,
image: page.metadata?.content?.cover,
date_published: page.metadata?.content?.date_published,

View File

@ -7,12 +7,19 @@ import { ExpandedCharacter, ExpandedNote } from "~/lib/types"
import { getNoteSlug } from "./helpers"
export const expandCrossbellNote = async (
note: NoteEntity,
useStat?: boolean,
useScore?: boolean,
keyword?: string,
) => {
export const expandCrossbellNote = async ({
note,
useStat,
useScore,
keyword,
useHTML,
}: {
note: NoteEntity
useStat?: boolean
useScore?: boolean
keyword?: string
useHTML?: boolean
}) => {
const expandedNote: ExpandedNote = Object.assign(
{
metadata: {
@ -45,6 +52,10 @@ export const expandCrossbellNote = async (
expandedNote.metadata.content.cover = rendered.cover
expandedNote.metadata.content.audio = rendered.audio
expandedNote.metadata.content.frontMatter = rendered.frontMatter
if (useHTML) {
expandedNote.metadata.content.contentHTML = rendered.contentHTML
}
}
expandedNote.metadata.content.slug = getNoteSlug(expandedNote)
expandedNote.metadata.content.date_published =

View File

@ -15,6 +15,7 @@ export const parsePost = (post: ExpandedNote, withTwitter?: boolean) => {
withTwitter && twitter ? ` by @${twitter}` : ""
}`,
summary: post.metadata?.content?.summary,
content_html: post.metadata?.content?.contentHTML,
url: `${SITE_URL}/api/redirection?characterId=${post.characterId}&noteId=${post.noteId}`,
image: post.metadata?.content?.cover,
date_published: post.createdAt,

View File

@ -86,6 +86,7 @@ export type ExpandedNote = NoteEntity & {
number?: number
reason?: string
}
contentHTML?: string
}
}
stat?: {

View File

@ -27,6 +27,7 @@ export async function getFeed({
searchKeyword,
searchType,
tag,
useHTML,
}: {
type?: FeedType
cursor?: string
@ -37,6 +38,7 @@ export async function getFeed({
searchKeyword?: string
searchType?: SearchType
tag?: string
useHTML?: boolean
}) {
if (type === "search" && !searchKeyword) {
type = "latest"
@ -57,7 +59,12 @@ export async function getFeed({
const list = await Promise.all(
result.list.map(async (page: any) => {
const expand = await expandCrossbellNote(page, false, true)
const expand = await expandCrossbellNote({
note: page,
useStat: false,
useScore: true,
useHTML,
})
delete expand.metadata?.content.content
return expand
}),
@ -87,7 +94,10 @@ export async function getFeed({
const list = await Promise.all(
result.list.map(async (page: any) => {
const expand = await expandCrossbellNote(page)
const expand = await expandCrossbellNote({
note: page,
useHTML,
})
delete expand.metadata?.content.content
return expand
}),
@ -155,7 +165,10 @@ export async function getFeed({
const list = await Promise.all(
result?.data?.notes.map(async (page: any) => {
const expand = await expandCrossbellNote(page)
const expand = await expandCrossbellNote({
note: page,
useHTML,
})
delete expand.metadata?.content.content
return expand
}),
@ -221,7 +234,10 @@ export async function getFeed({
page.stat.viewDetailCount / Math.max(Math.log10(secondAgo), 1)
}
const expand = await expandCrossbellNote(page)
const expand = await expandCrossbellNote({
note: page,
useHTML,
})
delete expand.metadata?.content.content
return expand
}),
@ -255,12 +271,13 @@ export async function getFeed({
const list = await Promise.all(
result.list.map(async (page: any) => {
const expand = await expandCrossbellNote(
page,
false,
false,
searchKeyword,
)
const expand = await expandCrossbellNote({
note: page,
useStat: false,
useScore: false,
keyword: searchKeyword,
useHTML,
})
delete expand.metadata?.content.content
return expand
}),
@ -295,7 +312,12 @@ export async function getFeed({
const list = await Promise.all(
result.list.map(async (page: any) => {
const expand = await expandCrossbellNote(page, false, true)
const expand = await expandCrossbellNote({
note: page,
useStat: false,
useScore: true,
useHTML,
})
delete expand.metadata?.content.content
return expand
}),

View File

@ -220,6 +220,7 @@ export async function getPagesBySite(input: {
cursor?: string
tags?: string[]
useStat?: boolean
useHTML?: boolean
keepBody?: boolean
handle?: string // In order to be compatible with old drafts
}) {
@ -244,7 +245,12 @@ export async function getPagesBySite(input: {
const list = await Promise.all(
notes?.list.map(async (note) => {
const expanded = await expandCrossbellNote(note, input.useStat)
const expanded = await expandCrossbellNote({
note,
useStat: input.useStat,
useHTML: input.useHTML,
useScore: false,
})
if (!input.keepBody) {
delete expanded.metadata?.content?.content
}
@ -336,7 +342,12 @@ export async function getSearchPagesBySite(input: {
const list: ExpandedNote[] = await Promise.all(
result.list.map(async (page: any) => {
return await expandCrossbellNote(page, true, false, input.keyword)
return await expandCrossbellNote({
note: page,
useStat: true,
useScore: false,
keyword: input.keyword,
})
}),
)
@ -390,7 +401,10 @@ export async function getPage<TRender extends boolean = false>(input: {
let expandedNote: ExpandedNote | undefined
if (page) {
expandedNote = await expandCrossbellNote(page, input.useStat)
expandedNote = await expandCrossbellNote({
note: page,
useStat: input.useStat,
})
}
if (localPage) {