From 606c483d0972fafb7871a73660dd80dbfe48c7c8 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 22 Feb 2024 15:40:07 -0500 Subject: [PATCH] Moves Wallet Connect to Quartz --- .../amethyst/LocalPreferences.kt | 4 +- .../vitorpamplona/amethyst/model/Account.kt | 5 +- .../vitorpamplona/amethyst/model/Nip47URI.kt | 25 ---------- .../vitorpamplona/amethyst/ui/MainActivity.kt | 4 +- .../amethyst/ui/note/UpdateZapAmountDialog.kt | 6 +-- .../amethyst/commons/RichTextParser.kt | 12 ++--- .../quartz/encoders/Nip47WalletConnect.kt | 47 ++++++++++--------- .../{Nip54.kt => Nip54InlineMetadata.kt} | 2 +- .../{Nip92.kt => Nip92MediaAttachments.kt} | 2 +- .../quartz/events/ChannelMessageEvent.kt | 4 +- .../quartz/events/ChatMessageEvent.kt | 4 +- .../events/LiveActivitiesChatMessageEvent.kt | 4 +- .../quartz/events/PollNoteEvent.kt | 4 +- .../quartz/events/PrivateDmEvent.kt | 4 +- .../quartz/events/TextNoteEvent.kt | 4 +- 15 files changed, 54 insertions(+), 77 deletions(-) delete mode 100644 app/src/main/java/com/vitorpamplona/amethyst/model/Nip47URI.kt rename app/src/main/java/com/vitorpamplona/amethyst/service/Nip47WalletConnectParser.kt => quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip47WalletConnect.kt (51%) rename quartz/src/main/java/com/vitorpamplona/quartz/encoders/{Nip54.kt => Nip54InlineMetadata.kt} (99%) rename quartz/src/main/java/com/vitorpamplona/quartz/encoders/{Nip92.kt => Nip92MediaAttachments.kt} (98%) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt b/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt index c62bdc4b0..ec87e1d13 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt @@ -33,7 +33,6 @@ import com.vitorpamplona.amethyst.model.DefaultReactions import com.vitorpamplona.amethyst.model.DefaultZapAmounts import com.vitorpamplona.amethyst.model.GLOBAL_FOLLOWS import com.vitorpamplona.amethyst.model.KIND3_FOLLOWS -import com.vitorpamplona.amethyst.model.Nip47URI import com.vitorpamplona.amethyst.model.RelaySetupInfo import com.vitorpamplona.amethyst.model.Settings import com.vitorpamplona.amethyst.model.ThemeType @@ -44,6 +43,7 @@ import com.vitorpamplona.amethyst.service.HttpClientManager import com.vitorpamplona.amethyst.service.Nip96MediaServers import com.vitorpamplona.amethyst.service.checkNotInMainThread import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.encoders.Nip47WalletConnect import com.vitorpamplona.quartz.encoders.hexToByteArray import com.vitorpamplona.quartz.encoders.toHexKey import com.vitorpamplona.quartz.encoders.toNpub @@ -523,7 +523,7 @@ object LocalPreferences { val zapPaymentRequestServer = try { getString(PrefKeys.ZAP_PAYMENT_REQUEST_SERVER, null)?.let { - Event.mapper.readValue(it) + Event.mapper.readValue(it) } } catch (e: Throwable) { if (e is CancellationException) throw e diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index ab1effaf1..7ff939e23 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -44,6 +44,7 @@ import com.vitorpamplona.amethyst.ui.components.BundledUpdate import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.encoders.ATag import com.vitorpamplona.quartz.encoders.HexKey +import com.vitorpamplona.quartz.encoders.Nip47WalletConnect import com.vitorpamplona.quartz.encoders.hexToByteArray import com.vitorpamplona.quartz.encoders.toHexKey import com.vitorpamplona.quartz.events.BookmarkListEvent @@ -172,7 +173,7 @@ class Account( var defaultStoriesFollowList: MutableStateFlow = MutableStateFlow(GLOBAL_FOLLOWS), var defaultNotificationFollowList: MutableStateFlow = MutableStateFlow(GLOBAL_FOLLOWS), var defaultDiscoveryFollowList: MutableStateFlow = MutableStateFlow(GLOBAL_FOLLOWS), - var zapPaymentRequest: Nip47URI? = null, + var zapPaymentRequest: Nip47WalletConnect.Nip47URI? = null, var hideDeleteRequestDialog: Boolean = false, var hideBlockAlertDialog: Boolean = false, var hideNIP24WarningDialog: Boolean = false, @@ -2038,7 +2039,7 @@ class Account( saveable.invalidateData() } - fun changeZapPaymentRequest(newServer: Nip47URI?) { + fun changeZapPaymentRequest(newServer: Nip47WalletConnect.Nip47URI?) { zapPaymentRequest = newServer live.invalidateData() saveable.invalidateData() diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Nip47URI.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Nip47URI.kt deleted file mode 100644 index 6ed687695..000000000 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Nip47URI.kt +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) 2024 Vitor Pamplona - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -package com.vitorpamplona.amethyst.model - -import com.vitorpamplona.quartz.encoders.HexKey - -data class Nip47URI(val pubKeyHex: HexKey, val relayUri: String?, val secret: HexKey?) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt index 92737e29b..d479966d9 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt @@ -52,12 +52,12 @@ import com.vitorpamplona.amethyst.ui.components.DEFAULT_MUTED_SETTING import com.vitorpamplona.amethyst.ui.components.keepPlayingMutex import com.vitorpamplona.amethyst.ui.navigation.Route import com.vitorpamplona.amethyst.ui.navigation.debugState -import com.vitorpamplona.amethyst.ui.note.Nip47WalletConnectParser import com.vitorpamplona.amethyst.ui.screen.AccountScreen import com.vitorpamplona.amethyst.ui.screen.AccountStateViewModel import com.vitorpamplona.amethyst.ui.screen.SharedPreferencesViewModel import com.vitorpamplona.amethyst.ui.theme.AmethystTheme import com.vitorpamplona.quartz.encoders.Nip19 +import com.vitorpamplona.quartz.encoders.Nip47WalletConnect import com.vitorpamplona.quartz.events.ChannelCreateEvent import com.vitorpamplona.quartz.events.ChannelMessageEvent import com.vitorpamplona.quartz.events.ChannelMetadataEvent @@ -341,7 +341,7 @@ fun uriToRoute(uri: String?): String? { } ?: try { uri?.let { - Nip47WalletConnectParser.parse(it) + Nip47WalletConnect.parse(it) val encodedUri = URLEncoder.encode(it, StandardCharsets.UTF_8.toString()) Route.Home.base + "?nip47=" + encodedUri } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt index bf30555c4..eef2fff55 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt @@ -87,7 +87,6 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.model.Account -import com.vitorpamplona.amethyst.model.Nip47URI import com.vitorpamplona.amethyst.ui.actions.CloseButton import com.vitorpamplona.amethyst.ui.actions.SaveButton import com.vitorpamplona.amethyst.ui.qrcode.SimpleQrCodeScanner @@ -99,6 +98,7 @@ import com.vitorpamplona.amethyst.ui.theme.ButtonBorder import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.Font14SP import com.vitorpamplona.amethyst.ui.theme.placeholderText +import com.vitorpamplona.quartz.encoders.Nip47WalletConnect import com.vitorpamplona.quartz.encoders.decodePublicKey import com.vitorpamplona.quartz.encoders.toHexKey import com.vitorpamplona.quartz.events.LnZapEvent @@ -176,7 +176,7 @@ class UpdateZapAmountViewModel(val account: Account) : ViewModel() { if (pubkeyHex != null) { account?.changeZapPaymentRequest( - Nip47URI( + Nip47WalletConnect.Nip47URI( pubkeyHex, relayUrl, privKeyHex, @@ -207,7 +207,7 @@ class UpdateZapAmountViewModel(val account: Account) : ViewModel() { } fun updateNIP47(uri: String) { - val contact = Nip47WalletConnectParser.parse(uri) + val contact = Nip47WalletConnect.parse(uri) if (contact != null) { walletConnectPubkey = TextFieldValue(contact.pubKeyHex) walletConnectRelay = TextFieldValue(contact.relayUri ?: "") diff --git a/commons/src/main/java/com/vitorpamplona/amethyst/commons/RichTextParser.kt b/commons/src/main/java/com/vitorpamplona/amethyst/commons/RichTextParser.kt index 78c18b76d..3532ba941 100644 --- a/commons/src/main/java/com/vitorpamplona/amethyst/commons/RichTextParser.kt +++ b/commons/src/main/java/com/vitorpamplona/amethyst/commons/RichTextParser.kt @@ -25,8 +25,8 @@ import android.util.Patterns import com.linkedin.urls.detection.UrlDetector import com.linkedin.urls.detection.UrlDetectorOptions import com.vitorpamplona.quartz.encoders.Nip30CustomEmoji -import com.vitorpamplona.quartz.encoders.Nip54 -import com.vitorpamplona.quartz.encoders.Nip92 +import com.vitorpamplona.quartz.encoders.Nip54InlineMetadata +import com.vitorpamplona.quartz.encoders.Nip92MediaAttachments import com.vitorpamplona.quartz.events.FileHeaderEvent import com.vitorpamplona.quartz.events.ImmutableListOfLists import kotlinx.collections.immutable.ImmutableList @@ -48,8 +48,8 @@ class RichTextParser() { ): MediaUrlContent? { val removedParamsFromUrl = removeQueryParamsForExtensionComparison(fullUrl) return if (imageExtensions.any { removedParamsFromUrl.endsWith(it) }) { - val frags = Nip54().parse(fullUrl) - val tags = Nip92().parse(fullUrl, eventTags.lists) + val frags = Nip54InlineMetadata().parse(fullUrl) + val tags = Nip92MediaAttachments().parse(fullUrl, eventTags.lists) MediaUrlImage( url = fullUrl, @@ -60,8 +60,8 @@ class RichTextParser() { contentWarning = frags["content-warning"] ?: tags["content-warning"], ) } else if (videoExtensions.any { removedParamsFromUrl.endsWith(it) }) { - val frags = Nip54().parse(fullUrl) - val tags = Nip92().parse(fullUrl, eventTags.lists) + val frags = Nip54InlineMetadata().parse(fullUrl) + val tags = Nip92MediaAttachments().parse(fullUrl, eventTags.lists) MediaUrlVideo( url = fullUrl, description = frags[FileHeaderEvent.ALT] ?: tags[FileHeaderEvent.ALT], diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/Nip47WalletConnectParser.kt b/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip47WalletConnect.kt similarity index 51% rename from app/src/main/java/com/vitorpamplona/amethyst/service/Nip47WalletConnectParser.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip47WalletConnect.kt index 2569f1534..0196b779b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/Nip47WalletConnectParser.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip47WalletConnect.kt @@ -18,38 +18,39 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.vitorpamplona.amethyst.ui.note +package com.vitorpamplona.quartz.encoders import android.net.Uri -import com.vitorpamplona.amethyst.model.Nip47URI -import com.vitorpamplona.quartz.encoders.decodePublicKey -import com.vitorpamplona.quartz.encoders.toHexKey import kotlinx.coroutines.CancellationException // Rename to the corect nip number when ready. -object Nip47WalletConnectParser { - fun parse(uri: String): Nip47URI { - // nostrwalletconnect://b889ff5b1513b641e2a139f661a661364979c5beee91842f8f0ef42ab558e9d4?relay=wss%3A%2F%2Frelay.damus.io&metadata=%7B%22name%22%3A%22Example%22%7D +class Nip47WalletConnect { + companion object { + fun parse(uri: String): Nip47URI { + // nostrwalletconnect://b889ff5b1513b641e2a139f661a661364979c5beee91842f8f0ef42ab558e9d4?relay=wss%3A%2F%2Frelay.damus.io&metadata=%7B%22name%22%3A%22Example%22%7D - val url = Uri.parse(uri) + val url = Uri.parse(uri) - if (url.scheme != "nostrwalletconnect" && url.scheme != "nostr+walletconnect") { - throw IllegalArgumentException("Not a Wallet Connect QR Code") - } - - val pubkey = url.host ?: throw IllegalArgumentException("Hostname cannot be null") - - val pubkeyHex = - try { - decodePublicKey(pubkey).toHexKey() - } catch (e: Exception) { - if (e is CancellationException) throw e - throw IllegalArgumentException("Hostname is not a valid Nostr Pubkey") + if (url.scheme != "nostrwalletconnect" && url.scheme != "nostr+walletconnect") { + throw IllegalArgumentException("Not a Wallet Connect QR Code") } - val relay = url.getQueryParameter("relay") - val secret = url.getQueryParameter("secret") + val pubkey = url.host ?: throw IllegalArgumentException("Hostname cannot be null") - return Nip47URI(pubkeyHex, relay, secret) + val pubkeyHex = + try { + decodePublicKey(pubkey).toHexKey() + } catch (e: Exception) { + if (e is CancellationException) throw e + throw IllegalArgumentException("Hostname is not a valid Nostr Pubkey") + } + + val relay = url.getQueryParameter("relay") + val secret = url.getQueryParameter("secret") + + return Nip47URI(pubkeyHex, relay, secret) + } } + + data class Nip47URI(val pubKeyHex: HexKey, val relayUri: String?, val secret: HexKey?) } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip54.kt b/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip54InlineMetadata.kt similarity index 99% rename from quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip54.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip54InlineMetadata.kt index 2522ed757..f9be3b979 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip54.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip54InlineMetadata.kt @@ -26,7 +26,7 @@ import java.net.URLDecoder import java.net.URLEncoder import kotlin.coroutines.cancellation.CancellationException -class Nip54 { +class Nip54InlineMetadata { fun convertFromFileHeader(header: FileHeaderEvent): String? { val myUrl = header.url() ?: return null return createUrl( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip92.kt b/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip92MediaAttachments.kt similarity index 98% rename from quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip92.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip92MediaAttachments.kt index 04a702a1c..bd217f884 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip92.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/encoders/Nip92MediaAttachments.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.encoders import com.vitorpamplona.quartz.events.FileHeaderEvent -class Nip92 { +class Nip92MediaAttachments { companion object { private const val IMETA = "imeta" } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/ChannelMessageEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/ChannelMessageEvent.kt index 2236ed944..c844be2d8 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/ChannelMessageEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/ChannelMessageEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.events import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.encoders.HexKey -import com.vitorpamplona.quartz.encoders.Nip92 +import com.vitorpamplona.quartz.encoders.Nip92MediaAttachments import com.vitorpamplona.quartz.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils @@ -78,7 +78,7 @@ class ChannelMessageEvent( geohash?.let { tags.addAll(geohashMipMap(it)) } nip94attachments?.let { it.forEach { - Nip92().convertFromFileHeader(it)?.let { + Nip92MediaAttachments().convertFromFileHeader(it)?.let { tags.add(it) } } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/ChatMessageEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/ChatMessageEvent.kt index b141833af..1c2566d7b 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/ChatMessageEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/ChatMessageEvent.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.events import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable import com.vitorpamplona.quartz.encoders.HexKey -import com.vitorpamplona.quartz.encoders.Nip92 +import com.vitorpamplona.quartz.encoders.Nip92MediaAttachments import com.vitorpamplona.quartz.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils import kotlinx.collections.immutable.ImmutableSet @@ -99,7 +99,7 @@ class ChatMessageEvent( subject?.let { tags.add(arrayOf("subject", it)) } nip94attachments?.let { it.forEach { - Nip92().convertFromFileHeader(it)?.let { + Nip92MediaAttachments().convertFromFileHeader(it)?.let { tags.add(it) } } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/LiveActivitiesChatMessageEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/LiveActivitiesChatMessageEvent.kt index a3711daf9..4f4b46eb6 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/LiveActivitiesChatMessageEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/LiveActivitiesChatMessageEvent.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.events import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.encoders.ATag import com.vitorpamplona.quartz.encoders.HexKey -import com.vitorpamplona.quartz.encoders.Nip92 +import com.vitorpamplona.quartz.encoders.Nip92MediaAttachments import com.vitorpamplona.quartz.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils @@ -91,7 +91,7 @@ class LiveActivitiesChatMessageEvent( geohash?.let { tags.addAll(geohashMipMap(it)) } nip94attachments?.let { it.forEach { - Nip92().convertFromFileHeader(it)?.let { + Nip92MediaAttachments().convertFromFileHeader(it)?.let { tags.add(it) } } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/PollNoteEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/PollNoteEvent.kt index cffe30e28..80d63d66a 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/PollNoteEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/PollNoteEvent.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.events import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.encoders.ATag import com.vitorpamplona.quartz.encoders.HexKey -import com.vitorpamplona.quartz.encoders.Nip92 +import com.vitorpamplona.quartz.encoders.Nip92MediaAttachments import com.vitorpamplona.quartz.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils @@ -105,7 +105,7 @@ class PollNoteEvent( geohash?.let { tags.addAll(geohashMipMap(it)) } nip94attachments?.let { it.forEach { - Nip92().convertFromFileHeader(it)?.let { + Nip92MediaAttachments().convertFromFileHeader(it)?.let { tags.add(it) } } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/PrivateDmEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/PrivateDmEvent.kt index 52e0ca1dd..adf4c1213 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/PrivateDmEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/PrivateDmEvent.kt @@ -24,7 +24,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.encoders.Hex import com.vitorpamplona.quartz.encoders.HexKey import com.vitorpamplona.quartz.encoders.HexValidator -import com.vitorpamplona.quartz.encoders.Nip54 +import com.vitorpamplona.quartz.encoders.Nip54InlineMetadata import com.vitorpamplona.quartz.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils import kotlinx.collections.immutable.persistentSetOf @@ -130,7 +130,7 @@ class PrivateDmEvent( nip94attachments?.forEach { val myUrl = it.url() if (myUrl != null) { - message = message.replace(myUrl, Nip54().createUrl(myUrl, it.tags)) + message = message.replace(myUrl, Nip54InlineMetadata().createUrl(myUrl, it.tags)) } } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/TextNoteEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/TextNoteEvent.kt index d74a36248..91e371922 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/TextNoteEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/TextNoteEvent.kt @@ -25,7 +25,7 @@ import com.linkedin.urls.detection.UrlDetector import com.linkedin.urls.detection.UrlDetectorOptions import com.vitorpamplona.quartz.encoders.ATag import com.vitorpamplona.quartz.encoders.HexKey -import com.vitorpamplona.quartz.encoders.Nip92 +import com.vitorpamplona.quartz.encoders.Nip92MediaAttachments import com.vitorpamplona.quartz.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils @@ -107,7 +107,7 @@ class TextNoteEvent( geohash?.let { tags.addAll(geohashMipMap(it)) } nip94attachments?.let { it.forEach { - Nip92().convertFromFileHeader(it)?.let { + Nip92MediaAttachments().convertFromFileHeader(it)?.let { tags.add(it) } }