Fixes bug that the room changes after citing a user on NIP-17
This commit is contained in:
+4
-4
@@ -44,14 +44,14 @@ import com.vitorpamplona.amethyst.ui.actions.mediaServers.DEFAULT_MEDIA_SERVERS
|
|||||||
import com.vitorpamplona.amethyst.ui.actions.uploads.SelectedMedia
|
import com.vitorpamplona.amethyst.ui.actions.uploads.SelectedMedia
|
||||||
import com.vitorpamplona.amethyst.ui.components.Split
|
import com.vitorpamplona.amethyst.ui.components.Split
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.privateDM.send.upload.ChatFileUploadState
|
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.privateDM.send.upload.ChatFileUploader
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.privateDM.send.upload.ChatFileUploader
|
||||||
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.utils.ChatFileUploadState
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent
|
import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent
|
||||||
import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hashtags
|
import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hashtags
|
||||||
import com.vitorpamplona.quartz.nip01Core.tags.references.references
|
import com.vitorpamplona.quartz.nip01Core.tags.references.references
|
||||||
import com.vitorpamplona.quartz.nip04Dm.messages.PrivateDmEvent
|
import com.vitorpamplona.quartz.nip04Dm.messages.PrivateDmEvent
|
||||||
import com.vitorpamplona.quartz.nip10Notes.content.findHashtags
|
import com.vitorpamplona.quartz.nip10Notes.content.findHashtags
|
||||||
import com.vitorpamplona.quartz.nip10Notes.content.findNostrUris
|
import com.vitorpamplona.quartz.nip10Notes.content.findNostrEventUris
|
||||||
import com.vitorpamplona.quartz.nip10Notes.content.findURLs
|
import com.vitorpamplona.quartz.nip10Notes.content.findURLs
|
||||||
import com.vitorpamplona.quartz.nip14Subject.subject
|
import com.vitorpamplona.quartz.nip14Subject.subject
|
||||||
import com.vitorpamplona.quartz.nip17Dm.base.BaseDMGroupEvent
|
import com.vitorpamplona.quartz.nip17Dm.base.BaseDMGroupEvent
|
||||||
@@ -372,7 +372,7 @@ open class ChatNewMessageViewModel : ViewModel() {
|
|||||||
ChatMessageEvent.build(message, room.users.map { LocalCache.getOrCreateUser(it).toPTag() }) {
|
ChatMessageEvent.build(message, room.users.map { LocalCache.getOrCreateUser(it).toPTag() }) {
|
||||||
hashtags(findHashtags(message))
|
hashtags(findHashtags(message))
|
||||||
references(findURLs(message))
|
references(findURLs(message))
|
||||||
quotes(findNostrUris(message))
|
quotes(findNostrEventUris(message))
|
||||||
|
|
||||||
emojis(emojis)
|
emojis(emojis)
|
||||||
imetas(usedAttachments)
|
imetas(usedAttachments)
|
||||||
@@ -381,7 +381,7 @@ open class ChatNewMessageViewModel : ViewModel() {
|
|||||||
ChatMessageEvent.reply(message, replyHint) {
|
ChatMessageEvent.reply(message, replyHint) {
|
||||||
hashtags(findHashtags(message))
|
hashtags(findHashtags(message))
|
||||||
references(findURLs(message))
|
references(findURLs(message))
|
||||||
quotes(findNostrUris(message))
|
quotes(findNostrEventUris(message))
|
||||||
|
|
||||||
emojis(emojis)
|
emojis(emojis)
|
||||||
imetas(usedAttachments)
|
imetas(usedAttachments)
|
||||||
|
|||||||
@@ -23,3 +23,5 @@ package com.vitorpamplona.quartz.nip10Notes.content
|
|||||||
import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser
|
import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser
|
||||||
|
|
||||||
fun findNostrUris(content: String) = Nip19Parser.parseAll(content)
|
fun findNostrUris(content: String) = Nip19Parser.parseAll(content)
|
||||||
|
|
||||||
|
fun findNostrEventUris(content: String) = Nip19Parser.parseAllEvents(content)
|
||||||
|
|||||||
@@ -53,6 +53,12 @@ object Nip19Parser {
|
|||||||
Pattern.CASE_INSENSITIVE,
|
Pattern.CASE_INSENSITIVE,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val nip19regexEvents: Pattern =
|
||||||
|
Pattern.compile(
|
||||||
|
"(nostr:)?@?(nevent1|naddr1|note1|nrelay1|nembed1)([qpzry9x8gf2tvdw0s3jn54khce6mua7l]+)([\\S]*)",
|
||||||
|
Pattern.CASE_INSENSITIVE,
|
||||||
|
)
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
data class ParseReturn(
|
data class ParseReturn(
|
||||||
val entity: Entity,
|
val entity: Entity,
|
||||||
@@ -130,8 +136,11 @@ object Nip19Parser {
|
|||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
fun parseAll(content: String): List<Entity> {
|
fun parseAll(
|
||||||
val matcher2 = nip19regex.matcher(content)
|
content: String,
|
||||||
|
regex: Pattern,
|
||||||
|
): List<Entity> {
|
||||||
|
val matcher2 = regex.matcher(content)
|
||||||
val returningList = mutableListOf<Entity>()
|
val returningList = mutableListOf<Entity>()
|
||||||
while (matcher2.find()) {
|
while (matcher2.find()) {
|
||||||
val type = matcher2.group(2) // npub1
|
val type = matcher2.group(2) // npub1
|
||||||
@@ -139,7 +148,7 @@ object Nip19Parser {
|
|||||||
val additionalChars = matcher2.group(4) // additional chars
|
val additionalChars = matcher2.group(4) // additional chars
|
||||||
|
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
val parsed = Nip19Parser.parseComponents(type, key, additionalChars)?.entity
|
val parsed = parseComponents(type, key, additionalChars)?.entity
|
||||||
|
|
||||||
if (parsed != null) {
|
if (parsed != null) {
|
||||||
returningList.add(parsed)
|
returningList.add(parsed)
|
||||||
@@ -148,6 +157,10 @@ object Nip19Parser {
|
|||||||
}
|
}
|
||||||
return returningList
|
return returningList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun parseAll(content: String): List<Entity> = parseAll(content, nip19regex)
|
||||||
|
|
||||||
|
fun parseAllEvents(content: String): List<Entity> = parseAll(content, nip19regexEvents)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun decodePublicKey(key: String): ByteArray =
|
fun decodePublicKey(key: String): ByteArray =
|
||||||
|
|||||||
Reference in New Issue
Block a user