diff --git a/src/controllers/api/statuses.ts b/src/controllers/api/statuses.ts index 58526cb..d1df002 100644 --- a/src/controllers/api/statuses.ts +++ b/src/controllers/api/statuses.ts @@ -1,5 +1,7 @@ import { NostrEvent, NSchema as n } from '@nostrify/nostrify'; import ISO6391 from 'iso-639-1'; +import 'linkify-plugin-hashtag'; +import linkify from 'linkifyjs'; import { nip19 } from 'nostr-tools'; import { z } from 'zod'; @@ -140,8 +142,13 @@ const createStatusController: AppController = async (c) => { tags.push(['p', pubkey]); } - for (const match of content.matchAll(/#(\w+)/g)) { - tags.push(['t', match[1]]); + for (const link of linkify.find(data.status ?? '')) { + if (link.type === 'url' && link.href.startsWith('https://')) { + tags.push(['r', link.href]); + } + if (link.type === 'hashtag') { + tags.push(['t', link.href.replace(/^#/, '').toLowerCase()]); + } } const mediaUrls: string[] = media