[🐴] send record via link in text (Record DMs - base PR) (#4227)

* send record via link in text

* re-trim text after removing link
This commit is contained in:
Samuel Newman 2024-05-31 18:41:06 +03:00 committed by GitHub
parent 455937dd0f
commit 8eb3cebb36
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 99 additions and 51 deletions

View file

@ -1,4 +1,4 @@
import {RichText, UnicodeString} from '@atproto/api'
import {AppBskyRichtextFacet, RichText, UnicodeString} from '@atproto/api'
import {toShortUrl} from './url-helpers'
@ -10,9 +10,7 @@ export function shortenLinks(rt: RichText): RichText {
// enumerate the link facets
if (rt.facets) {
for (const facet of rt.facets) {
const isLink = !!facet.features.find(
f => f.$type === 'app.bsky.richtext.facet#link',
)
const isLink = !!facet.features.find(AppBskyRichtextFacet.isLink)
if (!isLink) {
continue
}
@ -33,3 +31,21 @@ export function shortenLinks(rt: RichText): RichText {
}
return rt
}
// filter out any mention facets that didn't map to a user
export function stripInvalidMentions(rt: RichText): RichText {
if (!rt.facets?.length) {
return rt
}
rt = rt.clone()
if (rt.facets) {
rt.facets = rt.facets?.filter(facet => {
const mention = facet.features.find(AppBskyRichtextFacet.isMention)
if (mention && !mention.did) {
return false
}
return true
})
}
return rt
}