Files
bsky-social-app/src/lib/strings/rich-text-helpers.ts
Mary abac959d03 Resolve facets on list descriptions (#2485)
* feat: add strict/loose link mapping

* feat: resolve facets on list description
2024-01-23 10:39:13 -08:00

30 lines
690 B
TypeScript

import {AppBskyRichtextFacet, RichText} from '@atproto/api'
import {linkRequiresWarning} from './url-helpers'
export function richTextToString(rt: RichText, loose: boolean): string {
const {text, facets} = rt
if (!facets?.length) {
return text
}
let result = ''
for (const segment of rt.segments()) {
const link = segment.link
if (link && AppBskyRichtextFacet.validateLink(link).success) {
const href = link.uri
const text = segment.text
const requiresWarning = linkRequiresWarning(href, text)
result += !requiresWarning ? href : loose ? `[${text}](${href})` : text
} else {
result += segment.text
}
}
return result
}