Merge pull request #4308 from vitorpamplona/claude/keen-galileo-x783ag

Fix possessive @mentions and prevent p-tags in NIP-17 DMs
This commit is contained in:
Vitor Pamplona
2026-10-02 10:13:23 -04:00
committed by GitHub
2 changed files with 18 additions and 1 deletions
@@ -209,4 +209,15 @@ class NewMessageTaggerKeyParseTest {
assertTrue(tagger.message.startsWith("hi nostr:nprofile1"))
}
@Test
fun possessiveAtMentionBecomesNostrUri() =
runBlocking {
val npub = "npub19ma2w9dmk3kat0nt0k5dwuqzvmg3va9ezwup0zkakhpwv0vcwvcsg8axkl"
val tagger = NewMessageTagger(message = "@$npub's ERP screens look good", dao = dao)
tagger.run()
val nprofile = tagger.pTags!!.single().toNProfile()
assertEquals("nostr:$nprofile's ERP screens look good", tagger.message)
}
}
@@ -603,7 +603,13 @@ class ChatNewMessageViewModel :
) {
val room = room.value ?: return
val messageText = message.text.toString()
// Rewrites typed `@npub…`/`note1…` references into `nostr:` URIs. Only the rewritten text is
// used: the tagger's pTags must NOT reach the event, since a NIP-17 room is defined by its
// p-tags — adding a mentioned user would send the message to a different conversation.
val tagger = NewMessageTagger(message.text.toString(), null, null, accountViewModel)
tagger.run()
val messageText = tagger.message
val urls = findURLs(messageText)
val usedAttachments = iMetaAttachments.filterIsIn(urls.toSet())
val emojis = accountViewModel.account.emoji.findEmojiTags(messageText)