diff --git a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt index 1a5584eeb..fe7f8b917 100644 --- a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt +++ b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt @@ -34,8 +34,8 @@ import com.vitorpamplona.amethyst.service.uploads.nip96.ServerInfoRetriever import com.vitorpamplona.amethyst.ui.actions.mediaServers.DEFAULT_MEDIA_SERVERS import com.vitorpamplona.amethyst.ui.actions.mediaServers.ServerName import com.vitorpamplona.amethyst.ui.actions.mediaServers.ServerType -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.toHexKey import junit.framework.TestCase.assertEquals import junit.framework.TestCase.fail diff --git a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/OkHttpOtsTest.kt b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/OkHttpOtsTest.kt index de46bb8dc..915268552 100644 --- a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/OkHttpOtsTest.kt +++ b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/OkHttpOtsTest.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst import androidx.test.ext.junit.runners.AndroidJUnit4 import com.vitorpamplona.amethyst.service.ots.OkHttpBlockstreamExplorer import com.vitorpamplona.amethyst.service.ots.OkHttpCalendarBuilder -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip03Timestamp.OtsEvent diff --git a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ThreadAssemblerTest.kt b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ThreadAssemblerTest.kt index 29dab71cd..89ad1d142 100644 --- a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ThreadAssemblerTest.kt +++ b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ThreadAssemblerTest.kt @@ -26,11 +26,11 @@ import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.AccountSettings import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.ui.dal.ThreadFeedFilter -import com.vitorpamplona.quartz.crypto.KeyPair -import com.vitorpamplona.quartz.nip01Core.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.hasValidSignature import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import junit.framework.TestCase import junit.framework.TestCase.assertEquals import kotlinx.coroutines.CoroutineScope diff --git a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/UrlUserTagTransformationTest.kt b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/UrlUserTagTransformationTest.kt index 10374ac1d..8babb8e31 100644 --- a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/UrlUserTagTransformationTest.kt +++ b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/UrlUserTagTransformationTest.kt @@ -29,7 +29,7 @@ import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.ui.actions.buildAnnotatedStringWithUrlHighlighting import com.vitorpamplona.quartz.nip01Core.UserMetadata import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePublicKey +import com.vitorpamplona.quartz.nip19Bech32.decodePublicKey import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt index 49a689101..7882749ac 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt @@ -44,9 +44,9 @@ import com.vitorpamplona.amethyst.ui.tor.TorSettings import com.vitorpamplona.amethyst.ui.tor.TorSettingsFlow import com.vitorpamplona.amethyst.ui.tor.TorType import com.vitorpamplona.ammolite.relays.RelaySetupInfo -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.experimental.edits.PrivateOutboxRelayListEvent import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.MetadataEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.hexToByteArray @@ -54,7 +54,7 @@ import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper import com.vitorpamplona.quartz.nip01Core.toHexKey import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent import com.vitorpamplona.quartz.nip17Dm.ChatMessageRelayListEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip19Bech32.toNpub import com.vitorpamplona.quartz.nip47WalletConnect.Nip47WalletConnect import com.vitorpamplona.quartz.nip50Search.SearchRelayListEvent import com.vitorpamplona.quartz.nip51Lists.MuteListEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt index 27b4ff455..7d20c24da 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt @@ -60,8 +60,8 @@ import com.vitorpamplona.ammolite.relays.NostrClient import com.vitorpamplona.quartz.nip01Core.toHexKey import com.vitorpamplona.quartz.nip03Timestamp.OtsEvent import com.vitorpamplona.quartz.nip03Timestamp.ots.OpenTimestamps -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.bechToBytes -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePublicKeyAsHexOrNull +import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes +import com.vitorpamplona.quartz.nip19Bech32.decodePublicKeyAsHexOrNull import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index 96dc6f1a1..91d9b91db 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -52,7 +52,6 @@ import com.vitorpamplona.ammolite.relays.TypedFilter import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter import com.vitorpamplona.quartz.blossom.BlossomAuthorizationEvent import com.vitorpamplona.quartz.blossom.BlossomServersEvent -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.experimental.edits.PrivateOutboxRelayListEvent import com.vitorpamplona.quartz.experimental.edits.TextNoteModificationEvent import com.vitorpamplona.quartz.experimental.interactiveStories.InteractiveStoryBaseEvent @@ -64,21 +63,22 @@ import com.vitorpamplona.quartz.experimental.nip95.FileStorageEvent import com.vitorpamplona.quartz.experimental.nip95.FileStorageHeaderEvent import com.vitorpamplona.quartz.experimental.profileGallery.ProfileGalleryEntryEvent import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent -import com.vitorpamplona.quartz.nip01Core.EventHint +import com.vitorpamplona.quartz.nip01Core.EventHintBundle import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.events.taggedEvents -import com.vitorpamplona.quartz.nip01Core.geohash.geohashes -import com.vitorpamplona.quartz.nip01Core.hashtags.hashtags import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper -import com.vitorpamplona.quartz.nip01Core.people.hasAnyTaggedUser -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUser import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashes +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hashtags +import com.vitorpamplona.quartz.nip01Core.tags.people.hasAnyTaggedUser +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser import com.vitorpamplona.quartz.nip02FollowList.Contact import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent import com.vitorpamplona.quartz.nip03Timestamp.OtsEvent @@ -2455,7 +2455,7 @@ class Account( if (replyingTo.event is CommentEvent) { CommentEvent.replyComment( msg = message, - replyingTo = EventHint(replyingTo.event as CommentEvent, replyingTo.relayHintUrl()), + replyingTo = EventHintBundle(replyingTo.event as CommentEvent, replyingTo.relayHintUrl()), usersMentioned = usersMentioned, addressesMentioned = addressesMentioned, eventsMentioned = eventsMentioned, @@ -2488,7 +2488,7 @@ class Account( } else { CommentEvent.firstReplyToEvent( msg = message, - replyingTo = EventHint(replyingTo.event as Event, replyingTo.relayHintUrl()), + replyingTo = EventHintBundle(replyingTo.event as Event, replyingTo.relayHintUrl()), usersMentioned = usersMentioned, addressesMentioned = addressesMentioned, eventsMentioned = eventsMentioned, @@ -2566,7 +2566,7 @@ class Account( if (replyingTo != null) { CommentEvent.replyComment( msg = message, - replyingTo = EventHint(replyingTo.event as CommentEvent, replyingTo.relayHintUrl()), + replyingTo = EventHintBundle(replyingTo.event as CommentEvent, replyingTo.relayHintUrl()), usersMentioned = usersMentioned, addressesMentioned = addressesMentioned, eventsMentioned = eventsMentioned, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSettings.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSettings.kt index 753462920..c20c9c0ab 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSettings.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSettings.kt @@ -29,9 +29,9 @@ import com.vitorpamplona.amethyst.ui.tor.TorSettings import com.vitorpamplona.amethyst.ui.tor.TorSettingsFlow import com.vitorpamplona.ammolite.relays.Constants import com.vitorpamplona.ammolite.relays.RelaySetupInfo -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.experimental.edits.PrivateOutboxRelayListEvent import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.MetadataEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip01Core.toHexKey diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AntiSpamFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AntiSpamFilter.kt index 2571c35a9..5a2b43d43 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AntiSpamFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AntiSpamFilter.kt @@ -28,8 +28,8 @@ import com.vitorpamplona.ammolite.relays.Relay import com.vitorpamplona.ammolite.relays.RelayStats import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent import kotlinx.coroutines.flow.MutableStateFlow data class Spammer( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Channel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Channel.kt index da9e1c4fa..3ad4b30d1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Channel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Channel.kt @@ -28,13 +28,13 @@ import com.vitorpamplona.amethyst.service.checkNotInMainThread import com.vitorpamplona.amethyst.ui.dal.DefaultFeedOrder import com.vitorpamplona.amethyst.ui.note.toShortenHex import com.vitorpamplona.ammolite.relays.BundledUpdate -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip19Bech32Entities.toNAddr -import com.vitorpamplona.quartz.nip19Bech32Entities.toNEvent +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.toNAddr +import com.vitorpamplona.quartz.nip19Bech32.toNEvent import com.vitorpamplona.quartz.nip28PublicChat.ChannelCreateEvent import com.vitorpamplona.quartz.nip53LiveActivities.LiveActivitiesEvent +import com.vitorpamplona.quartz.utils.Hex import kotlinx.coroutines.Dispatchers @Stable diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index 2abd3b340..dd2538a9b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -32,7 +32,6 @@ import com.vitorpamplona.amethyst.service.checkNotInMainThread import com.vitorpamplona.ammolite.relays.BundledInsert import com.vitorpamplona.ammolite.relays.Relay import com.vitorpamplona.quartz.blossom.BlossomServersEvent -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.experimental.audio.AudioHeaderEvent import com.vitorpamplona.quartz.experimental.audio.AudioTrackEvent import com.vitorpamplona.quartz.experimental.edits.PrivateOutboxRelayListEvent @@ -49,20 +48,20 @@ import com.vitorpamplona.quartz.experimental.relationshipStatus.RelationshipStat import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent -import com.vitorpamplona.quartz.nip01Core.addressables.mapTaggedAddress -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses import com.vitorpamplona.quartz.nip01Core.checkSignature +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.matchTag1With -import com.vitorpamplona.quartz.nip01Core.events.forEachTaggedEvent -import com.vitorpamplona.quartz.nip01Core.events.isTaggedEvent -import com.vitorpamplona.quartz.nip01Core.events.mapTaggedEvent -import com.vitorpamplona.quartz.nip01Core.events.taggedEvents import com.vitorpamplona.quartz.nip01Core.hasValidSignature -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUsers +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.mapTaggedAddress +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.events.forEachTaggedEvent +import com.vitorpamplona.quartz.nip01Core.tags.events.isTaggedEvent +import com.vitorpamplona.quartz.nip01Core.tags.events.mapTaggedEvent +import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUsers import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent import com.vitorpamplona.quartz.nip03Timestamp.OtsEvent import com.vitorpamplona.quartz.nip03Timestamp.VerificationState @@ -76,10 +75,10 @@ import com.vitorpamplona.quartz.nip17Dm.ChatMessageRelayListEvent import com.vitorpamplona.quartz.nip17Dm.ChatroomKey import com.vitorpamplona.quartz.nip18Reposts.GenericRepostEvent import com.vitorpamplona.quartz.nip18Reposts.RepostEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.decodeEventIdAsHexOrNull -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePublicKeyAsHexOrNull -import com.vitorpamplona.quartz.nip19Bech32Entities.isATag -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip19Bech32.decodeEventIdAsHexOrNull +import com.vitorpamplona.quartz.nip19Bech32.decodePublicKeyAsHexOrNull +import com.vitorpamplona.quartz.nip19Bech32.isATag +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.nip22Comments.CommentEvent import com.vitorpamplona.quartz.nip23LongContent.LongTextNoteEvent import com.vitorpamplona.quartz.nip25Reactions.ReactionEvent @@ -145,6 +144,7 @@ import com.vitorpamplona.quartz.nip90Dvms.NIP90UserDiscoveryResponseEvent import com.vitorpamplona.quartz.nip94FileMetadata.FileHeaderEvent import com.vitorpamplona.quartz.nip96FileStorage.FileServersEvent import com.vitorpamplona.quartz.nip99Classifieds.ClassifiedsEvent +import com.vitorpamplona.quartz.utils.Hex import com.vitorpamplona.quartz.utils.TimeUtils import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentSetOf diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt index 292ec7ded..d20b33dbf 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt @@ -37,21 +37,20 @@ import com.vitorpamplona.ammolite.relays.BundledUpdate import com.vitorpamplona.ammolite.relays.Relay import com.vitorpamplona.ammolite.relays.RelayBriefInfoCache import com.vitorpamplona.ammolite.relays.filters.EOSETime -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.lightning.LnInvoiceUtil import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.hashtags.anyHashTag -import com.vitorpamplona.quartz.nip01Core.hashtags.isTaggedHash import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.anyHashTag +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.isTaggedHash import com.vitorpamplona.quartz.nip02FollowList.ImmutableListOfLists import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip18Reposts.GenericRepostEvent import com.vitorpamplona.quartz.nip18Reposts.RepostEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.toNAddr +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.toNAddr import com.vitorpamplona.quartz.nip23LongContent.LongTextNoteEvent import com.vitorpamplona.quartz.nip28PublicChat.ChannelCreateEvent import com.vitorpamplona.quartz.nip28PublicChat.ChannelMessageEvent @@ -67,6 +66,7 @@ import com.vitorpamplona.quartz.nip57Zaps.LnZapEvent import com.vitorpamplona.quartz.nip57Zaps.LnZapRequestEvent import com.vitorpamplona.quartz.nip59Giftwrap.WrappedEvent import com.vitorpamplona.quartz.nip72ModCommunities.CommunityPostApprovalEvent +import com.vitorpamplona.quartz.utils.Hex import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.containsAny import kotlinx.coroutines.CancellationException diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/ThreadAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/ThreadAssembler.kt index 29980d3e8..0284c1704 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/ThreadAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/ThreadAssembler.kt @@ -22,8 +22,8 @@ package com.vitorpamplona.amethyst.model import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.service.checkNotInMainThread -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip18Reposts.GenericRepostEvent import com.vitorpamplona.quartz.nip18Reposts.RepostEvent import kotlinx.collections.immutable.ImmutableSet diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/User.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/User.kt index 1bf34dda7..783bb03ba 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/User.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/User.kt @@ -31,24 +31,24 @@ import com.vitorpamplona.amethyst.ui.note.toShortenHex import com.vitorpamplona.ammolite.relays.BundledUpdate import com.vitorpamplona.ammolite.relays.Relay import com.vitorpamplona.ammolite.relays.filters.EOSETime -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.lightning.Lud06 import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.MetadataEvent import com.vitorpamplona.quartz.nip01Core.UserMetadata -import com.vitorpamplona.quartz.nip01Core.geohash.isTaggedGeoHash -import com.vitorpamplona.quartz.nip01Core.hashtags.isTaggedHash -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUser +import com.vitorpamplona.quartz.nip01Core.tags.geohash.isTaggedGeoHash +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.isTaggedHash +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import com.vitorpamplona.quartz.nip17Dm.ChatroomKey -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.toNpub import com.vitorpamplona.quartz.nip51Lists.BookmarkListEvent import com.vitorpamplona.quartz.nip56Reports.ReportEvent import com.vitorpamplona.quartz.nip57Zaps.LnZapEvent import com.vitorpamplona.quartz.nip65RelayList.AdvertisedRelayListEvent import com.vitorpamplona.quartz.utils.DualCase +import com.vitorpamplona.quartz.utils.Hex import com.vitorpamplona.quartz.utils.containsAny import kotlinx.collections.immutable.persistentSetOf import kotlinx.coroutines.Dispatchers diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/observables/LatestByKindWithETag.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/observables/LatestByKindWithETag.kt index b501c2117..b051cda90 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/observables/LatestByKindWithETag.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/observables/LatestByKindWithETag.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.model.observables import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.events.isTaggedEvent +import com.vitorpamplona.quartz.nip01Core.tags.events.isTaggedEvent import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/AmethystNostrDataSource.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/AmethystNostrDataSource.kt index 41347e1db..ff5312ab7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/AmethystNostrDataSource.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/AmethystNostrDataSource.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.ammolite.relays.NostrDataSource import com.vitorpamplona.ammolite.relays.Relay -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event abstract class AmethystNostrDataSource( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/Base64Image.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/Base64Image.kt index 820400199..91b3ad9dc 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/Base64Image.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/Base64Image.kt @@ -34,7 +34,7 @@ import coil3.key.Keyer import coil3.request.ImageRequest import coil3.request.Options import com.vitorpamplona.amethyst.commons.richtext.RichTextParser.Companion.base64contentPattern -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.toHexKey import java.util.Base64 diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/Nip05NostrAddressVerifier.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/Nip05NostrAddressVerifier.kt index 85de464e5..4269c3f80 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/Nip05NostrAddressVerifier.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/Nip05NostrAddressVerifier.kt @@ -20,28 +20,15 @@ */ package com.vitorpamplona.amethyst.service -import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.vitorpamplona.amethyst.BuildConfig import com.vitorpamplona.amethyst.service.okhttp.HttpClientManager +import com.vitorpamplona.quartz.nip05DnsIdentifiers.Nip05 import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import okhttp3.Request class Nip05NostrAddressVerifier { - fun assembleUrl(nip05address: String): String? { - val parts = nip05address.trim().split("@") - - if (parts.size == 2) { - return "https://${parts[1]}/.well-known/nostr.json?name=${parts[0]}" - } - if (parts.size == 1) { - return "https://${parts[0]}/.well-known/nostr.json?name=_" - } - - return null - } - suspend fun fetchNip05Json( nip05: String, forceProxy: (String) -> Boolean, @@ -50,7 +37,7 @@ class Nip05NostrAddressVerifier { ) = withContext(Dispatchers.IO) { checkNotInMainThread() - val url = assembleUrl(nip05) + val url = Nip05().assembleUrl(nip05) if (url == null) { onError("Could not assemble url from Nip05: \"${nip05}\". Check the user's setup") @@ -98,41 +85,24 @@ class Nip05NostrAddressVerifier { // check fails on tests checkNotInMainThread() - val mapper = jacksonObjectMapper() - fetchNip05Json( nip05, forceProxy, onSuccess = { checkNotInMainThread() - // NIP05 usernames are case insensitive, but JSON properties are not - // converts the json to lowercase and then tries to access the username via a - // lowercase version of the username. - val nip05url = - try { - mapper.readTree(it.lowercase()) - } catch (e: Throwable) { - if (e is CancellationException) throw e - onError("Error Parsing JSON from Lightning Address. Check the user's lightning setup") - null - } - - val parts = nip05.split("@") - val user = - if (parts.size == 2) { - parts[0].lowercase() - } else { - "_" - } - - val hexKey = nip05url?.get("names")?.get(user)?.asText() - - if (hexKey == null) { - onError("Username not found in the NIP05 JSON [$nip05]") - } else { - onSuccess(hexKey) - } + Nip05().parseHexKeyFor(nip05, it.lowercase()).fold( + onSuccess = { hexKey -> + if (hexKey == null) { + onError("Username not found in the NIP05 JSON [$nip05]") + } else { + onSuccess(hexKey) + } + }, + onFailure = { + onError("Error Parsing JSON from NIP-05 address: $nip05." + (it.message ?: it.localizedMessage ?: it.javaClass.simpleName)) + }, + ) }, onError = onError, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrSearchEventOrUserDataSource.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrSearchEventOrUserDataSource.kt index 5d36fe3d4..b38c6ab1b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrSearchEventOrUserDataSource.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrSearchEventOrUserDataSource.kt @@ -24,28 +24,27 @@ import com.vitorpamplona.ammolite.relays.ALL_FEED_TYPES import com.vitorpamplona.ammolite.relays.FeedType import com.vitorpamplona.ammolite.relays.TypedFilter import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter -import com.vitorpamplona.quartz.crypto.Hex -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.experimental.audio.AudioHeaderEvent import com.vitorpamplona.quartz.experimental.audio.AudioTrackEvent import com.vitorpamplona.quartz.experimental.interactiveStories.InteractiveStoryPrologueEvent import com.vitorpamplona.quartz.experimental.interactiveStories.InteractiveStorySceneEvent import com.vitorpamplona.quartz.experimental.nns.NNSEvent import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip01Core.toHexKey import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.bechToBytes -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NRelay -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NSec -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.NRelay +import com.vitorpamplona.quartz.nip19Bech32.entities.NSec +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.nip22Comments.CommentEvent import com.vitorpamplona.quartz.nip23LongContent.LongTextNoteEvent import com.vitorpamplona.quartz.nip28PublicChat.ChannelCreateEvent @@ -60,6 +59,7 @@ import com.vitorpamplona.quartz.nip58Badges.BadgeDefinitionEvent import com.vitorpamplona.quartz.nip72ModCommunities.CommunityDefinitionEvent import com.vitorpamplona.quartz.nip84Highlights.HighlightEvent import com.vitorpamplona.quartz.nip99Classifieds.ClassifiedsEvent +import com.vitorpamplona.quartz.utils.Hex import kotlin.coroutines.cancellation.CancellationException object NostrSearchEventOrUserDataSource : AmethystNostrDataSource("SearchEventFeed") { @@ -84,7 +84,7 @@ object NostrSearchEventOrUserDataSource : AmethystNostrDataSource("SearchEventFe is NSec -> KeyPair(privKey = parsed.hex.bechToBytes()).pubKey.toHexKey() is NPub -> parsed.hex is NProfile -> parsed.hex - is com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note -> parsed.hex + is com.vitorpamplona.quartz.nip19Bech32.entities.Note -> parsed.hex is NEvent -> parsed.hex is NEmbed -> parsed.event.id is NRelay -> null diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/OnlineCheck.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/OnlineCheck.kt index be7a7cd07..e00932f21 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/OnlineCheck.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/OnlineCheck.kt @@ -25,7 +25,7 @@ import android.util.LruCache import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.BuildConfig import com.vitorpamplona.amethyst.service.okhttp.HttpClientManager -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils import okhttp3.EventListener import okhttp3.Protocol import okhttp3.Request diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt index e3788f1da..990d40d2a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt @@ -35,13 +35,13 @@ import com.vitorpamplona.amethyst.service.notifications.NotificationUtils.sendZa import com.vitorpamplona.amethyst.ui.note.showAmount import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUser -import com.vitorpamplona.quartz.nip01Core.people.taggedUsers import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser +import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers import com.vitorpamplona.quartz.nip04Dm.PrivateDmEvent import com.vitorpamplona.quartz.nip17Dm.ChatMessageEncryptedFileHeaderEvent import com.vitorpamplona.quartz.nip17Dm.ChatMessageEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip19Bech32.toNpub import com.vitorpamplona.quartz.nip21UriScheme.toNostrUri import com.vitorpamplona.quartz.nip37Drafts.DraftEvent import com.vitorpamplona.quartz.nip55AndroidSigner.NostrSignerExternal diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/ots/OkHttpCalendar.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/ots/OkHttpCalendar.kt index c715891bd..475eeddfd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/ots/OkHttpCalendar.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/ots/OkHttpCalendar.kt @@ -22,7 +22,6 @@ package com.vitorpamplona.amethyst.service.ots import com.vitorpamplona.amethyst.BuildConfig import com.vitorpamplona.amethyst.service.okhttp.HttpClientManager -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.nip03Timestamp.ots.ICalendar import com.vitorpamplona.quartz.nip03Timestamp.ots.StreamDeserializationContext import com.vitorpamplona.quartz.nip03Timestamp.ots.Timestamp @@ -30,6 +29,7 @@ import com.vitorpamplona.quartz.nip03Timestamp.ots.exceptions.CommitmentNotFound import com.vitorpamplona.quartz.nip03Timestamp.ots.exceptions.DeserializationException import com.vitorpamplona.quartz.nip03Timestamp.ots.exceptions.ExceededSizeException import com.vitorpamplona.quartz.nip03Timestamp.ots.exceptions.UrlException +import com.vitorpamplona.quartz.utils.Hex import okhttp3.MediaType.Companion.toMediaType import okhttp3.RequestBody.Companion.toRequestBody diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/EncryptFiles.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/EncryptFiles.kt index f0410389d..954e9b362 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/EncryptFiles.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/EncryptFiles.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.service.uploads import android.content.Context import android.net.Uri import androidx.core.net.toUri -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.toHexKey import com.vitorpamplona.quartz.nip17Dm.NostrCipher import java.io.File diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/FileHeader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/FileHeader.kt index 22efd5e46..3ef79122d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/FileHeader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/FileHeader.kt @@ -30,7 +30,7 @@ import android.os.Build import android.util.Log import com.vitorpamplona.amethyst.commons.blurhash.toBlurhash import com.vitorpamplona.amethyst.service.Blurhash -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.toHexKey import com.vitorpamplona.quartz.nip94FileMetadata.Dimension import kotlinx.coroutines.CancellationException diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/blossom/BlossomUploader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/blossom/BlossomUploader.kt index d37a25565..49cc0fc79 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/blossom/BlossomUploader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/blossom/BlossomUploader.kt @@ -35,8 +35,8 @@ import com.vitorpamplona.amethyst.service.okhttp.HttpClientManager import com.vitorpamplona.amethyst.service.uploads.MediaUploadResult import com.vitorpamplona.amethyst.service.uploads.nip96.randomChars import com.vitorpamplona.amethyst.ui.stringRes +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.blossom.BlossomAuthorizationEvent -import com.vitorpamplona.quartz.crypto.CryptoUtils import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.toHexKey import okhttp3.MediaType.Companion.toMediaType diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/Nip96Uploader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/Nip96Uploader.kt index 788e384e9..5b3759c95 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/Nip96Uploader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/Nip96Uploader.kt @@ -26,7 +26,6 @@ import android.net.Uri import android.provider.OpenableColumns import android.webkit.MimeTypeMap import androidx.core.net.toFile -import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.vitorpamplona.amethyst.BuildConfig import com.vitorpamplona.amethyst.R @@ -36,6 +35,11 @@ import com.vitorpamplona.amethyst.service.okhttp.HttpClientManager import com.vitorpamplona.amethyst.service.uploads.MediaUploadResult import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.quartz.nip94FileMetadata.Dimension +import com.vitorpamplona.quartz.nip96FileStorage.AuthToken +import com.vitorpamplona.quartz.nip96FileStorage.Nip96Result +import com.vitorpamplona.quartz.nip96FileStorage.PartialEvent +import com.vitorpamplona.quartz.nip96FileStorage.ResultParser +import com.vitorpamplona.quartz.nip96FileStorage.ServerInfo import com.vitorpamplona.quartz.nip98HttpAuth.HTTPAuthorizationEvent import kotlinx.coroutines.delay import okhttp3.MediaType.Companion.toMediaType @@ -45,7 +49,6 @@ import okhttp3.RequestBody import okio.BufferedSink import okio.source import java.io.InputStream -import java.util.Base64 val charPool: List = ('a'..'z') + ('A'..'Z') + ('0'..'9') @@ -165,7 +168,7 @@ class Nip96Uploader { }, ).build() - httpAuth(server.apiUrl, "POST", null)?.let { requestBuilder.addHeader("Authorization", encodeAuth(it)) } + httpAuth(server.apiUrl, "POST", null)?.let { requestBuilder.addHeader("Authorization", AuthToken().encodeAuth(it)) } requestBuilder .addHeader("User-Agent", "Amethyst/${BuildConfig.VERSION_NAME}") @@ -177,13 +180,16 @@ class Nip96Uploader { client.newCall(request).execute().use { response -> if (response.isSuccessful) { response.body.use { body -> - val str = body.string() - val result = parseResults(str) - + val result = ResultParser().parseResults(body.string()) if (!result.processingUrl.isNullOrBlank()) { return waitProcessing(result, server, forceProxy, onProgress) - } else if (result.status == "success" && result.nip94Event != null) { - return convertToMediaResult(result.nip94Event) + } else if (result.status == "success") { + val event = result.nip94Event + if (event != null) { + return convertToMediaResult(event) + } else { + throw RuntimeException(stringRes(context, R.string.failed_to_upload_to_server_with_message, server.apiUrl.displayUrl(), result.message)) + } } else { throw RuntimeException(stringRes(context, R.string.failed_to_upload_to_server_with_message, server.apiUrl.displayUrl(), result.message)) } @@ -253,11 +259,6 @@ class Nip96Uploader { ) } - fun encodeAuth(event: HTTPAuthorizationEvent): String { - val encodedNIP98Event = Base64.getEncoder().encodeToString(event.toJson().toByteArray()) - return "Nostr $encodedNIP98Event" - } - suspend fun delete( hash: String, contentType: String?, @@ -273,7 +274,7 @@ class Nip96Uploader { val requestBuilder = Request.Builder() - httpAuth(server.apiUrl, "DELETE", null)?.let { requestBuilder.addHeader("Authorization", encodeAuth(it)) } + httpAuth(server.apiUrl, "DELETE", null)?.let { requestBuilder.addHeader("Authorization", AuthToken().encodeAuth(it)) } val request = requestBuilder @@ -285,8 +286,7 @@ class Nip96Uploader { client.newCall(request).execute().use { response -> if (response.isSuccessful) { response.body.use { body -> - val str = body.string() - val result = parseDeleteResults(str) + val result = ResultParser().parseDeleteResults(body.string()) return result.status == "success" } } else { @@ -308,20 +308,22 @@ class Nip96Uploader { ): MediaUploadResult { var currentResult = result - while (!result.processingUrl.isNullOrBlank() && (currentResult.percentage ?: 100) < 100) { + val procUrl = result.processingUrl + + while (!procUrl.isNullOrBlank() && (currentResult.percentage ?: 100) < 100) { onProgress((currentResult.percentage ?: 100) / 100f) val request: Request = Request .Builder() .header("User-Agent", "Amethyst/${BuildConfig.VERSION_NAME}") - .url(result.processingUrl) + .url(procUrl) .build() - val client = HttpClientManager.getHttpClient(forceProxy(result.processingUrl)) + val client = HttpClientManager.getHttpClient(forceProxy(procUrl)) client.newCall(request).execute().use { if (it.isSuccessful) { - it.body.use { currentResult = parseResults(it.string()) } + it.body.use { currentResult = ResultParser().parseResults(it.string()) } } } @@ -337,14 +339,4 @@ class Nip96Uploader { throw RuntimeException("Error waiting for processing. Final result is unavailable") } } - - private fun parseDeleteResults(body: String): DeleteResult { - val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - return mapper.readValue(body, DeleteResult::class.java) - } - - private fun parseResults(body: String): Nip96Result { - val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - return mapper.readValue(body, Nip96Result::class.java) - } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/ServerInfoRetriever.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/ServerInfoRetriever.kt index e74daf4e9..b100bf1fb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/ServerInfoRetriever.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/ServerInfoRetriever.kt @@ -21,49 +21,25 @@ package com.vitorpamplona.amethyst.service.uploads.nip96 import android.util.Log -import com.fasterxml.jackson.databind.DeserializationFeature -import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.vitorpamplona.amethyst.service.checkNotInMainThread import com.vitorpamplona.amethyst.service.okhttp.HttpClientManager +import com.vitorpamplona.quartz.nip96FileStorage.ServerInfo +import com.vitorpamplona.quartz.nip96FileStorage.ServerInfoParser import kotlinx.coroutines.CancellationException import okhttp3.Request -import java.net.URI -import java.net.URL class ServerInfoRetriever { - fun parse( - baseUrl: String, - body: String, - ): ServerInfo { - val mapper = - jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - val serverInfo = mapper.readValue(body, ServerInfo::class.java) - - return serverInfo.copy( - apiUrl = makeAbsoluteIfRelativeUrl(baseUrl, serverInfo.apiUrl), - downloadUrl = serverInfo.downloadUrl?.let { makeAbsoluteIfRelativeUrl(baseUrl, it) }, - delegatedToUrl = serverInfo.delegatedToUrl?.let { makeAbsoluteIfRelativeUrl(baseUrl, it) }, - tosUrl = serverInfo.tosUrl?.let { makeAbsoluteIfRelativeUrl(baseUrl, it) }, - plans = - serverInfo.plans.mapValues { u -> - u.value.copy( - url = u.value.url?.let { makeAbsoluteIfRelativeUrl(baseUrl, it) }, - ) - }, - ) - } + val parser = ServerInfoParser() suspend fun loadInfo( baseUrl: String, forceProxy: Boolean, ): ServerInfo { - checkNotInMainThread() - val request: Request = Request .Builder() .header("Accept", "application/nostr+json") - .url(baseUrl.removeSuffix("/") + "/.well-known/nostr/nip96.json") + .url(parser.assembleUrl(baseUrl)) .build() HttpClientManager.getHttpClient(forceProxy).newCall(request).execute().use { response -> @@ -72,7 +48,7 @@ class ServerInfoRetriever { val body = it.body.string() try { if (it.isSuccessful) { - return parse(baseUrl, body) + return parser.parse(baseUrl, body) } else { throw RuntimeException( "Resulting Message from $baseUrl is an error: ${response.code} ${response.message}", @@ -86,19 +62,4 @@ class ServerInfoRetriever { } } } - - fun makeAbsoluteIfRelativeUrl( - baseUrl: String, - potentialyRelativeUrl: String, - ): String = - try { - val apiUrl = URI(potentialyRelativeUrl) - if (apiUrl.isAbsolute) { - potentialyRelativeUrl - } else { - URL(URL(baseUrl), potentialyRelativeUrl).toString() - } - } catch (e: Exception) { - potentialyRelativeUrl - } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt index 04e2b43fb..6d6902cd3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt @@ -48,13 +48,13 @@ import com.vitorpamplona.amethyst.ui.screen.AccountStateViewModel import com.vitorpamplona.amethyst.ui.theme.AmethystTheme import com.vitorpamplona.amethyst.ui.tor.TorManager import com.vitorpamplona.quartz.nip04Dm.PrivateDmEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.Note import com.vitorpamplona.quartz.nip28PublicChat.ChannelCreateEvent import com.vitorpamplona.quartz.nip28PublicChat.ChannelMessageEvent import com.vitorpamplona.quartz.nip28PublicChat.ChannelMetadataEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewMessageTagger.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewMessageTagger.kt index 35ff25816..3f613da33 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewMessageTagger.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewMessageTagger.kt @@ -23,19 +23,19 @@ package com.vitorpamplona.amethyst.ui.actions import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.Bech32 -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.bechToBytes -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NRelay -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NSec -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip01Core.KeyPair +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.bech32.Bech32 +import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.NRelay +import com.vitorpamplona.quartz.nip19Bech32.entities.NSec +import com.vitorpamplona.quartz.nip19Bech32.toNpub import kotlinx.coroutines.CancellationException class NewMessageTagger( @@ -73,7 +73,7 @@ class NewMessageTagger( is NPub -> addUserToMentions(dao.getOrCreateUser(entity.hex)) is NProfile -> addUserToMentions(dao.getOrCreateUser(entity.hex)) - is com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note -> addNoteToReplyTos(dao.getOrCreateNote(entity.hex)) + is com.vitorpamplona.quartz.nip19Bech32.entities.Note -> addNoteToReplyTos(dao.getOrCreateNote(entity.hex)) is NEvent -> addNoteToReplyTos(dao.getOrCreateNote(entity.hex)) is NEmbed -> addNoteToReplyTos(dao.getOrCreateNote(entity.event.id)) @@ -107,7 +107,7 @@ class NewMessageTagger( getNostrAddress(dao.getOrCreateUser(entity.hex).toNProfile(), results.restOfWord) } - is com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note -> { + is com.vitorpamplona.quartz.nip19Bech32.entities.Note -> { getNostrAddress(dao.getOrCreateNote(entity.hex).toNEvent(), results.restOfWord) } is NEvent -> { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt index 9ce473a51..656f1c55f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt @@ -55,20 +55,19 @@ import com.vitorpamplona.amethyst.ui.components.Split import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.ammolite.relays.RelaySetupInfo -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.experimental.nip95.FileStorageEvent import com.vitorpamplona.quartz.experimental.nip95.FileStorageHeaderEvent import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.geohash.getGeoHash +import com.vitorpamplona.quartz.nip01Core.tags.geohash.getGeoHash import com.vitorpamplona.quartz.nip04Dm.PrivateDmEvent import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import com.vitorpamplona.quartz.nip10Notes.findURLs import com.vitorpamplona.quartz.nip14Subject.subject import com.vitorpamplona.quartz.nip17Dm.NIP17Group -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip19Bech32.toNpub import com.vitorpamplona.quartz.nip22Comments.CommentEvent import com.vitorpamplona.quartz.nip22Comments.RootScope import com.vitorpamplona.quartz.nip30CustomEmoji.CustomEmoji @@ -87,6 +86,7 @@ import com.vitorpamplona.quartz.nip92IMeta.IMetaTag import com.vitorpamplona.quartz.nip92IMeta.IMetaTagBuilder import com.vitorpamplona.quartz.nip99Classifieds.ClassifiedsEvent import com.vitorpamplona.quartz.nip99Classifieds.Price +import com.vitorpamplona.quartz.utils.Hex import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/UrlUserTagTransformation.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/UrlUserTagTransformation.kt index 2af641e00..fc7d0e468 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/UrlUserTagTransformation.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/UrlUserTagTransformation.kt @@ -32,7 +32,7 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextDecoration import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePublicKey +import com.vitorpamplona.quartz.nip19Bech32.decodePublicKey import kotlin.coroutines.cancellation.CancellationException data class RangesChanges( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ClickableRoute.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ClickableRoute.kt index 017e32189..42ef9d7bc 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ClickableRoute.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ClickableRoute.kt @@ -68,15 +68,15 @@ import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip02FollowList.ImmutableListOfLists import com.vitorpamplona.quartz.nip04Dm.PrivateDmEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NRelay -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NSec -import com.vitorpamplona.quartz.nip19Bech32Entities.toNIP19 +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.NRelay +import com.vitorpamplona.quartz.nip19Bech32.entities.NSec +import com.vitorpamplona.quartz.nip19Bech32.toNIP19 import com.vitorpamplona.quartz.nip28PublicChat.ChannelCreateEvent import com.vitorpamplona.quartz.nip30CustomEmoji.CustomEmoji import kotlinx.collections.immutable.ImmutableList @@ -92,7 +92,7 @@ fun ClickableRoute( when (val entity = nip19.entity) { is NPub -> DisplayUser(entity.hex, nip19.nip19raw, nip19.additionalChars, accountViewModel, nav) is NProfile -> DisplayUser(entity.hex, nip19.nip19raw, nip19.additionalChars, accountViewModel, nav) - is com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note -> DisplayEvent(entity.hex, null, nip19.nip19raw, nip19.additionalChars, accountViewModel, nav) + is com.vitorpamplona.quartz.nip19Bech32.entities.Note -> DisplayEvent(entity.hex, null, nip19.nip19raw, nip19.additionalChars, accountViewModel, nav) is NEvent -> DisplayEvent(entity.hex, entity.kind, nip19.nip19raw, nip19.additionalChars, accountViewModel, nav) is NEmbed -> LoadAndDisplayEvent(entity.event, nip19.additionalChars, accountViewModel, nav) is NAddress -> DisplayAddress(entity, nip19.nip19raw, nip19.additionalChars, accountViewModel, nav) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt index 29b0d0955..5f3c32e11 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt @@ -93,10 +93,10 @@ import com.vitorpamplona.amethyst.ui.theme.Size30dp import com.vitorpamplona.amethyst.ui.theme.Size75dp import com.vitorpamplona.amethyst.ui.theme.hashVerifierMark import com.vitorpamplona.amethyst.ui.theme.imageModifier -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent import com.vitorpamplona.quartz.nip94FileMetadata.Dimension import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/markdown/MarkdownMediaRenderer.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/markdown/MarkdownMediaRenderer.kt index 4340ddd21..e786fed2c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/markdown/MarkdownMediaRenderer.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/markdown/MarkdownMediaRenderer.kt @@ -50,13 +50,13 @@ import com.vitorpamplona.amethyst.ui.theme.Font17SP import com.vitorpamplona.amethyst.ui.theme.Size17Modifier import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip02FollowList.ImmutableListOfLists -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NRelay -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NSec +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.NRelay +import com.vitorpamplona.quartz.nip19Bech32.entities.NSec import kotlinx.coroutines.runBlocking class MarkdownMediaRenderer( @@ -172,7 +172,7 @@ class MarkdownMediaRenderer( when (val entity = loadedLink.nip19.entity) { is NPub -> renderObservableUser(entity.hex, loadedLink.nip19.nip19raw, richTextStringBuilder) is NProfile -> renderObservableUser(entity.hex, loadedLink.nip19.nip19raw, richTextStringBuilder) - is com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note -> renderObservableShortNoteUri(loadedLink, uri, richTextStringBuilder) + is com.vitorpamplona.quartz.nip19Bech32.entities.Note -> renderObservableShortNoteUri(loadedLink, uri, richTextStringBuilder) is NEvent -> renderObservableShortNoteUri(loadedLink, uri, richTextStringBuilder) is NEmbed -> renderObservableShortNoteUri(loadedLink, uri, richTextStringBuilder) is NAddress -> renderObservableShortNoteUri(loadedLink, uri, richTextStringBuilder) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt index 641681a01..0d8200ad1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.actions.relays.updated -import com.vitorpamplona.quartz.nip01Core.events.taggedEvents +import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents import com.vitorpamplona.quartz.nip17Dm.ChatroomKey import com.vitorpamplona.quartz.nip17Dm.ChatroomKeyable import com.vitorpamplona.quartz.nip28PublicChat.ChannelMessageEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/CommunityFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/CommunityFeedFilter.kt index 5839dd93c..39d42849d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/CommunityFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/CommunityFeedFilter.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.isTaggedAddressableNote +import com.vitorpamplona.quartz.nip01Core.tags.addressables.isTaggedAddressableNote import com.vitorpamplona.quartz.nip72ModCommunities.CommunityPostApprovalEvent class CommunityFeedFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverCommunityFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverCommunityFeedFilter.kt index 7d7dc3a31..6693745b3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverCommunityFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverCommunityFeedFilter.kt @@ -23,8 +23,8 @@ package com.vitorpamplona.amethyst.ui.dal import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip19Bech32Entities.parseAtagUnckecked +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.parseAtagUnckecked import com.vitorpamplona.quartz.nip51Lists.MuteListEvent import com.vitorpamplona.quartz.nip51Lists.PeopleListEvent import com.vitorpamplona.quartz.nip72ModCommunities.CommunityDefinitionEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/FilterByListParams.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/FilterByListParams.kt index 997ac3d53..b93515027 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/FilterByListParams.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/FilterByListParams.kt @@ -23,11 +23,11 @@ package com.vitorpamplona.amethyst.ui.dal import com.vitorpamplona.amethyst.model.AROUND_ME import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.GLOBAL_FOLLOWS -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.isTaggedAddressableNotes import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.geohash.isTaggedGeoHashes -import com.vitorpamplona.quartz.nip01Core.hashtags.isTaggedHashes +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.isTaggedAddressableNotes +import com.vitorpamplona.quartz.nip01Core.tags.geohash.isTaggedGeoHashes +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.isTaggedHashes import com.vitorpamplona.quartz.nip22Comments.CommentEvent import com.vitorpamplona.quartz.nip51Lists.MuteListEvent import com.vitorpamplona.quartz.nip51Lists.PeopleListEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/GeoHashFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/GeoHashFeedFilter.kt index 087235ea9..92ad7b3c7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/GeoHashFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/GeoHashFeedFilter.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.quartz.experimental.audio.AudioHeaderEvent import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent -import com.vitorpamplona.quartz.nip01Core.geohash.isTaggedGeoHash +import com.vitorpamplona.quartz.nip01Core.tags.geohash.isTaggedGeoHash import com.vitorpamplona.quartz.nip04Dm.PrivateDmEvent import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import com.vitorpamplona.quartz.nip23LongContent.LongTextNoteEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/HashtagFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/HashtagFeedFilter.kt index 2129efdec..2626e695d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/HashtagFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/HashtagFeedFilter.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.quartz.experimental.audio.AudioHeaderEvent import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent -import com.vitorpamplona.quartz.nip01Core.hashtags.isTaggedHash +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.isTaggedHash import com.vitorpamplona.quartz.nip04Dm.PrivateDmEvent import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import com.vitorpamplona.quartz.nip18Reposts.GenericRepostEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/NIP90ContentDiscoveryResponseFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/NIP90ContentDiscoveryResponseFilter.kt index e91838bce..e489bc323 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/NIP90ContentDiscoveryResponseFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/NIP90ContentDiscoveryResponseFilter.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.observables.CreatedAtComparator -import com.vitorpamplona.quartz.nip01Core.events.isTaggedEvent +import com.vitorpamplona.quartz.nip01Core.tags.events.isTaggedEvent import com.vitorpamplona.quartz.nip51Lists.MuteListEvent import com.vitorpamplona.quartz.nip51Lists.PeopleListEvent import com.vitorpamplona.quartz.nip90Dvms.NIP90ContentDiscoveryResponseEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/NotificationFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/NotificationFeedFilter.kt index 175304374..4a41b1e7f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/NotificationFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/NotificationFeedFilter.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUser +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip18Reposts.GenericRepostEvent import com.vitorpamplona.quartz.nip18Reposts.RepostEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileBookmarksFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileBookmarksFeedFilter.kt index 0e9590995..7270b22f3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileBookmarksFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileBookmarksFeedFilter.kt @@ -24,8 +24,8 @@ import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses -import com.vitorpamplona.quartz.nip01Core.events.taggedEvents +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents class UserProfileBookmarksFeedFilter( val user: User, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt index 16fb34d01..19c6e1e62 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt @@ -29,7 +29,7 @@ import com.vitorpamplona.quartz.experimental.audio.AudioHeaderEvent import com.vitorpamplona.quartz.experimental.audio.AudioTrackEvent import com.vitorpamplona.quartz.experimental.interactiveStories.InteractiveStoryPrologueEvent import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import com.vitorpamplona.quartz.nip18Reposts.GenericRepostEvent import com.vitorpamplona.quartz.nip18Reposts.RepostEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileReportsFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileReportsFeedFilter.kt index 454eb3152..f44d734f2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileReportsFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileReportsFeedFilter.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.ui.dal import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUser +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser import com.vitorpamplona.quartz.nip56Reports.ReportEvent class UserProfileReportsFeedFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/VideoFeedFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/VideoFeedFilter.kt index eadbaee62..1c73d589a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/VideoFeedFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/dal/VideoFeedFilter.kt @@ -27,7 +27,7 @@ import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.service.SUPPORTED_VIDEO_FEED_MIME_TYPES_SET import com.vitorpamplona.quartz.experimental.nip95.FileStorageHeaderEvent -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip51Lists.MuteListEvent import com.vitorpamplona.quartz.nip51Lists.PeopleListEvent import com.vitorpamplona.quartz.nip68Picture.PictureEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AccountSwitchBottomSheet.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AccountSwitchBottomSheet.kt index a1d14f0f3..b43c3ba47 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AccountSwitchBottomSheet.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AccountSwitchBottomSheet.kt @@ -71,7 +71,7 @@ import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.AccountPictureModifier import com.vitorpamplona.amethyst.ui.theme.Size10dp import com.vitorpamplona.amethyst.ui.theme.Size55dp -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePublicKeyAsHexOrNull +import com.vitorpamplona.quartz.nip19Bech32.decodePublicKeyAsHexOrNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt index 02478658a..9e9582a49 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt @@ -81,7 +81,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.threadview.ThreadScreen import com.vitorpamplona.amethyst.ui.screen.loggedIn.video.VideoScreen import com.vitorpamplona.amethyst.ui.screen.loggedOff.AddAccountDialog import com.vitorpamplona.amethyst.ui.uriToRoute -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser import kotlinx.coroutines.delay import kotlinx.coroutines.launch import java.net.URI diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt index cbb6029ce..817aeb1ec 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt @@ -113,7 +113,7 @@ import com.vitorpamplona.amethyst.ui.theme.profileContentHeaderModifier import com.vitorpamplona.amethyst.ui.tor.ConnectTorDialog import com.vitorpamplona.ammolite.relays.RelayPoolStatus import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip02FollowList.ImmutableListOfLists @Composable diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/RouteMaker.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/RouteMaker.kt index f3c4e358d..e64e4c701 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/RouteMaker.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/RouteMaker.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip17Dm.ChatroomKey import com.vitorpamplona.quartz.nip17Dm.ChatroomKeyable diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Loaders.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Loaders.kt index b0c232a27..556b522d4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Loaders.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Loaders.kt @@ -39,7 +39,7 @@ import com.vitorpamplona.amethyst.service.CachedGeoLocations import com.vitorpamplona.amethyst.ui.components.GenericLoadable import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.notifications.equalImmutableLists -import com.vitorpamplona.quartz.nip01Core.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.Dispatchers diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt index a7caf54fc..83a1c9143 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt @@ -73,9 +73,9 @@ import com.vitorpamplona.amethyst.ui.theme.lessImportantLink import com.vitorpamplona.amethyst.ui.theme.nip05 import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.quartz.nip01Core.UserMetadata -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.firstTaggedAddress -import com.vitorpamplona.quartz.nip01Core.events.firstTaggedEvent +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.firstTaggedAddress +import com.vitorpamplona.quartz.nip01Core.tags.events.firstTaggedEvent import com.vitorpamplona.quartz.nip38UserStatus.StatusEvent import com.vitorpamplona.quartz.utils.TimeUtils import kotlinx.collections.immutable.ImmutableList diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 38ceac260..b3b6955e2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -157,8 +157,8 @@ import com.vitorpamplona.quartz.experimental.interactiveStories.InteractiveStory import com.vitorpamplona.quartz.experimental.medical.FhirResourceEvent import com.vitorpamplona.quartz.experimental.nip95.FileStorageHeaderEvent import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent -import com.vitorpamplona.quartz.nip01Core.addressables.isTaggedAddressableKind -import com.vitorpamplona.quartz.nip01Core.geohash.getGeoHash +import com.vitorpamplona.quartz.nip01Core.tags.addressables.isTaggedAddressableKind +import com.vitorpamplona.quartz.nip01Core.tags.geohash.getGeoHash import com.vitorpamplona.quartz.nip04Dm.PrivateDmEvent import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteQuickActionMenu.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteQuickActionMenu.kt index dab45d740..02dd65b5f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteQuickActionMenu.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteQuickActionMenu.kt @@ -97,7 +97,7 @@ import com.vitorpamplona.amethyst.ui.theme.isLight import com.vitorpamplona.amethyst.ui.theme.secondaryButtonBackground import com.vitorpamplona.quartz.experimental.audio.AudioTrackEvent import com.vitorpamplona.quartz.experimental.bounties.getReward -import com.vitorpamplona.quartz.nip19Bech32Entities.toNAddr +import com.vitorpamplona.quartz.nip19Bech32.toNAddr import com.vitorpamplona.quartz.nip51Lists.PeopleListEvent import com.vitorpamplona.quartz.nip94FileMetadata.FileHeaderEvent import kotlinx.coroutines.launch diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ShowEmojiSuggestionList.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ShowEmojiSuggestionList.kt index adef49621..aae7ebd3b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ShowEmojiSuggestionList.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ShowEmojiSuggestionList.kt @@ -53,7 +53,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.gallery.UrlImageVie import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.Size10dp -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiPackSelectionEvent import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.Flow diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateReactionTypeDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateReactionTypeDialog.kt index c1b579a76..2aba7ad5c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateReactionTypeDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateReactionTypeDialog.kt @@ -86,8 +86,8 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.SaveButton import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.ButtonBorder import com.vitorpamplona.amethyst.ui.theme.placeholderText -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses import com.vitorpamplona.quartz.nip30CustomEmoji.CustomEmoji import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiPackSelectionEvent import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt index 738899202..f7b4ff8ee 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt @@ -99,8 +99,8 @@ 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.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePrivateKeyAsHexOrNull -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePublicKey +import com.vitorpamplona.quartz.nip19Bech32.decodePrivateKeyAsHexOrNull +import com.vitorpamplona.quartz.nip19Bech32.decodePublicKey import com.vitorpamplona.quartz.nip47WalletConnect.Nip47WalletConnect import com.vitorpamplona.quartz.nip57Zaps.LnZapEvent import com.vitorpamplona.quartz.nip65RelayList.RelayUrlFormatter diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayCommunity.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayCommunity.kt index 63466220e..e8879681e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayCommunity.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayCommunity.kt @@ -33,8 +33,8 @@ import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.HalfStartPadding -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.getTagOfAddressableKind +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.getTagOfAddressableKind import com.vitorpamplona.quartz.nip72ModCommunities.CommunityDefinitionEvent @Composable diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayHashtags.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayHashtags.kt index ac7a4372d..efc0aaaf2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayHashtags.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayHashtags.kt @@ -38,7 +38,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel -import com.vitorpamplona.quartz.nip01Core.hashtags.firstIsTaggedHashes +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.firstIsTaggedHashes @Composable fun DisplayFollowingHashtagsInPost( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayUncitedHashtags.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayUncitedHashtags.kt index 3cc0bfe0c..7f71aa4f7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayUncitedHashtags.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DisplayUncitedHashtags.kt @@ -36,7 +36,7 @@ import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.theme.HalfTopPadding import com.vitorpamplona.amethyst.ui.theme.lessImportantLink import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.hashtags.hashtags +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hashtags import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/AudioTrack.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/AudioTrack.kt index d023307f9..704dd48a2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/AudioTrack.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/AudioTrack.kt @@ -55,7 +55,7 @@ import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.quartz.experimental.audio.AudioHeaderEvent import com.vitorpamplona.quartz.experimental.audio.AudioTrackEvent import com.vitorpamplona.quartz.experimental.audio.Participant -import com.vitorpamplona.quartz.nip01Core.hashtags.hasHashtags +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hasHashtags import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import com.vitorpamplona.quartz.nip14Subject.subject import kotlinx.collections.immutable.toImmutableList diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/CommunityHeader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/CommunityHeader.kt index ba8a616e9..528d39188 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/CommunityHeader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/CommunityHeader.kt @@ -76,7 +76,7 @@ import com.vitorpamplona.amethyst.ui.theme.Size5dp import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer import com.vitorpamplona.amethyst.ui.theme.innerPostModifier import com.vitorpamplona.quartz.experimental.audio.Participant -import com.vitorpamplona.quartz.nip01Core.hashtags.hasHashtags +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hasHashtags import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip14Subject.subject import com.vitorpamplona.quartz.nip72ModCommunities.CommunityDefinitionEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Emoji.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Emoji.kt index 8ed2e1e06..41cbe7dd6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Emoji.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Emoji.kt @@ -56,8 +56,8 @@ import com.vitorpamplona.amethyst.ui.note.elements.RemoveButton import com.vitorpamplona.amethyst.ui.note.getGradient import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.Size35Modifier -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.isTaggedAddressableNote +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.isTaggedAddressableNote import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiPackEvent import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiPackSelectionEvent import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Git.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Git.kt index 50955515c..fcab0a63f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Git.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Git.kt @@ -61,7 +61,7 @@ import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.amethyst.ui.theme.replyModifier import com.vitorpamplona.amethyst.ui.theme.subtleBorder -import com.vitorpamplona.quartz.nip01Core.hashtags.hasHashtags +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hasHashtags import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Highlight.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Highlight.kt index 7a1aa4d9b..6f4007870 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Highlight.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Highlight.kt @@ -54,11 +54,11 @@ import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.navigation.routeFor import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.core.firstTagValueFor +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.toNIP19 +import com.vitorpamplona.quartz.nip19Bech32.toNIP19 import com.vitorpamplona.quartz.nip84Highlights.HighlightEvent import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/NIP90ContentDiscoveryResponse.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/NIP90ContentDiscoveryResponse.kt index 2305a8184..d1c857771 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/NIP90ContentDiscoveryResponse.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/NIP90ContentDiscoveryResponse.kt @@ -32,7 +32,7 @@ import com.vitorpamplona.amethyst.ui.components.TranslatableRichTextViewer import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.note.elements.DisplayUncitedHashtags import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel -import com.vitorpamplona.quartz.nip01Core.hashtags.hasHashtags +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hasHashtags import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import com.vitorpamplona.quartz.nip90Dvms.NIP90ContentDiscoveryResponseEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Poll.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Poll.kt index acf933fa9..555b2eae3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Poll.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Poll.kt @@ -43,8 +43,8 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent -import com.vitorpamplona.quartz.nip01Core.hashtags.hasHashtags -import com.vitorpamplona.quartz.nip01Core.people.hasAnyTaggedUser +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hasHashtags +import com.vitorpamplona.quartz.nip01Core.tags.people.hasAnyTaggedUser import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import com.vitorpamplona.quartz.nip72ModCommunities.CommunityDefinitionEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/PrivateMessage.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/PrivateMessage.kt index 47de87957..da8310554 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/PrivateMessage.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/PrivateMessage.kt @@ -48,12 +48,12 @@ import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.amethyst.ui.theme.replyModifier -import com.vitorpamplona.quartz.nip01Core.hashtags.hasHashtags +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hasHashtags import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import com.vitorpamplona.quartz.nip04Dm.PrivateDmEvent import com.vitorpamplona.quartz.nip17Dm.ChatroomKeyable -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip19Bech32.toNpub @Composable fun RenderPrivateMessage( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Text.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Text.kt index 5f89e2a7e..6157de2b6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Text.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Text.kt @@ -45,8 +45,8 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.hashtags.hasHashtags -import com.vitorpamplona.quartz.nip01Core.people.hasAnyTaggedUser +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hasHashtags +import com.vitorpamplona.quartz.nip01Core.tags.people.hasAnyTaggedUser import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Video.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Video.kt index 70d62a1a9..6259245d5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Video.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Video.kt @@ -58,7 +58,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.Size5dp import com.vitorpamplona.amethyst.ui.theme.imageModifier -import com.vitorpamplona.quartz.nip01Core.hashtags.hasHashtags +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hasHashtags import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import com.vitorpamplona.quartz.nip71Video.VideoEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt index 6c22d9b81..5e2412e03 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt @@ -36,9 +36,8 @@ import com.vitorpamplona.amethyst.service.Nip05NostrAddressVerifier import com.vitorpamplona.amethyst.ui.tor.TorSettings import com.vitorpamplona.amethyst.ui.tor.TorSettingsFlow import com.vitorpamplona.ammolite.relays.Constants -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.Hex -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.MetadataEvent import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync @@ -46,18 +45,19 @@ import com.vitorpamplona.quartz.nip01Core.toHexKey import com.vitorpamplona.quartz.nip02FollowList.Contact import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent import com.vitorpamplona.quartz.nip17Dm.ChatMessageRelayListEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.bechToBytes -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NRelay -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NSec -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.NRelay +import com.vitorpamplona.quartz.nip19Bech32.entities.NSec +import com.vitorpamplona.quartz.nip19Bech32.toNpub import com.vitorpamplona.quartz.nip50Search.SearchRelayListEvent import com.vitorpamplona.quartz.nip65RelayList.AdvertisedRelayListEvent +import com.vitorpamplona.quartz.utils.Hex import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.FlowPreview @@ -110,7 +110,7 @@ class AccountStateViewModel : ViewModel() { is NSec -> null is NPub -> parsed.hex.hexToByteArray() is NProfile -> parsed.hex.hexToByteArray() - is com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note -> null + is com.vitorpamplona.quartz.nip19Bech32.entities.Note -> null is NEvent -> null is NEmbed -> null is NRelay -> null diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt index accd41e71..a632bea32 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt @@ -102,9 +102,9 @@ import com.vitorpamplona.amethyst.ui.theme.ButtonPadding import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonRow import com.vitorpamplona.amethyst.ui.theme.grayText import com.vitorpamplona.amethyst.ui.theme.placeholderText -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.toNsec +import com.vitorpamplona.quartz.nip19Bech32.toNsec import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt index 712b60989..e59853f4b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt @@ -72,30 +72,30 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.notifications.showAmountAxi import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.tor.TorSettings import com.vitorpamplona.ammolite.relays.BundledInsert -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.experimental.audio.Participant import com.vitorpamplona.quartz.experimental.interactiveStories.InteractiveStoryBaseEvent import com.vitorpamplona.quartz.experimental.interactiveStories.InteractiveStoryReadingStateEvent import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.UserMetadata -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUser +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser import com.vitorpamplona.quartz.nip11RelayInfo.Nip11RelayInformation import com.vitorpamplona.quartz.nip17Dm.ChatMessageRelayListEvent import com.vitorpamplona.quartz.nip17Dm.ChatroomKey import com.vitorpamplona.quartz.nip17Dm.ChatroomKeyable import com.vitorpamplona.quartz.nip18Reposts.GenericRepostEvent import com.vitorpamplona.quartz.nip18Reposts.RepostEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NRelay -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NSec +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.NRelay +import com.vitorpamplona.quartz.nip19Bech32.entities.NSec import com.vitorpamplona.quartz.nip37Drafts.DraftEvent import com.vitorpamplona.quartz.nip47WalletConnect.Response import com.vitorpamplona.quartz.nip50Search.SearchRelayListEvent @@ -1677,7 +1677,7 @@ class AccountViewModel( is NSec -> {} is NPub -> {} is NProfile -> {} - is com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note -> { + is com.vitorpamplona.quartz.nip19Bech32.entities.Note -> { LocalCache.checkGetOrCreateNote(parsed.hex)?.let { note -> returningNote = note } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chatrooms/ChannelScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chatrooms/ChannelScreen.kt index 9808dc4b7..e5eecb4bd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chatrooms/ChannelScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chatrooms/ChannelScreen.kt @@ -166,8 +166,8 @@ import com.vitorpamplona.amethyst.ui.theme.innerPostModifier import com.vitorpamplona.amethyst.ui.theme.liveStreamTag import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.quartz.experimental.audio.Participant -import com.vitorpamplona.quartz.nip01Core.events.isTaggedEvent -import com.vitorpamplona.quartz.nip01Core.hashtags.hasHashtags +import com.vitorpamplona.quartz.nip01Core.tags.events.isTaggedEvent +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hasHashtags import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip02FollowList.toImmutableListOfLists import com.vitorpamplona.quartz.nip10Notes.findURLs diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/notifications/NotificationSummaryState.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/notifications/NotificationSummaryState.kt index 37008a17e..150691d95 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/notifications/NotificationSummaryState.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/notifications/NotificationSummaryState.kt @@ -35,7 +35,7 @@ import com.vitorpamplona.amethyst.service.checkNotInMainThread import com.vitorpamplona.amethyst.ui.note.showCount import com.vitorpamplona.ammolite.relays.BundledInsert import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUser +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip18Reposts.GenericRepostEvent import com.vitorpamplona.quartz.nip18Reposts.RepostEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/ProfileScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/ProfileScreen.kt index 7c0c0cb4a..c0c188f1b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/ProfileScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/ProfileScreen.kt @@ -176,8 +176,8 @@ import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer import com.vitorpamplona.amethyst.ui.theme.ZeroPadding import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.amethyst.ui.theme.userProfileBorderModifier -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses -import com.vitorpamplona.quartz.nip01Core.events.taggedEvents +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents import com.vitorpamplona.quartz.nip02FollowList.EmptyTagList import com.vitorpamplona.quartz.nip39ExtIdentities.GitHubIdentity import com.vitorpamplona.quartz.nip39ExtIdentities.IdentityClaim diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/ThreadFeedView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/ThreadFeedView.kt index 63754128e..d716d4a5e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/ThreadFeedView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/ThreadFeedView.kt @@ -171,9 +171,9 @@ import com.vitorpamplona.quartz.experimental.interactiveStories.InteractiveStory import com.vitorpamplona.quartz.experimental.medical.FhirResourceEvent import com.vitorpamplona.quartz.experimental.nip95.FileStorageHeaderEvent import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent -import com.vitorpamplona.quartz.nip01Core.addressables.isTaggedAddressableKind import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.geohash.getGeoHash +import com.vitorpamplona.quartz.nip01Core.tags.addressables.isTaggedAddressableKind +import com.vitorpamplona.quartz.nip01Core.tags.geohash.getGeoHash import com.vitorpamplona.quartz.nip04Dm.PrivateDmEvent import com.vitorpamplona.quartz.nip13Pow.getPoWRank import com.vitorpamplona.quartz.nip17Dm.ChatMessageRelayListEvent diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt index 2a270e7f1..b200a8b8c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt @@ -105,7 +105,7 @@ import com.vitorpamplona.amethyst.ui.theme.Size40dp import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonRow import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.amethyst.ui.tor.TorSettings -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser import com.vitorpamplona.quartz.nip55AndroidSigner.ExternalSignerLauncher import com.vitorpamplona.quartz.nip55AndroidSigner.SignerType import kotlinx.coroutines.CancellationException diff --git a/amethyst/src/test/java/com/vitorpamplona/amethyst/NewMessageTaggerKeyParseTest.kt b/amethyst/src/test/java/com/vitorpamplona/amethyst/NewMessageTaggerKeyParseTest.kt index df7969f01..dc17c9c7d 100644 --- a/amethyst/src/test/java/com/vitorpamplona/amethyst/NewMessageTaggerKeyParseTest.kt +++ b/amethyst/src/test/java/com/vitorpamplona/amethyst/NewMessageTaggerKeyParseTest.kt @@ -23,8 +23,8 @@ package com.vitorpamplona.amethyst import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.ui.actions.Dao import com.vitorpamplona.amethyst.ui.actions.NewMessageTagger -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.Note import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/BechBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/BechBenchmark.kt index ee5df1d89..207509b88 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/BechBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/BechBenchmark.kt @@ -23,9 +23,9 @@ package com.vitorpamplona.quartz.benchmark import androidx.benchmark.junit4.BenchmarkRule import androidx.benchmark.junit4.measureRepeated import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.Hex -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.bechToBytes -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes +import com.vitorpamplona.quartz.nip19Bech32.toNpub +import com.vitorpamplona.quartz.utils.Hex import junit.framework.TestCase.assertEquals import org.junit.Rule import org.junit.Test diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/CryptoBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/CryptoBenchmark.kt index 111fc6ad5..2f35046d0 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/CryptoBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/CryptoBenchmark.kt @@ -23,8 +23,8 @@ package com.vitorpamplona.quartz.benchmark import androidx.benchmark.junit4.BenchmarkRule import androidx.benchmark.junit4.measureRepeated import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.nip01Core.KeyPair import junit.framework.TestCase.assertNotNull import org.junit.Rule import org.junit.Test diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/EventBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/EventBenchmark.kt index 370d9d0d9..495bae102 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/EventBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/EventBenchmark.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.benchmark import androidx.benchmark.junit4.BenchmarkRule import androidx.benchmark.junit4.measureRepeated import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.nip01Core.EventFactory +import com.vitorpamplona.quartz.EventFactory import com.vitorpamplona.quartz.nip01Core.hasValidSignature import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapBenchmark.kt index f1dc8d6b2..8bacb8858 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapBenchmark.kt @@ -23,8 +23,8 @@ package com.vitorpamplona.quartz.benchmark import androidx.benchmark.junit4.BenchmarkRule import androidx.benchmark.junit4.measureRepeated import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.checkSignature import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapReceivingBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapReceivingBenchmark.kt index 4426e7dac..8cc11d436 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapReceivingBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapReceivingBenchmark.kt @@ -23,8 +23,8 @@ package com.vitorpamplona.quartz.benchmark import androidx.benchmark.junit4.BenchmarkRule import androidx.benchmark.junit4.measureRepeated import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.hasCorrectIDHash import com.vitorpamplona.quartz.nip01Core.hasVerifiedSignature diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapSigningBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapSigningBenchmark.kt index 87880403b..193c0985f 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapSigningBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/GiftWrapSigningBenchmark.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.benchmark import androidx.benchmark.junit4.BenchmarkRule import androidx.benchmark.junit4.measureRepeated import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip17Dm.ChatMessageEvent import com.vitorpamplona.quartz.nip59Giftwrap.GiftWrapEvent diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/HexBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/HexBenchmark.kt index 74b52f9c2..b18ca104f 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/HexBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/HexBenchmark.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.benchmark import androidx.benchmark.junit4.BenchmarkRule import androidx.benchmark.junit4.measureRepeated import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.Hex +import com.vitorpamplona.quartz.utils.Hex import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/Sha256Benchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/Sha256Benchmark.kt index 1c99033e3..3fbd26471 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/Sha256Benchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/Sha256Benchmark.kt @@ -23,9 +23,9 @@ package com.vitorpamplona.quartz.benchmark import androidx.benchmark.junit4.BenchmarkRule import androidx.benchmark.junit4.measureRepeated import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.sha256Hash import com.vitorpamplona.quartz.nip01Core.EventHasher import com.vitorpamplona.quartz.nip01Core.core.Event +import com.vitorpamplona.quartz.utils.sha256Hash import junit.framework.TestCase.assertNotNull import org.junit.Rule import org.junit.Test diff --git a/commons/src/main/java/com/vitorpamplona/amethyst/commons/data/DeletionIndex.kt b/commons/src/main/java/com/vitorpamplona/amethyst/commons/data/DeletionIndex.kt index 6bb41330a..984de380e 100644 --- a/commons/src/main/java/com/vitorpamplona/amethyst/commons/data/DeletionIndex.kt +++ b/commons/src/main/java/com/vitorpamplona/amethyst/commons/data/DeletionIndex.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.amethyst.commons.data import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip09Deletions.DeletionEvent diff --git a/commons/src/main/java/com/vitorpamplona/amethyst/commons/robohash/RobohashAssembler.kt b/commons/src/main/java/com/vitorpamplona/amethyst/commons/robohash/RobohashAssembler.kt index 9406a1b5b..a07bb1f8d 100644 --- a/commons/src/main/java/com/vitorpamplona/amethyst/commons/robohash/RobohashAssembler.kt +++ b/commons/src/main/java/com/vitorpamplona/amethyst/commons/robohash/RobohashAssembler.kt @@ -85,8 +85,8 @@ import com.vitorpamplona.amethyst.commons.robohash.parts.mouth6Cell import com.vitorpamplona.amethyst.commons.robohash.parts.mouth7Happy import com.vitorpamplona.amethyst.commons.robohash.parts.mouth8Buttons import com.vitorpamplona.amethyst.commons.robohash.parts.mouth9Closed -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.Hex +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.utils.Hex val Black = SolidColor(Color.Black) val Gray = SolidColor(Color(0xFF6d6e70)) diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/CryptoUtilsTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/CryptoUtilsTest.kt similarity index 98% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/CryptoUtilsTest.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/CryptoUtilsTest.kt index b62c4115b..ababe2c5d 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/CryptoUtilsTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/CryptoUtilsTest.kt @@ -18,9 +18,10 @@ * 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.quartz.crypto +package com.vitorpamplona.quartz import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.toHexKey import org.junit.Assert.assertEquals diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/LargeDBSignatureCheck.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/LargeDBSignatureCheck.kt similarity index 98% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/LargeDBSignatureCheck.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/LargeDBSignatureCheck.kt index 1ed11d63d..a80729109 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/LargeDBSignatureCheck.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/LargeDBSignatureCheck.kt @@ -18,7 +18,7 @@ * 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.quartz.crypto +package com.vitorpamplona.quartz import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/bloom/BloomFilter.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/bloom/BloomFilter.kt index f22011f78..d41e4d628 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/bloom/BloomFilter.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/bloom/BloomFilter.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.bloom import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.hexToByteArray import junit.framework.TestCase.assertEquals diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/encoders/LnInvoiceUtilTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/lightning/LnInvoiceUtilTest.kt similarity index 96% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/encoders/LnInvoiceUtilTest.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/lightning/LnInvoiceUtilTest.kt index 89b57313b..eca01e557 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/encoders/LnInvoiceUtilTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/lightning/LnInvoiceUtilTest.kt @@ -18,10 +18,9 @@ * 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.quartz.encoders +package com.vitorpamplona.quartz.lightning import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.lightning.LnInvoiceUtil import org.junit.Assert import org.junit.Test import org.junit.runner.RunWith diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/EventSigCheck.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip01Core/EventSigCheck.kt similarity index 97% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/events/EventSigCheck.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip01Core/EventSigCheck.kt index 771323d8e..2dc9213a1 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/EventSigCheck.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip01Core/EventSigCheck.kt @@ -18,10 +18,9 @@ * 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.quartz.events +package com.vitorpamplona.quartz.nip01Core import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.nip01Core.checkSignature import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper import org.junit.Test import org.junit.runner.RunWith diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip01/Nip01Test.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip01Core/Nip01Test.kt similarity index 94% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip01/Nip01Test.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip01Core/Nip01Test.kt index 6e31fcaf6..e4fa35b21 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip01/Nip01Test.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip01Core/Nip01Test.kt @@ -18,13 +18,10 @@ * 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.quartz.crypto.nip01 +package com.vitorpamplona.quartz.nip01Core import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.sha256Hash -import com.vitorpamplona.quartz.nip01Core.Nip01 -import com.vitorpamplona.quartz.nip01Core.hexToByteArray -import com.vitorpamplona.quartz.nip01Core.toHexKey +import com.vitorpamplona.quartz.utils.sha256Hash import fr.acinq.secp256k1.Secp256k1 import org.junit.Assert.assertEquals import org.junit.Assert.assertNotEquals diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip03Timestamp/ots/OtsTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip03Timestamp/ots/OtsTest.kt index 5902ec18c..05151a22f 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip03Timestamp/ots/OtsTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip03Timestamp/ots/OtsTest.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip03Timestamp.ots import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip03Timestamp.OtsEvent diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip04/Nip04Test.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip04Dm/Nip04Test.kt similarity index 98% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip04/Nip04Test.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip04Dm/Nip04Test.kt index eac63bae5..7a5ef8d5f 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip04/Nip04Test.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip04Dm/Nip04Test.kt @@ -18,12 +18,11 @@ * 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.quartz.crypto.nip04 +package com.vitorpamplona.quartz.nip04Dm import com.vitorpamplona.quartz.nip01Core.Nip01 import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip04Dm.Nip04 import fr.acinq.secp256k1.Secp256k1 import junit.framework.TestCase.assertEquals import junit.framework.TestCase.assertTrue diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Bip32SeedDerivationTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip32SeedDerivationTest.kt similarity index 93% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Bip32SeedDerivationTest.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip32SeedDerivationTest.kt index 5fe81aee8..a1fef7a1d 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Bip32SeedDerivationTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip32SeedDerivationTest.kt @@ -18,13 +18,10 @@ * 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.quartz.crypto.nip06 +package com.vitorpamplona.quartz.nip06KeyDerivation import androidx.test.ext.junit.runners.AndroidJUnit4 import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip06KeyDerivation.Bip32SeedDerivation -import com.vitorpamplona.quartz.nip06KeyDerivation.Bip39Mnemonics -import com.vitorpamplona.quartz.nip06KeyDerivation.KeyPath import fr.acinq.secp256k1.Secp256k1 import junit.framework.TestCase.assertEquals import org.junit.Test diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Bip39KeyPathTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39KeyPathTest.kt similarity index 93% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Bip39KeyPathTest.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39KeyPathTest.kt index 05c43a2ff..fb738d603 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Bip39KeyPathTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39KeyPathTest.kt @@ -18,11 +18,9 @@ * 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.quartz.crypto.nip06 +package com.vitorpamplona.quartz.nip06KeyDerivation import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.nip06KeyDerivation.Hardener -import com.vitorpamplona.quartz.nip06KeyDerivation.KeyPath import junit.framework.TestCase.assertEquals import org.junit.Test import org.junit.runner.RunWith diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Bip39MnemonicsTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39MnemonicsTest.kt similarity index 96% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Bip39MnemonicsTest.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39MnemonicsTest.kt index b8744c17b..1aaa0eaa5 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Bip39MnemonicsTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39MnemonicsTest.kt @@ -18,15 +18,14 @@ * 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.quartz.crypto.nip06 +package com.vitorpamplona.quartz.nip06KeyDerivation import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.Hex +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip06KeyDerivation.Bip39Mnemonics +import com.vitorpamplona.quartz.utils.Hex import junit.framework.TestCase.assertEquals import junit.framework.TestCase.assertTrue import junit.framework.TestCase.fail diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Nip06Test.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Nip06Test.kt similarity index 97% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Nip06Test.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Nip06Test.kt index 265cb55ad..2466e84da 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip06/Nip06Test.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip06KeyDerivation/Nip06Test.kt @@ -18,11 +18,10 @@ * 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.quartz.crypto.nip06 +package com.vitorpamplona.quartz.nip06KeyDerivation import androidx.test.ext.junit.runners.AndroidJUnit4 import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip06KeyDerivation.Nip06 import fr.acinq.secp256k1.Secp256k1 import junit.framework.TestCase.assertEquals import org.junit.Ignore diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/CitationTests.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip10Notes/CitationTests.kt similarity index 97% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/events/CitationTests.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip10Notes/CitationTests.kt index c92642fdb..34ba5aaeb 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/CitationTests.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip10Notes/CitationTests.kt @@ -18,11 +18,10 @@ * 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.quartz.events +package com.vitorpamplona.quartz.nip10Notes import androidx.test.ext.junit.runners.AndroidJUnit4 import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper -import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import junit.framework.TestCase.assertEquals import org.junit.Test import org.junit.runner.RunWith diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip17/AESGCMTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip17Dm/AESGCMTest.kt similarity index 95% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip17/AESGCMTest.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip17Dm/AESGCMTest.kt index 1ae3e9928..746196fb4 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip17/AESGCMTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip17Dm/AESGCMTest.kt @@ -18,12 +18,11 @@ * 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.quartz.crypto.nip17 +package com.vitorpamplona.quartz.nip17Dm import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation import com.vitorpamplona.quartz.nip01Core.hexToByteArray -import com.vitorpamplona.quartz.nip17Dm.AESGCM import junit.framework.TestCase.assertEquals import org.junit.Test import org.junit.runner.RunWith diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/ChatroomKeyTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip17Dm/ChatroomKeyTest.kt similarity index 94% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/events/ChatroomKeyTest.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip17Dm/ChatroomKeyTest.kt index 948c2b175..747271afc 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/ChatroomKeyTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip17Dm/ChatroomKeyTest.kt @@ -18,10 +18,9 @@ * 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.quartz.events +package com.vitorpamplona.quartz.nip17Dm import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.nip17Dm.ChatroomKey import kotlinx.collections.immutable.persistentSetOf import org.junit.Assert.assertEquals import org.junit.Test diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/encoders/NIP19EmbedTests.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip19bech32/NIP19EmbedTests.kt similarity index 96% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/encoders/NIP19EmbedTests.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip19bech32/NIP19EmbedTests.kt index ca48e5e11..9570e4282 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/encoders/NIP19EmbedTests.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip19bech32/NIP19EmbedTests.kt @@ -18,20 +18,20 @@ * 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.quartz.encoders +package com.vitorpamplona.quartz.nip19bech32 import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.Hex -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.experimental.medical.FhirResourceEvent +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.hasValidSignature import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePrivateKeyAsHexOrNull -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.decodePrivateKeyAsHexOrNull +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.utils.Hex import junit.framework.TestCase.assertEquals import junit.framework.TestCase.assertNotNull import junit.framework.TestCase.assertTrue diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip44/NIP44v2Test.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip44Encryption/NIP44v2Test.kt similarity index 97% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip44/NIP44v2Test.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip44Encryption/NIP44v2Test.kt index cf42324d4..29e867baa 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip44/NIP44v2Test.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip44Encryption/NIP44v2Test.kt @@ -18,17 +18,16 @@ * 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.quartz.crypto.nip44 +package com.vitorpamplona.quartz.nip44Encryption import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper -import com.vitorpamplona.quartz.crypto.KeyPair -import com.vitorpamplona.quartz.crypto.sha256Hash +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.Nip01 import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip44Encryption.Nip44v2 +import com.vitorpamplona.quartz.utils.sha256Hash import fr.acinq.secp256k1.Secp256k1 import junit.framework.TestCase.assertEquals import junit.framework.TestCase.assertNotNull diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip44/TestPackageClasses.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip44Encryption/TestPackageClasses.kt similarity index 98% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip44/TestPackageClasses.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip44Encryption/TestPackageClasses.kt index 4e86da5be..8b373342f 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip44/TestPackageClasses.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip44Encryption/TestPackageClasses.kt @@ -18,7 +18,7 @@ * 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.quartz.crypto.nip44 +package com.vitorpamplona.quartz.nip44Encryption import com.fasterxml.jackson.annotation.JsonProperty diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/nip46/Nip46Test.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip46RemoteSigner/Nip46Test.kt similarity index 85% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/events/nip46/Nip46Test.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip46RemoteSigner/Nip46Test.kt index 0de6def6d..b7968c0f7 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/nip46/Nip46Test.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip46RemoteSigner/Nip46Test.kt @@ -18,32 +18,13 @@ * 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.quartz.events.nip46 +package com.vitorpamplona.quartz.nip46RemoteSigner import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerMessage -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestConnect -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestGetPublicKey -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestGetRelays -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestNip04Decrypt -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestNip04Encrypt -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestNip44Decrypt -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestNip44Encrypt -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestPing -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestSign -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerResponseAck -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerResponseDecrypt -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerResponseEncrypt -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerResponseError -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerResponseEvent -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerResponseGetRelays -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerResponsePong -import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerResponsePublicKey -import com.vitorpamplona.quartz.nip46RemoteSigner.NostrConnectEvent import com.vitorpamplona.quartz.utils.TimeUtils import junit.framework.TestCase.assertEquals import org.junit.Ignore diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip49/NIP49Test.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip49PrivKeyEnc/NIP49Test.kt similarity index 98% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip49/NIP49Test.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip49PrivKeyEnc/NIP49Test.kt index faeaff138..3985842c0 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/crypto/nip49/NIP49Test.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip49PrivKeyEnc/NIP49Test.kt @@ -18,11 +18,10 @@ * 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.quartz.crypto.nip49 +package com.vitorpamplona.quartz.nip49PrivKeyEnc import androidx.test.ext.junit.runners.AndroidJUnit4 import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip49PrivKeyEnc.Nip49 import fr.acinq.secp256k1.Secp256k1 import junit.framework.TestCase.assertEquals import junit.framework.TestCase.assertNotNull diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/PrivateZapTests.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapTests.kt similarity index 96% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/events/PrivateZapTests.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapTests.kt index ccda59c56..d8a96b0b3 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/PrivateZapTests.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapTests.kt @@ -18,18 +18,17 @@ * 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.quartz.events +package com.vitorpamplona.quartz.nip57Zaps import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.Hex -import com.vitorpamplona.quartz.crypto.KeyPair +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip57Zaps.LnZapEvent -import com.vitorpamplona.quartz.nip57Zaps.LnZapRequestEvent import com.vitorpamplona.quartz.nip57Zaps.PrivateZapEncryption.Companion.createEncryptionPrivateKey +import com.vitorpamplona.quartz.nip59GiftWraps.wait1SecondForResult +import com.vitorpamplona.quartz.utils.Hex import junit.framework.TestCase.assertNotNull import junit.framework.TestCase.fail import org.junit.Test diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/GiftWrapEventTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip59GiftWraps/GiftWrapEventTest.kt similarity index 99% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/events/GiftWrapEventTest.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/nip59GiftWraps/GiftWrapEventTest.kt index fc0b23a39..2157e1aeb 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/events/GiftWrapEventTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/nip59GiftWraps/GiftWrapEventTest.kt @@ -18,21 +18,21 @@ * 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.quartz.events +package com.vitorpamplona.quartz.nip59GiftWraps import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.Hex -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.checkSignature import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.hexToByteArray -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUser import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser import com.vitorpamplona.quartz.nip17Dm.ChatMessageEvent import com.vitorpamplona.quartz.nip17Dm.NIP17Factory import com.vitorpamplona.quartz.nip59Giftwrap.GiftWrapEvent import com.vitorpamplona.quartz.nip59Giftwrap.SealedGossipEvent +import com.vitorpamplona.quartz.utils.Hex import org.junit.Assert.assertEquals import org.junit.Assert.assertNotEquals import org.junit.Assert.assertNotNull diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/encoders/HexEncodingTest.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/utils/HexEncodingTest.kt similarity index 96% rename from quartz/src/androidTest/java/com/vitorpamplona/quartz/encoders/HexEncodingTest.kt rename to quartz/src/androidTest/java/com/vitorpamplona/quartz/utils/HexEncodingTest.kt index 3dbae038d..2b6d50ce0 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/encoders/HexEncodingTest.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/utils/HexEncodingTest.kt @@ -18,11 +18,10 @@ * 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.quartz.encoders +package com.vitorpamplona.quartz.utils import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.Hex +import com.vitorpamplona.quartz.CryptoUtils import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/CryptoUtils.kt b/quartz/src/main/java/com/vitorpamplona/quartz/CryptoUtils.kt similarity index 97% rename from quartz/src/main/java/com/vitorpamplona/quartz/crypto/CryptoUtils.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/CryptoUtils.kt index af11c1cf9..08dab6a15 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/CryptoUtils.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/CryptoUtils.kt @@ -18,7 +18,7 @@ * 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.quartz.crypto +package com.vitorpamplona.quartz import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.Nip01 @@ -27,6 +27,8 @@ import com.vitorpamplona.quartz.nip06KeyDerivation.Nip06 import com.vitorpamplona.quartz.nip44Encryption.Nip44 import com.vitorpamplona.quartz.nip44Encryption.Nip44v2 import com.vitorpamplona.quartz.nip49PrivKeyEnc.Nip49 +import com.vitorpamplona.quartz.utils.nextBytes +import com.vitorpamplona.quartz.utils.sha256Hash import fr.acinq.secp256k1.Secp256k1 import java.security.SecureRandom diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventFactory.kt b/quartz/src/main/java/com/vitorpamplona/quartz/EventFactory.kt similarity index 99% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventFactory.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/EventFactory.kt index a9656f32d..c8630628f 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventFactory.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/EventFactory.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core +package com.vitorpamplona.quartz import com.vitorpamplona.quartz.blossom.BlossomAuthorizationEvent import com.vitorpamplona.quartz.blossom.BlossomServersEvent @@ -36,6 +36,8 @@ import com.vitorpamplona.quartz.experimental.nns.NNSEvent import com.vitorpamplona.quartz.experimental.profileGallery.ProfileGalleryEntryEvent import com.vitorpamplona.quartz.experimental.relationshipStatus.RelationshipStatusEvent import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent +import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.MetadataEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent import com.vitorpamplona.quartz.nip03Timestamp.OtsEvent diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/blossom/BlossomServersEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/blossom/BlossomServersEvent.kt index 3796b8146..e4fa19a3a 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/blossom/BlossomServersEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/blossom/BlossomServersEvent.kt @@ -22,9 +22,9 @@ package com.vitorpamplona.quartz.blossom import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/audio/AudioTrackEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/audio/AudioTrackEvent.kt index 3999b771a..3bdfeddcc 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/audio/AudioTrackEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/audio/AudioTrackEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.experimental.audio import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/edits/PrivateOutboxRelayListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/edits/PrivateOutboxRelayListEvent.kt index 7d7b14292..654b7a406 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/edits/PrivateOutboxRelayListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/edits/PrivateOutboxRelayListEvent.kt @@ -24,10 +24,10 @@ import android.util.Log import androidx.compose.runtime.Immutable import com.fasterxml.jackson.module.kotlin.readValue import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip21UriScheme.toNostrUri import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.bytesUsedInMemory diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/edits/TextNoteModificationEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/edits/TextNoteModificationEvent.kt index 0763a7a1b..9af8d7389 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/edits/TextNoteModificationEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/edits/TextNoteModificationEvent.kt @@ -23,8 +23,8 @@ package com.vitorpamplona.quartz.experimental.edits import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.events.firstTaggedEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.events.firstTaggedEvent import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryBaseEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryBaseEvent.kt index f8bd76f18..8bc70d40c 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryBaseEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryBaseEvent.kt @@ -21,13 +21,13 @@ package com.vitorpamplona.quartz.experimental.interactiveStories import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.core.firstTagValue -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip10Notes.findHashtags import com.vitorpamplona.quartz.nip10Notes.findURLs -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup import com.vitorpamplona.quartz.nip92IMeta.IMetaTag diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryPrologueEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryPrologueEvent.kt index 90ce99821..6233a2415 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryPrologueEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryPrologueEvent.kt @@ -21,8 +21,8 @@ package com.vitorpamplona.quartz.experimental.interactiveStories import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip22Comments.RootScope import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup import com.vitorpamplona.quartz.nip92IMeta.IMetaTag diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryReadingStateEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryReadingStateEvent.kt index 29d525d40..4f3c25758 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryReadingStateEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStoryReadingStateEvent.kt @@ -22,12 +22,12 @@ package com.vitorpamplona.quartz.experimental.interactiveStories import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.core.firstTag import com.vitorpamplona.quartz.nip01Core.core.firstTagValue import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.removeTrailingNullsAndEmptyOthers diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStorySceneEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStorySceneEvent.kt index 6b5d6b710..61fbf527c 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStorySceneEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/interactiveStories/InteractiveStorySceneEvent.kt @@ -21,8 +21,8 @@ package com.vitorpamplona.quartz.experimental.interactiveStories import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip22Comments.RootScope import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup import com.vitorpamplona.quartz.nip92IMeta.IMetaTag diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/nns/NNSEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/nns/NNSEvent.kt index 0c8c40dd0..4ab1387db 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/nns/NNSEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/nns/NNSEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.experimental.nns import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/profileGallery/GalleryListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/profileGallery/GalleryListEvent.kt index 4064b3e35..fbfca6424 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/profileGallery/GalleryListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/profileGallery/GalleryListEvent.kt @@ -22,8 +22,8 @@ package com.vitorpamplona.quartz.experimental.profileGallery import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip51Lists.GeneralListEvent import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/zapPolls/PollNoteEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/zapPolls/PollNoteEvent.kt index 194666a7e..268f113ef 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/experimental/zapPolls/PollNoteEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/experimental/zapPolls/PollNoteEvent.kt @@ -22,9 +22,9 @@ package com.vitorpamplona.quartz.experimental.zapPolls import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/lightning/Lud06.kt b/quartz/src/main/java/com/vitorpamplona/quartz/lightning/Lud06.kt index a8ec27343..340f8f2ed 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/lightning/Lud06.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/lightning/Lud06.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.lightning import android.util.Log -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.Bech32 +import com.vitorpamplona.quartz.nip19Bech32.bech32.Bech32 import java.util.regex.Pattern class Lud06 { diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventExt.kt index b88ff7653..e77cacf12 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventExt.kt @@ -21,9 +21,9 @@ package com.vitorpamplona.quartz.nip01Core import android.util.Log -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.Hex +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.core.Event +import com.vitorpamplona.quartz.utils.Hex fun Event.generateId(): String = EventHasher.hashId(pubKey, createdAt, kind, tags, content) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHasher.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHasher.kt index c0cf7602f..13a682950 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHasher.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHasher.kt @@ -21,8 +21,8 @@ package com.vitorpamplona.quartz.nip01Core import com.fasterxml.jackson.databind.node.JsonNodeFactory -import com.vitorpamplona.quartz.crypto.sha256Hash import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper +import com.vitorpamplona.quartz.utils.sha256Hash class EventHasher { companion object { diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHint.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHintBundle.kt similarity index 95% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHint.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHintBundle.kt index e6860dca0..af8cda51e 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHint.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/EventHintBundle.kt @@ -22,12 +22,12 @@ package com.vitorpamplona.quartz.nip01Core import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent import com.vitorpamplona.quartz.utils.bytesUsedInMemory import com.vitorpamplona.quartz.utils.pointerSizeInBytes @Immutable -data class EventHint( +data class EventHintBundle( val event: T, ) { var relay: String? = null diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/HexKey.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/HexKey.kt index 31ba61f34..b729491b3 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/HexKey.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/HexKey.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip01Core -import com.vitorpamplona.quartz.crypto.Hex +import com.vitorpamplona.quartz.utils.Hex /** Makes the distinction between String and Hex * */ typealias HexKey = String diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/KeyPair.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/KeyPair.kt similarity index 96% rename from quartz/src/main/java/com/vitorpamplona/quartz/crypto/KeyPair.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/KeyPair.kt index 68218e6c5..f90e57607 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/KeyPair.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/KeyPair.kt @@ -18,9 +18,9 @@ * 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.quartz.crypto +package com.vitorpamplona.quartz.nip01Core -import com.vitorpamplona.quartz.nip01Core.toHexKey +import com.vitorpamplona.quartz.CryptoUtils class KeyPair( privKey: ByteArray? = null, diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/Nip01.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/Nip01.kt index 2ea196654..3e2f0cb01 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/Nip01.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/Nip01.kt @@ -20,9 +20,9 @@ */ package com.vitorpamplona.quartz.nip01Core -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.nextBytes -import com.vitorpamplona.quartz.crypto.sha256Hash +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.utils.nextBytes +import com.vitorpamplona.quartz.utils.sha256Hash import fr.acinq.secp256k1.Secp256k1 import java.security.SecureRandom diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/AddressableEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/core/AddressableEvent.kt similarity index 92% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/AddressableEvent.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/core/AddressableEvent.kt index 671f308d5..c0d1ab8b2 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/AddressableEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/core/AddressableEvent.kt @@ -18,9 +18,10 @@ * 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.quartz.nip01Core.addressables +package com.vitorpamplona.quartz.nip01Core.core import androidx.compose.runtime.Immutable +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag @Immutable interface AddressableEvent { diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/BaseAddressableEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/core/BaseAddressableEvent.kt similarity index 88% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/BaseAddressableEvent.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/core/BaseAddressableEvent.kt index df266260d..8b002acdd 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/BaseAddressableEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/core/BaseAddressableEvent.kt @@ -18,11 +18,12 @@ * 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.quartz.nip01Core.addressables +package com.vitorpamplona.quartz.nip01Core.core import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.core.Event +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.dTag @Immutable open class BaseAddressableEvent( @@ -35,7 +36,7 @@ open class BaseAddressableEvent( sig: HexKey, ) : Event(id, pubKey, createdAt, kind, tags, content, sig), AddressableEvent { - override fun dTag() = tags.firstOrNull { it.size > 1 && it[0] == "d" }?.get(1) ?: "" + override fun dTag() = tags.dTag() override fun address(relayHint: String?) = ATag(kind, pubKey, dTag(), relayHint) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/jackson/EventManualDeserializer.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/jackson/EventManualDeserializer.kt index f39fc00cf..93bfaa725 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/jackson/EventManualDeserializer.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/jackson/EventManualDeserializer.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip01Core.jackson import com.fasterxml.jackson.databind.JsonNode -import com.vitorpamplona.quartz.nip01Core.EventFactory +import com.vitorpamplona.quartz.EventFactory import com.vitorpamplona.quartz.nip01Core.core.Event class EventManualDeserializer { diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSigner.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSigner.kt index d6039b0c6..273459b7d 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSigner.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSigner.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip01Core.signers -import com.vitorpamplona.quartz.nip01Core.EventFactory +import com.vitorpamplona.quartz.EventFactory import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip04Dm.Nip04 diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSignerInternal.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSignerInternal.kt index 2d44683d5..b56aff320 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSignerInternal.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSignerInternal.kt @@ -20,8 +20,8 @@ */ package com.vitorpamplona.quartz.nip01Core.signers -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.toHexKey import com.vitorpamplona.quartz.nip57Zaps.LnZapPrivateEvent diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSignerSync.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSignerSync.kt index fcb0cb616..d9ec9bae4 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSignerSync.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/NostrSignerSync.kt @@ -21,16 +21,16 @@ package com.vitorpamplona.quartz.nip01Core.signers import android.util.Log -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.crypto.KeyPair -import com.vitorpamplona.quartz.nip01Core.EventFactory +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.EventFactory import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.toHexKey import com.vitorpamplona.quartz.nip57Zaps.LnZapPrivateEvent import com.vitorpamplona.quartz.nip57Zaps.LnZapRequestEvent -import com.vitorpamplona.quartz.nip57Zaps.PrivateZapEncryption +import com.vitorpamplona.quartz.nip57Zaps.PrivateZapRequestBuilder class NostrSignerSync( val keyPair: KeyPair, @@ -46,7 +46,7 @@ class NostrSignerSync( return if (isUnsignedPrivateZapEvent(kind, tags)) { // this is a private zap - signPrivateZap(createdAt, kind, tags, content) + PrivateZapRequestBuilder().signPrivateZapRequest(createdAt, kind, tags, content, this) } else { signNormal(createdAt, kind, tags, content) } @@ -139,104 +139,5 @@ class NostrSignerSync( ) } - private fun signPrivateZap( - createdAt: Long, - kind: Int, - tags: Array>, - content: String, - ): T? { - if (keyPair.privKey == null) return null - - val zappedEvent = tags.firstOrNull { it.size > 1 && it[0] == "e" }?.let { it[1] } - val userHex = tags.firstOrNull { it.size > 1 && it[0] == "p" }?.let { it[1] } ?: return null - - // if it is a Zap for an Event, use event.id if not, use the user's pubkey - val idToGeneratePrivateKey = zappedEvent ?: userHex - - val encryptionPrivateKey = - PrivateZapEncryption.createEncryptionPrivateKey( - keyPair.privKey.toHexKey(), - idToGeneratePrivateKey, - createdAt, - ) - - val fullTagsNoAnon = tags.filter { t -> t.getOrNull(0) != "anon" }.toTypedArray() - - val privateEvent = LnZapPrivateEvent.create(this, fullTagsNoAnon, content) ?: return null - - val noteJson = privateEvent.toJson() - val encryptedContent = - PrivateZapEncryption.encryptPrivateZapMessage( - noteJson, - encryptionPrivateKey, - userHex.hexToByteArray(), - ) - - val newTags = - tags.filter { t -> t.getOrNull(0) != "anon" } + listOf(arrayOf("anon", encryptedContent)) - val newContent = "" - - return NostrSignerSync(KeyPair(encryptionPrivateKey)).signNormal(createdAt, kind, newTags.toTypedArray(), newContent) - } - - fun decryptZapEvent(event: LnZapRequestEvent): LnZapPrivateEvent? { - if (keyPair.privKey == null) return null - - val recipientPK = event.zappedAuthor().firstOrNull() - val recipientPost = event.zappedPost().firstOrNull() - val privateEvent = - if (recipientPK == pubKey) { - // if the receiver is logged in, these are the params. - val privateKeyToUse = keyPair.privKey - val pubkeyToUse = event.pubKey - - event.getPrivateZapEvent(privateKeyToUse, pubkeyToUse) - } else { - // if the sender is logged in, these are the params - val altPubkeyToUse = recipientPK - val altPrivateKeyToUse = - if (recipientPost != null) { - PrivateZapEncryption.createEncryptionPrivateKey( - keyPair.privKey.toHexKey(), - recipientPost, - event.createdAt, - ) - } else if (recipientPK != null) { - PrivateZapEncryption.createEncryptionPrivateKey( - keyPair.privKey.toHexKey(), - recipientPK, - event.createdAt, - ) - } else { - null - } - - try { - if (altPrivateKeyToUse != null && altPubkeyToUse != null) { - val altPubKeyFromPrivate = CryptoUtils.pubkeyCreate(altPrivateKeyToUse).toHexKey() - - if (altPubKeyFromPrivate == event.pubKey) { - val result = event.getPrivateZapEvent(altPrivateKeyToUse, altPubkeyToUse) - - if (result == null) { - Log.w( - "Private ZAP Decrypt", - "Fail to decrypt Zap from ${event.id}", - ) - } - result - } else { - null - } - } else { - null - } - } catch (e: Exception) { - Log.e("Account", "Failed to create pubkey for ZapRequest ${event.id}", e) - null - } - } - - return privateEvent - } + fun decryptZapEvent(event: LnZapRequestEvent): LnZapPrivateEvent? = PrivateZapRequestBuilder().decryptZapEvent(event, this) } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/ATag.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/addressables/ATag.kt similarity index 97% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/ATag.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/addressables/ATag.kt index ff1ba7425..e55815550 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/ATag.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/addressables/ATag.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.addressables +package com.vitorpamplona.quartz.nip01Core.tags.addressables import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.utils.bytesUsedInMemory diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/EventExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/addressables/EventExt.kt similarity index 96% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/EventExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/addressables/EventExt.kt index 450a0ca5f..d0ba9582e 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/EventExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/addressables/EventExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.addressables +package com.vitorpamplona.quartz.nip01Core.tags.addressables import com.vitorpamplona.quartz.nip01Core.core.Event diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/TagArrayExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/addressables/TagArrayExt.kt similarity index 92% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/TagArrayExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/addressables/TagArrayExt.kt index 3927dfd0c..4a43fff14 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/addressables/TagArrayExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/addressables/TagArrayExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.addressables +package com.vitorpamplona.quartz.nip01Core.tags.addressables import com.vitorpamplona.quartz.nip01Core.core.TagArray import com.vitorpamplona.quartz.nip01Core.core.firstMapTagged @@ -26,7 +26,9 @@ import com.vitorpamplona.quartz.nip01Core.core.isAnyTagged import com.vitorpamplona.quartz.nip01Core.core.isTagged import com.vitorpamplona.quartz.nip01Core.core.mapTagged import com.vitorpamplona.quartz.nip01Core.core.mapValueTagged -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip19Bech32.parse + +fun TagArray.dTag() = this.firstOrNull { it.size > 1 && it[0] == "d" }?.get(1) ?: "" fun TagArray.mapTaggedAddress(map: (address: String) -> R) = this.mapValueTagged("a", map) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/events/EventExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/events/EventExt.kt similarity index 96% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/events/EventExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/events/EventExt.kt index 2bf14ade3..1a71c83e4 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/events/EventExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/events/EventExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.events +package com.vitorpamplona.quartz.nip01Core.tags.events import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/events/TagArrayExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/events/TagArrayExt.kt similarity index 97% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/events/TagArrayExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/events/TagArrayExt.kt index ac0dff378..c5c6f6917 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/events/TagArrayExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/events/TagArrayExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.events +package com.vitorpamplona.quartz.nip01Core.tags.events import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArray diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/geohash/EventExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/geohash/EventExt.kt similarity index 97% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/geohash/EventExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/geohash/EventExt.kt index 64b24727b..37b17d87c 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/geohash/EventExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/geohash/EventExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.geohash +package com.vitorpamplona.quartz.nip01Core.tags.geohash import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip22Comments.CommentEvent diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/geohash/GeoHash.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/geohash/GeoHash.kt similarity index 95% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/geohash/GeoHash.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/geohash/GeoHash.kt index d430ba9bf..4d4364d81 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/geohash/GeoHash.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/geohash/GeoHash.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.geohash +package com.vitorpamplona.quartz.nip01Core.tags.geohash fun geohashMipMap(geohash: String): Array> = geohash.indices diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/geohash/TagArrayExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/geohash/TagArrayExt.kt similarity index 97% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/geohash/TagArrayExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/geohash/TagArrayExt.kt index cebd4a401..5ac61cdbf 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/geohash/TagArrayExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/geohash/TagArrayExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.geohash +package com.vitorpamplona.quartz.nip01Core.tags.geohash import com.vitorpamplona.quartz.nip01Core.core.TagArray import com.vitorpamplona.quartz.nip01Core.core.anyTagWithValueStartingWithIgnoreCase diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/hashtags/EventExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/hashtags/EventExt.kt similarity index 96% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/hashtags/EventExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/hashtags/EventExt.kt index 2f3762ce4..45c55bbc0 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/hashtags/EventExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/hashtags/EventExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.hashtags +package com.vitorpamplona.quartz.nip01Core.tags.hashtags import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/hashtags/TagArrayExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/hashtags/TagArrayExt.kt similarity index 97% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/hashtags/TagArrayExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/hashtags/TagArrayExt.kt index f10a75d50..4509f2841 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/hashtags/TagArrayExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/hashtags/TagArrayExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.hashtags +package com.vitorpamplona.quartz.nip01Core.tags.hashtags import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArray diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/people/EventExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/people/EventExt.kt similarity index 96% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/people/EventExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/people/EventExt.kt index 44356cb51..a573de773 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/people/EventExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/people/EventExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.people +package com.vitorpamplona.quartz.nip01Core.tags.people import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.firstTagValue diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/people/TagArrayExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/people/TagArrayExt.kt similarity index 97% rename from quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/people/TagArrayExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/people/TagArrayExt.kt index 754b7189d..c21f06b52 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/people/TagArrayExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/tags/people/TagArrayExt.kt @@ -18,7 +18,7 @@ * 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.quartz.nip01Core.people +package com.vitorpamplona.quartz.nip01Core.tags.people import com.vitorpamplona.quartz.nip01Core.core.TagArray import com.vitorpamplona.quartz.nip01Core.core.firstTagValue diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip02FollowList/ContactListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip02FollowList/ContactListEvent.kt index 15f614cf1..7e4af3b1a 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip02FollowList/ContactListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip02FollowList/ContactListEvent.kt @@ -25,20 +25,20 @@ import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable import com.fasterxml.jackson.module.kotlin.readValue import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.isTaggedAddressableNote import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.events.isTaggedEvent -import com.vitorpamplona.quartz.nip01Core.geohash.isTaggedGeoHash -import com.vitorpamplona.quartz.nip01Core.hashtags.hashtags -import com.vitorpamplona.quartz.nip01Core.hashtags.isTaggedHash import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper -import com.vitorpamplona.quartz.nip01Core.people.isTaggedUser import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.isTaggedAddressableNote +import com.vitorpamplona.quartz.nip01Core.tags.events.isTaggedEvent +import com.vitorpamplona.quartz.nip01Core.tags.geohash.isTaggedGeoHash +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hashtags +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.isTaggedHash +import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePublicKey -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip19Bech32.decodePublicKey +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.utils.TimeUtils @Immutable data class Contact( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/Hash.java b/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/Hash.java index 785e4ab83..ec2a4f479 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/Hash.java +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/Hash.java @@ -1,6 +1,6 @@ package com.vitorpamplona.quartz.nip03Timestamp.ots; -import com.vitorpamplona.quartz.crypto.Hex; +import com.vitorpamplona.quartz.utils.Hex; import com.vitorpamplona.quartz.nip03Timestamp.ots.op.OpCrypto; import com.vitorpamplona.quartz.nip03Timestamp.ots.op.OpKECCAK256; import com.vitorpamplona.quartz.nip03Timestamp.ots.op.OpRIPEMD160; diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/OpenTimestamps.java b/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/OpenTimestamps.java index 95b7418bc..6ae51dd59 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/OpenTimestamps.java +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/OpenTimestamps.java @@ -2,7 +2,7 @@ package com.vitorpamplona.quartz.nip03Timestamp.ots; import android.util.Log; -import com.vitorpamplona.quartz.crypto.Hex; +import com.vitorpamplona.quartz.utils.Hex; import com.vitorpamplona.quartz.nip03Timestamp.ots.attestation.BitcoinBlockHeaderAttestation; import com.vitorpamplona.quartz.nip03Timestamp.ots.attestation.EthereumBlockHeaderAttestation; import com.vitorpamplona.quartz.nip03Timestamp.ots.attestation.LitecoinBlockHeaderAttestation; diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/Timestamp.java b/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/Timestamp.java index a93de02ec..7e3ac7af7 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/Timestamp.java +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/Timestamp.java @@ -1,6 +1,6 @@ package com.vitorpamplona.quartz.nip03Timestamp.ots; -import com.vitorpamplona.quartz.crypto.Hex; +import com.vitorpamplona.quartz.utils.Hex; import com.vitorpamplona.quartz.nip03Timestamp.ots.attestation.BitcoinBlockHeaderAttestation; import com.vitorpamplona.quartz.nip03Timestamp.ots.attestation.TimeAttestation; import com.vitorpamplona.quartz.nip03Timestamp.ots.exceptions.DeserializationException; diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/op/OpBinary.java b/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/op/OpBinary.java index 435fff1cc..9e2e91529 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/op/OpBinary.java +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip03Timestamp/ots/op/OpBinary.java @@ -2,7 +2,7 @@ package com.vitorpamplona.quartz.nip03Timestamp.ots.op; import android.util.Log; -import com.vitorpamplona.quartz.crypto.Hex; +import com.vitorpamplona.quartz.utils.Hex; import com.vitorpamplona.quartz.nip03Timestamp.ots.StreamDeserializationContext; import com.vitorpamplona.quartz.nip03Timestamp.ots.StreamSerializationContext; import com.vitorpamplona.quartz.nip03Timestamp.ots.Utils; diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip04Dm/Nip04.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip04Dm/Nip04.kt index 5dd80229a..de2fa6a48 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip04Dm/Nip04.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip04Dm/Nip04.kt @@ -21,8 +21,8 @@ package com.vitorpamplona.quartz.nip04Dm import android.util.Log -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.nip44Encryption.SharedKeyCache +import com.vitorpamplona.quartz.utils.Hex import fr.acinq.secp256k1.Secp256k1 import java.security.SecureRandom import java.util.Base64 diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip04Dm/PrivateDmEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip04Dm/PrivateDmEvent.kt index 12e3d1878..7e0889e40 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip04Dm/PrivateDmEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip04Dm/PrivateDmEvent.kt @@ -21,16 +21,16 @@ package com.vitorpamplona.quartz.nip04Dm import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.experimental.inlineMetadata.Nip54InlineMetadata import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip17Dm.ChatroomKey import com.vitorpamplona.quartz.nip17Dm.ChatroomKeyable import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup import com.vitorpamplona.quartz.nip92IMeta.IMetaTag +import com.vitorpamplona.quartz.utils.Hex import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.bytesUsedInMemory import com.vitorpamplona.quartz.utils.pointerSizeInBytes diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip05DnsIdentifiers/Nip05.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip05DnsIdentifiers/Nip05.kt new file mode 100644 index 000000000..c97ccf8d8 --- /dev/null +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip05DnsIdentifiers/Nip05.kt @@ -0,0 +1,67 @@ +/** + * 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.quartz.nip05DnsIdentifiers + +import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper +import kotlinx.coroutines.CancellationException + +class Nip05 { + fun assembleUrl(nip05address: String): String? { + val parts = nip05address.trim().split("@") + + if (parts.size == 2) { + return "https://${parts[1]}/.well-known/nostr.json?name=${parts[0]}" + } + if (parts.size == 1) { + return "https://${parts[0]}/.well-known/nostr.json?name=_" + } + + return null + } + + fun parseHexKeyFor( + nip05: String, + returnBody: String, + ): Result { + // NIP05 usernames are case insensitive, but JSON properties are not + // converts the json to lowercase and then tries to access the username via a + // lowercase version of the username. + val nip05url = + try { + EventMapper.mapper.readTree(returnBody.lowercase()) + } catch (e: Throwable) { + if (e is CancellationException) throw e + return Result.failure(e) + } + + val parts = nip05.split("@") + val user = + if (parts.size == 2) { + parts[0].lowercase() + } else { + "_" + } + + val hexKey = nip05url?.get("names")?.get(user)?.asText() + + return Result.success(hexKey) + } +} diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39Mnemonics.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39Mnemonics.kt index 006f68b42..423a6e00a 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39Mnemonics.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip06KeyDerivation/Bip39Mnemonics.kt @@ -20,8 +20,8 @@ */ package com.vitorpamplona.quartz.nip06KeyDerivation -import com.vitorpamplona.quartz.crypto.sha256Hash import com.vitorpamplona.quartz.nip49PrivKeyEnc.PBKDF +import com.vitorpamplona.quartz.utils.sha256Hash // CODE FROM: https://github.com/ACINQ/bitcoin-kmp/ diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip09Deletions/DeletionEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip09Deletions/DeletionEvent.kt index 4fe954c8e..4187366b7 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip09Deletions/DeletionEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip09Deletions/DeletionEvent.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.quartz.nip09Deletions import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.events.taggedEvents import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/BaseTextNoteEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/BaseTextNoteEvent.kt index 061ad2f26..ad6fc545a 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/BaseTextNoteEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/BaseTextNoteEvent.kt @@ -23,20 +23,20 @@ package com.vitorpamplona.quartz.nip10Notes import android.util.Log import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.people.taggedUsers -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser.nip19regex -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note -import com.vitorpamplona.quartz.nip19Bech32Entities.parse -import com.vitorpamplona.quartz.nip19Bech32Entities.parseAtag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser.nip19regex +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.Note +import com.vitorpamplona.quartz.nip19Bech32.parse +import com.vitorpamplona.quartz.nip19Bech32.parseAtag import com.vitorpamplona.quartz.nip54Wiki.WikiNoteEvent import com.vitorpamplona.quartz.nip72ModCommunities.CommunityDefinitionEvent import java.util.regex.Pattern diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/ETag.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/ETag.kt index 2510f7ee3..bb67c2f30 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/ETag.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/ETag.kt @@ -23,9 +23,9 @@ package com.vitorpamplona.quartz.nip10Notes import android.util.Log import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.Nip19Parser -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note +import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.Note import com.vitorpamplona.quartz.utils.bytesUsedInMemory import com.vitorpamplona.quartz.utils.pointerSizeInBytes import com.vitorpamplona.quartz.utils.removeTrailingNullsAndEmptyOthers diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/PTag.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/PTag.kt index b951c96e6..38b830b3c 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/PTag.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/PTag.kt @@ -23,8 +23,8 @@ package com.vitorpamplona.quartz.nip10Notes import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.hexToByteArray -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.toNpub import com.vitorpamplona.quartz.utils.bytesUsedInMemory import com.vitorpamplona.quartz.utils.pointerSizeInBytes import com.vitorpamplona.quartz.utils.removeTrailingNullsAndEmptyOthers diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt index e088c8973..2de5dd164 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt @@ -24,11 +24,11 @@ import androidx.compose.runtime.Immutable import com.linkedin.urls.detection.UrlDetector import com.linkedin.urls.detection.UrlDetectorOptions import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup import com.vitorpamplona.quartz.nip92IMeta.IMetaTag diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/AESGCM.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/AESGCM.kt index 04000c7ae..84572f733 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/AESGCM.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/AESGCM.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip17Dm -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.toHexKey import javax.crypto.Cipher import javax.crypto.spec.GCMParameterSpec diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/ChatMessageEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/ChatMessageEvent.kt index 6c84fd466..a16d18125 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/ChatMessageEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/ChatMessageEvent.kt @@ -22,8 +22,8 @@ package com.vitorpamplona.quartz.nip17Dm import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup import com.vitorpamplona.quartz.nip59Giftwrap.WrappedEvent diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/ChatMessageRelayListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/ChatMessageRelayListEvent.kt index 677780d46..3893b3011 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/ChatMessageRelayListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip17Dm/ChatMessageRelayListEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip17Dm import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip18Reposts/GenericRepostEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip18Reposts/GenericRepostEvent.kt index 8f644f1a1..54b9f48ff 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip18Reposts/GenericRepostEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip18Reposts/GenericRepostEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip18Reposts import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip18Reposts/RepostEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip18Reposts/RepostEvent.kt index d6de50e7c..0cf2c5509 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip18Reposts/RepostEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip18Reposts/RepostEvent.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.quartz.nip18Reposts import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.events.taggedEvents -import com.vitorpamplona.quartz.nip01Core.people.taggedUsers import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents +import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/ATagExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/ATagExt.kt index 451a93bad..2ad157784 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/ATagExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/ATagExt.kt @@ -18,12 +18,12 @@ * 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.quartz.nip19Bech32Entities +package com.vitorpamplona.quartz.nip19Bech32 import android.util.Log -import com.vitorpamplona.quartz.crypto.Hex -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.utils.Hex fun ATag.Companion.isATag(key: String): Boolean = key.startsWith("naddr1") || key.contains(":") diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/ByteArrayExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/ByteArrayExt.kt index 525e2d81f..1d1fa6bfa 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/ByteArrayExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/ByteArrayExt.kt @@ -18,9 +18,9 @@ * 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.quartz.nip19Bech32Entities +package com.vitorpamplona.quartz.nip19Bech32 -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.Bech32 +import com.vitorpamplona.quartz.nip19Bech32.bech32.Bech32 fun ByteArray.toNsec() = Bech32.encodeBytes(hrp = "nsec", this, Bech32.Encoding.Bech32) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/EventExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/EventExt.kt index d45baed00..ac8525a35 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/EventExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/EventExt.kt @@ -18,12 +18,12 @@ * 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.quartz.nip19Bech32Entities +package com.vitorpamplona.quartz.nip19Bech32 -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent fun Event.toNIP19(): String = if (this is AddressableEvent) { diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/Nip19Parser.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/Nip19Parser.kt index 3e94e42e2..9b54bb838 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/Nip19Parser.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/Nip19Parser.kt @@ -18,25 +18,25 @@ * 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.quartz.nip19Bech32Entities +package com.vitorpamplona.quartz.nip19Bech32 import android.util.Log import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.crypto.Hex -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.bechToBytes -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.Entity -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEmbed -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NRelay -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NSec -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note +import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes +import com.vitorpamplona.quartz.nip19Bech32.entities.Entity +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEmbed +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.NRelay +import com.vitorpamplona.quartz.nip19Bech32.entities.NSec +import com.vitorpamplona.quartz.nip19Bech32.entities.Note +import com.vitorpamplona.quartz.utils.Hex import kotlinx.coroutines.CancellationException import java.util.regex.Pattern diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/TlvBuilderExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/TlvBuilderExt.kt index 91248880e..dd4dd160f 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/TlvBuilderExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/TlvBuilderExt.kt @@ -19,8 +19,8 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.TlvTypes -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.TlvBuilder +import com.vitorpamplona.quartz.nip19Bech32.TlvTypes +import com.vitorpamplona.quartz.nip19Bech32.tlv.TlvBuilder fun TlvBuilder.addString( type: TlvTypes, diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/TlvTypes.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/TlvTypes.kt index 436fa4721..1a9f7d430 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/TlvTypes.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/TlvTypes.kt @@ -18,9 +18,9 @@ * 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.quartz.nip19Bech32Entities +package com.vitorpamplona.quartz.nip19Bech32 -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.Tlv +import com.vitorpamplona.quartz.nip19Bech32.tlv.Tlv enum class TlvTypes( val id: Byte, diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/bech32/Bech32Util.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/bech32/Bech32Util.kt index 97365ce7a..77654be97 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/bech32/Bech32Util.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/bech32/Bech32Util.kt @@ -18,7 +18,7 @@ * 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.quartz.nip19Bech32Entities.bech32 +package com.vitorpamplona.quartz.nip19Bech32.bech32 /* * Copyright 2020 ACINQ SAS diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/Entity.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/Entity.kt index 27a4907bc..98744a53d 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/Entity.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/Entity.kt @@ -18,6 +18,6 @@ * 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.quartz.nip19Bech32Entities.entities +package com.vitorpamplona.quartz.nip19Bech32.entities interface Entity diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NAddress.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NAddress.kt index d9b428aa0..e5627fd9d 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NAddress.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NAddress.kt @@ -18,7 +18,7 @@ * 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.quartz.nip19Bech32Entities.entities +package com.vitorpamplona.quartz.nip19Bech32.entities import addHex import addInt @@ -26,12 +26,12 @@ import addString import addStringIfNotNull import android.util.Log import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip19Bech32Entities.TlvTypes -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.bechToBytes -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.Tlv -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.TlvBuilder -import com.vitorpamplona.quartz.nip19Bech32Entities.toNAddress +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.TlvTypes +import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes +import com.vitorpamplona.quartz.nip19Bech32.tlv.Tlv +import com.vitorpamplona.quartz.nip19Bech32.tlv.TlvBuilder +import com.vitorpamplona.quartz.nip19Bech32.toNAddress @Immutable data class NAddress( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NEmbed.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NEmbed.kt index 2f547fe7d..f63bb8ac9 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NEmbed.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NEmbed.kt @@ -18,11 +18,11 @@ * 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.quartz.nip19Bech32Entities.entities +package com.vitorpamplona.quartz.nip19Bech32.entities import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip19Bech32Entities.toNEmbed +import com.vitorpamplona.quartz.nip19Bech32.toNEmbed import java.io.ByteArrayOutputStream import java.util.zip.GZIPInputStream import java.util.zip.GZIPOutputStream diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NEvent.kt index 71e68d199..bf36b9978 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NEvent.kt @@ -18,19 +18,19 @@ * 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.quartz.nip19Bech32Entities.entities +package com.vitorpamplona.quartz.nip19Bech32.entities import addHex import addHexIfNotNull import addIntIfNotNull import addStringIfNotNull import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.nip19Bech32Entities.TlvTypes -import com.vitorpamplona.quartz.nip19Bech32Entities.asStringList -import com.vitorpamplona.quartz.nip19Bech32Entities.firstAsHex -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.Tlv -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.TlvBuilder -import com.vitorpamplona.quartz.nip19Bech32Entities.toNEvent +import com.vitorpamplona.quartz.nip19Bech32.TlvTypes +import com.vitorpamplona.quartz.nip19Bech32.asStringList +import com.vitorpamplona.quartz.nip19Bech32.firstAsHex +import com.vitorpamplona.quartz.nip19Bech32.tlv.Tlv +import com.vitorpamplona.quartz.nip19Bech32.tlv.TlvBuilder +import com.vitorpamplona.quartz.nip19Bech32.toNEvent @Immutable data class NEvent( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NProfile.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NProfile.kt index b5149e337..c4ceb3bf3 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NProfile.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NProfile.kt @@ -18,17 +18,17 @@ * 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.quartz.nip19Bech32Entities.entities +package com.vitorpamplona.quartz.nip19Bech32.entities import addHex import addStringIfNotNull import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.nip19Bech32Entities.TlvTypes -import com.vitorpamplona.quartz.nip19Bech32Entities.asStringList -import com.vitorpamplona.quartz.nip19Bech32Entities.firstAsHex -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.Tlv -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.TlvBuilder -import com.vitorpamplona.quartz.nip19Bech32Entities.toNProfile +import com.vitorpamplona.quartz.nip19Bech32.TlvTypes +import com.vitorpamplona.quartz.nip19Bech32.asStringList +import com.vitorpamplona.quartz.nip19Bech32.firstAsHex +import com.vitorpamplona.quartz.nip19Bech32.tlv.Tlv +import com.vitorpamplona.quartz.nip19Bech32.tlv.TlvBuilder +import com.vitorpamplona.quartz.nip19Bech32.toNProfile @Immutable data class NProfile( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NPub.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NPub.kt index 1acf7dc71..d475c37f2 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NPub.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NPub.kt @@ -18,13 +18,13 @@ * 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.quartz.nip19Bech32Entities.entities +package com.vitorpamplona.quartz.nip19Bech32.entities import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.toNpub +import com.vitorpamplona.quartz.nip19Bech32.toNpub @Immutable data class NPub( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NRelay.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NRelay.kt index 45cf9f787..c521ec734 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NRelay.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NRelay.kt @@ -18,11 +18,11 @@ * 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.quartz.nip19Bech32Entities.entities +package com.vitorpamplona.quartz.nip19Bech32.entities import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.nip19Bech32Entities.TlvTypes -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.Tlv +import com.vitorpamplona.quartz.nip19Bech32.TlvTypes +import com.vitorpamplona.quartz.nip19Bech32.tlv.Tlv @Immutable data class NRelay( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NSec.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NSec.kt index c99c3af6e..7a18c3fd6 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NSec.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/NSec.kt @@ -18,7 +18,7 @@ * 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.quartz.nip19Bech32Entities.entities +package com.vitorpamplona.quartz.nip19Bech32.entities import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.toHexKey diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/Note.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/Note.kt index deb4afe60..fa533f42f 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/Note.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/entities/Note.kt @@ -18,13 +18,13 @@ * 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.quartz.nip19Bech32Entities.entities +package com.vitorpamplona.quartz.nip19Bech32.entities import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.toNote +import com.vitorpamplona.quartz.nip19Bech32.toNote @Immutable data class Note( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/tlv/Tlv.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/tlv/Tlv.kt index 24877a8ef..d99bc59f3 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/tlv/Tlv.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/tlv/Tlv.kt @@ -18,7 +18,7 @@ * 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.quartz.nip19Bech32Entities.tlv +package com.vitorpamplona.quartz.nip19Bech32.tlv import com.vitorpamplona.quartz.nip01Core.toHexKey import java.nio.ByteBuffer diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/tlv/TlvBuilder.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/tlv/TlvBuilder.kt index 60cfedd81..08f2519d9 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/tlv/TlvBuilder.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/tlv/TlvBuilder.kt @@ -18,7 +18,7 @@ * 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.quartz.nip19Bech32Entities.tlv +package com.vitorpamplona.quartz.nip19Bech32.tlv import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.hexToByteArray diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip21UriScheme/EventExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip21UriScheme/EventExt.kt index cb0057c08..5e7d3e93e 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip21UriScheme/EventExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip21UriScheme/EventExt.kt @@ -21,6 +21,6 @@ package com.vitorpamplona.quartz.nip21UriScheme import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip19Bech32Entities.toNIP19 +import com.vitorpamplona.quartz.nip19Bech32.toNIP19 fun Event.toNostrUri(): String = "nostr:${toNIP19()}" diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip22Comments/CommentEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip22Comments/CommentEvent.kt index 9d0a5756b..37fe5f4da 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip22Comments/CommentEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip22Comments/CommentEvent.kt @@ -21,19 +21,19 @@ package com.vitorpamplona.quartz.nip22Comments import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.nip01Core.EventHint +import com.vitorpamplona.quartz.nip01Core.EventHintBundle import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip10Notes.ETag import com.vitorpamplona.quartz.nip10Notes.PTag import com.vitorpamplona.quartz.nip10Notes.findHashtags import com.vitorpamplona.quartz.nip10Notes.findURLs -import com.vitorpamplona.quartz.nip19Bech32Entities.parseAtag +import com.vitorpamplona.quartz.nip19Bech32.parseAtag import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup import com.vitorpamplona.quartz.nip92IMeta.IMetaTag @@ -102,7 +102,7 @@ class CommentEvent( fun firstReplyToEvent( msg: String, - replyingTo: EventHint, + replyingTo: EventHintBundle, usersMentioned: Set = emptySet(), addressesMentioned: Set = emptySet(), eventsMentioned: Set = emptySet(), @@ -135,7 +135,7 @@ class CommentEvent( fun replyComment( msg: String, - replyingTo: EventHint, + replyingTo: EventHintBundle, usersMentioned: Set = emptySet(), addressesMentioned: Set = emptySet(), eventsMentioned: Set = emptySet(), diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt index 00f7b0a9e..a4b7d6903 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip23LongContent import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent -import com.vitorpamplona.quartz.nip01Core.hashtags.hashtags +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hashtags import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip25Reactions/ReactionEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip25Reactions/ReactionEvent.kt index ed8ed0148..d4abf954c 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip25Reactions/ReactionEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip25Reactions/ReactionEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip25Reactions import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip28PublicChat/ChannelMessageEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip28PublicChat/ChannelMessageEvent.kt index e2e08a3a4..3c0448d64 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip28PublicChat/ChannelMessageEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip28PublicChat/ChannelMessageEvent.kt @@ -22,8 +22,8 @@ package com.vitorpamplona.quartz.nip28PublicChat import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip30CustomEmoji/EmojiPackSelectionEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip30CustomEmoji/EmojiPackSelectionEvent.kt index 0e6ca4c4c..e7099f079 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip30CustomEmoji/EmojiPackSelectionEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip30CustomEmoji/EmojiPackSelectionEvent.kt @@ -22,9 +22,9 @@ package com.vitorpamplona.quartz.nip30CustomEmoji import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip65RelayList.AdvertisedRelayListEvent import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitIssueEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitIssueEvent.kt index 529d4e0ec..84dd532db 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitIssueEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitIssueEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip34Git import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitPatchEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitPatchEvent.kt index c47c44050..7835ef0f6 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitPatchEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitPatchEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip34Git import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitReplyEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitReplyEvent.kt index 4b26d6f8c..587c0b05b 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitReplyEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitReplyEvent.kt @@ -22,16 +22,16 @@ package com.vitorpamplona.quartz.nip34Git import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip10Notes.findHashtags import com.vitorpamplona.quartz.nip10Notes.findURLs import com.vitorpamplona.quartz.nip10Notes.positionalMarkedTags -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup import com.vitorpamplona.quartz.nip92IMeta.IMetaTag diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitRepositoryEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitRepositoryEvent.kt index a20bc9d36..a696ae48b 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitRepositoryEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip34Git/GitRepositoryEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip34Git import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip35Torrents/TorrentCommentEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip35Torrents/TorrentCommentEvent.kt index b5898496d..3ec3a7be7 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip35Torrents/TorrentCommentEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip35Torrents/TorrentCommentEvent.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.quartz.nip35Torrents import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.nip10Notes.findHashtags import com.vitorpamplona.quartz.nip10Notes.findURLs diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip37Drafts/DraftEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip37Drafts/DraftEvent.kt index 8b3a92c70..73ec01d23 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip37Drafts/DraftEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip37Drafts/DraftEvent.kt @@ -24,10 +24,10 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.experimental.interactiveStories.InteractiveStoryBaseEvent import com.vitorpamplona.quartz.experimental.zapPolls.PollNoteEvent import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import com.vitorpamplona.quartz.nip22Comments.CommentEvent import com.vitorpamplona.quartz.nip28PublicChat.ChannelMessageEvent diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip38UserStatus/StatusEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip38UserStatus/StatusEvent.kt index 1e162061d..196bf1b08 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip38UserStatus/StatusEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip38UserStatus/StatusEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip38UserStatus import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.core.firstTagValue import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip44Encryption/Nip44v1.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip44Encryption/Nip44v1.kt index e03527a47..7cf47f42d 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip44Encryption/Nip44v1.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip44Encryption/Nip44v1.kt @@ -23,9 +23,9 @@ package com.vitorpamplona.quartz.nip44Encryption import android.util.Log import com.goterl.lazysodium.SodiumAndroid import com.goterl.lazysodium.utils.Key -import com.vitorpamplona.quartz.crypto.Hex -import com.vitorpamplona.quartz.crypto.sha256Hash import com.vitorpamplona.quartz.nip44Encryption.crypto.cryptoStreamXChaCha20Xor +import com.vitorpamplona.quartz.utils.Hex +import com.vitorpamplona.quartz.utils.sha256Hash import fr.acinq.secp256k1.Secp256k1 import java.security.SecureRandom import java.util.Base64 diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip44Encryption/Nip44v2.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip44Encryption/Nip44v2.kt index 1fab13b24..7b3f9d49d 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip44Encryption/Nip44v2.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip44Encryption/Nip44v2.kt @@ -23,9 +23,9 @@ package com.vitorpamplona.quartz.nip44Encryption import android.util.Log import com.goterl.lazysodium.LazySodiumAndroid import com.goterl.lazysodium.SodiumAndroid -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.nip01Core.toHexKey import com.vitorpamplona.quartz.nip44Encryption.crypto.Hkdf +import com.vitorpamplona.quartz.utils.Hex import fr.acinq.secp256k1.Secp256k1 import java.nio.ByteBuffer import java.nio.ByteOrder diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerResponse.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerResponse.kt index b922e08e7..d41162edf 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerResponse.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerResponse.kt @@ -27,7 +27,7 @@ import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.SerializerProvider import com.fasterxml.jackson.databind.deser.std.StdDeserializer import com.fasterxml.jackson.databind.ser.std.StdSerializer -import com.vitorpamplona.quartz.crypto.Hex +import com.vitorpamplona.quartz.utils.Hex import com.vitorpamplona.quartz.utils.bytesUsedInMemory import com.vitorpamplona.quartz.utils.pointerSizeInBytes diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/NostrConnectEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/NostrConnectEvent.kt index 751e03fb7..ad25b4dec 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/NostrConnectEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/NostrConnectEvent.kt @@ -21,11 +21,11 @@ package com.vitorpamplona.quartz.nip46RemoteSigner import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.crypto.Hex import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.utils.Hex import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.pointerSizeInBytes diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip47WalletConnect/Nip47WalletConnect.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip47WalletConnect/Nip47WalletConnect.kt index 5197cd69f..815a479f3 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip47WalletConnect/Nip47WalletConnect.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip47WalletConnect/Nip47WalletConnect.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.nip47WalletConnect import android.net.Uri import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.decodePublicKey +import com.vitorpamplona.quartz.nip19Bech32.decodePublicKey import kotlinx.coroutines.CancellationException // Rename to the corect nip number when ready. diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip49PrivKeyEnc/Nip49.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip49PrivKeyEnc/Nip49.kt index f6671fc5c..e8e7e59df 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip49PrivKeyEnc/Nip49.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip49PrivKeyEnc/Nip49.kt @@ -26,8 +26,8 @@ import com.goterl.lazysodium.SodiumAndroid import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.toHexKey -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.Bech32 -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.bechToBytes +import com.vitorpamplona.quartz.nip19Bech32.bech32.Bech32 +import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes import fr.acinq.secp256k1.Secp256k1 import java.security.SecureRandom import java.text.Normalizer diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip50Search/SearchRelayListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip50Search/SearchRelayListEvent.kt index 757bda953..e2cfc1cec 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip50Search/SearchRelayListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip50Search/SearchRelayListEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip50Search import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/BookmarkListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/BookmarkListEvent.kt index ca81e54dc..f25df9ca9 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/BookmarkListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/BookmarkListEvent.kt @@ -22,8 +22,8 @@ package com.vitorpamplona.quartz.nip51Lists import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/GeneralListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/GeneralListEvent.kt index 5d675fe61..bf8777941 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/GeneralListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/GeneralListEvent.kt @@ -22,14 +22,14 @@ package com.vitorpamplona.quartz.nip51Lists import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.core.isTagged -import com.vitorpamplona.quartz.nip01Core.events.taggedEvents -import com.vitorpamplona.quartz.nip01Core.geohash.geohashes import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper -import com.vitorpamplona.quartz.nip01Core.people.taggedUsers import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashes +import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers +import com.vitorpamplona.quartz.nip19Bech32.parse import kotlinx.collections.immutable.ImmutableSet import kotlinx.collections.immutable.toImmutableSet diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/PinListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/PinListEvent.kt index acd8b4a21..de4219ea7 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/PinListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/PinListEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip51Lists import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/PrivateTagArrayEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/PrivateTagArrayEvent.kt index 7da137940..85285b0a1 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/PrivateTagArrayEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/PrivateTagArrayEvent.kt @@ -24,7 +24,7 @@ import android.util.Log import androidx.compose.runtime.Immutable import com.fasterxml.jackson.module.kotlin.readValue import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.bytesUsedInMemory diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/RelaySetEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/RelaySetEvent.kt index 604f5e9e5..2db1f9dfb 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/RelaySetEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip51Lists/RelaySetEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip51Lists import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarDateSlotEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarDateSlotEvent.kt index 900bc305a..21c6aa9fd 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarDateSlotEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarDateSlotEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip52Calendar import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.core.firstTagValue import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarEvent.kt index c789748de..eae7efd55 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip52Calendar import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarRSVPEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarRSVPEvent.kt index 2524dd2df..f7ce1de1c 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarRSVPEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarRSVPEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip52Calendar import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.core.firstTagValue import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarTimeSlotEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarTimeSlotEvent.kt index d72cae70d..69bde2186 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarTimeSlotEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip52Calendar/CalendarTimeSlotEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip52Calendar import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.core.firstTagValue import com.vitorpamplona.quartz.nip01Core.core.firstTagValueAsLong import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip53LiveActivities/LiveActivitiesChatMessageEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip53LiveActivities/LiveActivitiesChatMessageEvent.kt index fc6952829..4192b65de 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip53LiveActivities/LiveActivitiesChatMessageEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip53LiveActivities/LiveActivitiesChatMessageEvent.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.quartz.nip53LiveActivities import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl import com.vitorpamplona.quartz.nip57Zaps.ZapSplitSetup import com.vitorpamplona.quartz.nip92IMeta.IMetaTag diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip53LiveActivities/LiveActivitiesEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip53LiveActivities/LiveActivitiesEvent.kt index 7755588c0..25b64f559 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip53LiveActivities/LiveActivitiesEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip53LiveActivities/LiveActivitiesEvent.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.nip53LiveActivities import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.experimental.audio.Participant import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip54Wiki/WikiNoteEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip54Wiki/WikiNoteEvent.kt index 91ae637ce..95db39abd 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip54Wiki/WikiNoteEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip54Wiki/WikiNoteEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip54Wiki import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent -import com.vitorpamplona.quartz.nip01Core.hashtags.hashtags +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.hashtags.hashtags import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip55AndroidSigner/NostrSignerExternal.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip55AndroidSigner/NostrSignerExternal.kt index 11b10f548..ef7a82f2e 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip55AndroidSigner/NostrSignerExternal.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip55AndroidSigner/NostrSignerExternal.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip55AndroidSigner import android.util.Log import com.goterl.lazysodium.BuildConfig -import com.vitorpamplona.quartz.nip01Core.EventFactory +import com.vitorpamplona.quartz.EventFactory import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip56Reports/ReportEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip56Reports/ReportEvent.kt index 0068a164d..4a8670efe 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip56Reports/ReportEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip56Reports/ReportEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip56Reports import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/LnZapRequestEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/LnZapRequestEvent.kt index c0004e6e2..64b5032ca 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/LnZapRequestEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/LnZapRequestEvent.kt @@ -21,10 +21,10 @@ package com.vitorpamplona.quartz.nip57Zaps import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.experimental.zapPolls.POLL_OPTION import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.KeyPair +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.mapValues import com.vitorpamplona.quartz.nip01Core.hexToByteArray diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapEncryption.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapEncryption.kt index 42317afb3..9f89384e1 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapEncryption.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapEncryption.kt @@ -20,8 +20,8 @@ */ package com.vitorpamplona.quartz.nip57Zaps -import com.vitorpamplona.quartz.crypto.CryptoUtils -import com.vitorpamplona.quartz.nip19Bech32Entities.bech32.Bech32 +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.nip19Bech32.bech32.Bech32 import java.nio.charset.Charset import java.security.SecureRandom import javax.crypto.BadPaddingException diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapRequestBuilder.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapRequestBuilder.kt new file mode 100644 index 000000000..9215487f5 --- /dev/null +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip57Zaps/PrivateZapRequestBuilder.kt @@ -0,0 +1,134 @@ +/** + * 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.quartz.nip57Zaps + +import android.util.Log +import com.vitorpamplona.quartz.CryptoUtils +import com.vitorpamplona.quartz.nip01Core.KeyPair +import com.vitorpamplona.quartz.nip01Core.hexToByteArray +import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync +import com.vitorpamplona.quartz.nip01Core.toHexKey + +class PrivateZapRequestBuilder { + fun signPrivateZapRequest( + createdAt: Long, + kind: Int, + tags: Array>, + content: String, + signer: NostrSignerSync, + ): T? { + if (signer.keyPair.privKey == null) return null + + val zappedEvent = tags.firstOrNull { it.size > 1 && it[0] == "e" }?.let { it[1] } + val userHex = tags.firstOrNull { it.size > 1 && it[0] == "p" }?.let { it[1] } ?: return null + + // if it is a Zap for an Event, use event.id if not, use the user's pubkey + val idToGeneratePrivateKey = zappedEvent ?: userHex + + val encryptionPrivateKey = + PrivateZapEncryption.createEncryptionPrivateKey( + signer.keyPair.privKey.toHexKey(), + idToGeneratePrivateKey, + createdAt, + ) + + val fullTagsNoAnon = tags.filter { t -> t.getOrNull(0) != "anon" }.toTypedArray() + + val privateEvent = LnZapPrivateEvent.create(signer, fullTagsNoAnon, content) ?: return null + + val noteJson = privateEvent.toJson() + val encryptedContent = + PrivateZapEncryption.encryptPrivateZapMessage( + noteJson, + encryptionPrivateKey, + userHex.hexToByteArray(), + ) + + val newTags = tags.filter { t -> t.getOrNull(0) != "anon" } + listOf(arrayOf("anon", encryptedContent)) + val newContent = "" + + return NostrSignerSync(KeyPair(encryptionPrivateKey)).signNormal(createdAt, kind, newTags.toTypedArray(), newContent) + } + + fun decryptZapEvent( + event: LnZapRequestEvent, + signer: NostrSignerSync, + ): LnZapPrivateEvent? { + if (signer.keyPair.privKey == null) return null + + val recipientPK = event.zappedAuthor().firstOrNull() + val recipientPost = event.zappedPost().firstOrNull() + val privateEvent = + if (recipientPK == signer.pubKey) { + // if the receiver is logged in, these are the params. + val privateKeyToUse = signer.keyPair.privKey + val pubkeyToUse = event.pubKey + + event.getPrivateZapEvent(privateKeyToUse, pubkeyToUse) + } else { + // if the sender is logged in, these are the params + val altPubkeyToUse = recipientPK + val altPrivateKeyToUse = + if (recipientPost != null) { + PrivateZapEncryption.createEncryptionPrivateKey( + signer.keyPair.privKey.toHexKey(), + recipientPost, + event.createdAt, + ) + } else if (recipientPK != null) { + PrivateZapEncryption.createEncryptionPrivateKey( + signer.keyPair.privKey.toHexKey(), + recipientPK, + event.createdAt, + ) + } else { + null + } + + try { + if (altPrivateKeyToUse != null && altPubkeyToUse != null) { + val altPubKeyFromPrivate = CryptoUtils.pubkeyCreate(altPrivateKeyToUse).toHexKey() + + if (altPubKeyFromPrivate == event.pubKey) { + val result = event.getPrivateZapEvent(altPrivateKeyToUse, altPubkeyToUse) + + if (result == null) { + Log.w( + "Private ZAP Decrypt", + "Fail to decrypt Zap from ${event.id}", + ) + } + result + } else { + null + } + } else { + null + } + } catch (e: Exception) { + Log.e("Account", "Failed to create pubkey for ZapRequest ${event.id}", e) + null + } + } + + return privateEvent + } +} diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeAwardEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeAwardEvent.kt index da70b1626..5b44a30f5 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeAwardEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeAwardEvent.kt @@ -22,9 +22,9 @@ package com.vitorpamplona.quartz.nip58Badges import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.people.taggedUsers +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers @Immutable class BadgeAwardEvent( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeDefinitionEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeDefinitionEvent.kt index a84556073..bef455d22 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeDefinitionEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeDefinitionEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip58Badges import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent @Immutable class BadgeDefinitionEvent( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeProfilesEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeProfilesEvent.kt index 7219e2d9c..a312c559e 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeProfilesEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip58Badges/BadgeProfilesEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip58Badges import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent -import com.vitorpamplona.quartz.nip01Core.addressables.taggedAddresses -import com.vitorpamplona.quartz.nip01Core.events.taggedEvents +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.taggedAddresses +import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents @Immutable class BadgeProfilesEvent( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip59Giftwrap/GiftWrapEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip59Giftwrap/GiftWrapEvent.kt index a72c74c5d..a07795a71 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip59Giftwrap/GiftWrapEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip59Giftwrap/GiftWrapEvent.kt @@ -22,8 +22,8 @@ package com.vitorpamplona.quartz.nip59Giftwrap import android.util.Log import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.crypto.KeyPair import com.vitorpamplona.quartz.nip01Core.HexKey +import com.vitorpamplona.quartz.nip01Core.KeyPair import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.firstTagValue import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip59Giftwrap/Gossip.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip59Giftwrap/Gossip.kt index ce0d99db3..1281002db 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip59Giftwrap/Gossip.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip59Giftwrap/Gossip.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip59Giftwrap import com.fasterxml.jackson.annotation.JsonProperty -import com.vitorpamplona.quartz.nip01Core.EventFactory +import com.vitorpamplona.quartz.EventFactory import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip65RelayList/AdvertisedRelayListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip65RelayList/AdvertisedRelayListEvent.kt index b7214a788..6a63d1fc8 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip65RelayList/AdvertisedRelayListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip65RelayList/AdvertisedRelayListEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip65RelayList import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip68Picture/PictureEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip68Picture/PictureEvent.kt index e6fcc5b83..fe8e82fba 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip68Picture/PictureEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip68Picture/PictureEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip68Picture import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip10Notes.ETag import com.vitorpamplona.quartz.nip10Notes.PTag import com.vitorpamplona.quartz.nip10Notes.findHashtags diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip71Video/VideoEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip71Video/VideoEvent.kt index 053d584a6..06c2ea41d 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip71Video/VideoEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip71Video/VideoEvent.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip71Video import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip22Comments.RootScope import com.vitorpamplona.quartz.nip92IMeta.Nip92MediaAttachments.Companion.IMETA diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip71Video/VideoViewEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip71Video/VideoViewEvent.kt index 119c78160..47ada41ef 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip71Video/VideoViewEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip71Video/VideoViewEvent.kt @@ -22,9 +22,9 @@ package com.vitorpamplona.quartz.nip71Video import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityDefinitionEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityDefinitionEvent.kt index 4251ce4a2..14eef33e0 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityDefinitionEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityDefinitionEvent.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.nip72ModCommunities import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.experimental.audio.Participant import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityListEvent.kt index d1a26062e..3254779c2 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityListEvent.kt @@ -22,9 +22,9 @@ package com.vitorpamplona.quartz.nip72ModCommunities import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner -import com.vitorpamplona.quartz.nip19Bech32Entities.parseAtag +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.parseAtag import com.vitorpamplona.quartz.nip51Lists.GeneralListEvent import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.pointerSizeInBytes diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityPostApprovalEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityPostApprovalEvent.kt index e1a7b479c..a120360ee 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityPostApprovalEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip72ModCommunities/CommunityPostApprovalEvent.kt @@ -23,10 +23,10 @@ package com.vitorpamplona.quartz.nip72ModCommunities import android.util.Log import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip75ZapGoals/GoalEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip75ZapGoals/GoalEvent.kt index 7ae869bc9..f12a5f60b 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip75ZapGoals/GoalEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip75ZapGoals/GoalEvent.kt @@ -22,8 +22,8 @@ package com.vitorpamplona.quartz.nip75ZapGoals import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.AddressableEvent -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip78AppData/AppSpecificDataEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip78AppData/AppSpecificDataEvent.kt index 3ea2141e5..1f5aebe87 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip78AppData/AppSpecificDataEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip78AppData/AppSpecificDataEvent.kt @@ -21,9 +21,9 @@ package com.vitorpamplona.quartz.nip78AppData import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.utils.TimeUtils class AppSpecificDataEvent( diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip84Highlights/HighlightEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip84Highlights/HighlightEvent.kt index fd0db385a..e7832d1a8 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip84Highlights/HighlightEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip84Highlights/HighlightEvent.kt @@ -22,12 +22,12 @@ package com.vitorpamplona.quartz.nip84Highlights import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.firstTaggedAddress import com.vitorpamplona.quartz.nip01Core.core.firstTagValue import com.vitorpamplona.quartz.nip01Core.core.firstTagValueFor -import com.vitorpamplona.quartz.nip01Core.events.firstTaggedEvent -import com.vitorpamplona.quartz.nip01Core.people.firstTaggedUser import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.firstTaggedAddress +import com.vitorpamplona.quartz.nip01Core.tags.events.firstTaggedEvent +import com.vitorpamplona.quartz.nip01Core.tags.people.firstTaggedUser import com.vitorpamplona.quartz.nip10Notes.BaseTextNoteEvent import com.vitorpamplona.quartz.utils.TimeUtils diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip89AppHandlers/AppDefinitionEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip89AppHandlers/AppDefinitionEvent.kt index 28452da3d..7e33c076c 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip89AppHandlers/AppDefinitionEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip89AppHandlers/AppDefinitionEvent.kt @@ -24,7 +24,7 @@ import android.util.Log import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.UserMetadata -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip21UriScheme.toNostrUri diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip89AppHandlers/AppRecommendationEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip89AppHandlers/AppRecommendationEvent.kt index 0539f1aea..521655685 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip89AppHandlers/AppRecommendationEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip89AppHandlers/AppRecommendationEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip89AppHandlers import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner -import com.vitorpamplona.quartz.nip19Bech32Entities.parse +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.parse import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/AuthToken.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/AuthToken.kt new file mode 100644 index 000000000..d0a0d6de3 --- /dev/null +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/AuthToken.kt @@ -0,0 +1,31 @@ +/** + * 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.quartz.nip96FileStorage + +import com.vitorpamplona.quartz.nip98HttpAuth.HTTPAuthorizationEvent +import java.util.Base64 + +class AuthToken { + fun encodeAuth(event: HTTPAuthorizationEvent): String { + val encodedNIP98Event = Base64.getEncoder().encodeToString(event.toJson().toByteArray()) + return "Nostr $encodedNIP98Event" + } +} diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/FileServersEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/FileServersEvent.kt index a62894d22..94fe7b183 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/FileServersEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/FileServersEvent.kt @@ -22,9 +22,9 @@ package com.vitorpamplona.quartz.nip96FileStorage import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag import com.vitorpamplona.quartz.utils.TimeUtils @Immutable diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/Nip96Result.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/Nip96Result.kt similarity index 96% rename from amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/Nip96Result.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/Nip96Result.kt index 9254d2b22..6bdba9dd1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/Nip96Result.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/Nip96Result.kt @@ -18,7 +18,7 @@ * 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.service.uploads.nip96 +package com.vitorpamplona.quartz.nip96FileStorage import com.fasterxml.jackson.annotation.JsonProperty diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/ResultParser.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/ResultParser.kt new file mode 100644 index 000000000..f456788b0 --- /dev/null +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/ResultParser.kt @@ -0,0 +1,36 @@ +/** + * 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.quartz.nip96FileStorage + +import com.fasterxml.jackson.databind.DeserializationFeature +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper + +class ResultParser { + fun parseDeleteResults(body: String): DeleteResult { + val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + return mapper.readValue(body, DeleteResult::class.java) + } + + fun parseResults(body: String): Nip96Result { + val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + return mapper.readValue(body, Nip96Result::class.java) + } +} diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/ServerInfo.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/ServerInfo.kt similarity index 97% rename from amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/ServerInfo.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/ServerInfo.kt index 5f811b4ec..8cccb5df7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/nip96/ServerInfo.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/ServerInfo.kt @@ -18,7 +18,7 @@ * 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.service.uploads.nip96 +package com.vitorpamplona.quartz.nip96FileStorage import com.fasterxml.jackson.annotation.JsonProperty diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/ServerInfoParser.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/ServerInfoParser.kt new file mode 100644 index 000000000..f88d0122d --- /dev/null +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip96FileStorage/ServerInfoParser.kt @@ -0,0 +1,67 @@ +/** + * 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.quartz.nip96FileStorage + +import com.fasterxml.jackson.databind.DeserializationFeature +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import java.net.URI +import java.net.URL + +class ServerInfoParser { + fun assembleUrl(apiUrl: String): String = apiUrl.removeSuffix("/") + "/.well-known/nostr/nip96.json" + + fun parse( + baseUrl: String, + body: String, + ): ServerInfo { + val mapper = + jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + val serverInfo = mapper.readValue(body, ServerInfo::class.java) + + return serverInfo.copy( + apiUrl = makeAbsoluteIfRelativeUrl(baseUrl, serverInfo.apiUrl), + downloadUrl = serverInfo.downloadUrl?.let { makeAbsoluteIfRelativeUrl(baseUrl, it) }, + delegatedToUrl = serverInfo.delegatedToUrl?.let { makeAbsoluteIfRelativeUrl(baseUrl, it) }, + tosUrl = serverInfo.tosUrl?.let { makeAbsoluteIfRelativeUrl(baseUrl, it) }, + plans = + serverInfo.plans.mapValues { u -> + u.value.copy( + url = u.value.url?.let { makeAbsoluteIfRelativeUrl(baseUrl, it) }, + ) + }, + ) + } + + fun makeAbsoluteIfRelativeUrl( + baseUrl: String, + potentialyRelativeUrl: String, + ): String = + try { + val apiUrl = URI(potentialyRelativeUrl) + if (apiUrl.isAbsolute) { + potentialyRelativeUrl + } else { + URL(URL(baseUrl), potentialyRelativeUrl).toString() + } + } catch (e: Exception) { + potentialyRelativeUrl + } +} diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip98HttpAuth/HTTPAuthorizationEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip98HttpAuth/HTTPAuthorizationEvent.kt index c2aff2165..e2c39264e 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip98HttpAuth/HTTPAuthorizationEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip98HttpAuth/HTTPAuthorizationEvent.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip98HttpAuth import androidx.compose.runtime.Immutable -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils import com.vitorpamplona.quartz.nip01Core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt index a6ff2bdf7..5e9641ae3 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.quartz.nip99Classifieds import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.HexKey -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip01Core.addressables.BaseAddressableEvent -import com.vitorpamplona.quartz.nip01Core.geohash.geohashMipMap +import com.vitorpamplona.quartz.nip01Core.core.BaseAddressableEvent import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip01Core.tags.geohash.geohashMipMap import com.vitorpamplona.quartz.nip10Notes.findHashtags import com.vitorpamplona.quartz.nip10Notes.findURLs import com.vitorpamplona.quartz.nip30CustomEmoji.EmojiUrl diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/Hex.kt b/quartz/src/main/java/com/vitorpamplona/quartz/utils/Hex.kt similarity index 98% rename from quartz/src/main/java/com/vitorpamplona/quartz/crypto/Hex.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/utils/Hex.kt index 998e92918..7f95752ad 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/Hex.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/utils/Hex.kt @@ -18,7 +18,7 @@ * 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.quartz.crypto +package com.vitorpamplona.quartz.utils object Hex { private val lowerCaseHex = arrayOf('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f') diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/RandomExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/utils/RandomExt.kt similarity index 96% rename from quartz/src/main/java/com/vitorpamplona/quartz/crypto/RandomExt.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/utils/RandomExt.kt index 2c999c358..333b62a67 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/RandomExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/utils/RandomExt.kt @@ -18,7 +18,7 @@ * 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.quartz.crypto +package com.vitorpamplona.quartz.utils import java.security.SecureRandom diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/Sha256.kt b/quartz/src/main/java/com/vitorpamplona/quartz/utils/Sha256.kt similarity index 97% rename from quartz/src/main/java/com/vitorpamplona/quartz/crypto/Sha256.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/utils/Sha256.kt index f29bbb5c1..5eda7da51 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/Sha256.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/utils/Sha256.kt @@ -18,7 +18,7 @@ * 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.quartz.crypto +package com.vitorpamplona.quartz.utils import java.security.MessageDigest diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/utils/TimeUtils.kt b/quartz/src/main/java/com/vitorpamplona/quartz/utils/TimeUtils.kt index 2b71a4e60..02888e38c 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/utils/TimeUtils.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/utils/TimeUtils.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.utils -import com.vitorpamplona.quartz.crypto.CryptoUtils +import com.vitorpamplona.quartz.CryptoUtils object TimeUtils { const val ONE_MINUTE = 60 diff --git a/quartz/src/test/java/com/vitorpamplona/quartz/experimental/Nip01SerializerTest.kt b/quartz/src/test/java/com/vitorpamplona/quartz/nip01Core/experimental/Nip01SerializerTest.kt similarity index 98% rename from quartz/src/test/java/com/vitorpamplona/quartz/experimental/Nip01SerializerTest.kt rename to quartz/src/test/java/com/vitorpamplona/quartz/nip01Core/experimental/Nip01SerializerTest.kt index 1cbf3f465..893413480 100644 --- a/quartz/src/test/java/com/vitorpamplona/quartz/experimental/Nip01SerializerTest.kt +++ b/quartz/src/test/java/com/vitorpamplona/quartz/nip01Core/experimental/Nip01SerializerTest.kt @@ -18,12 +18,11 @@ * 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.quartz.experimental +package com.vitorpamplona.quartz.nip01Core.experimental import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.vitorpamplona.quartz.nip01Core.EventHasher import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.experimental.Nip01Serializer import com.vitorpamplona.quartz.nip01Core.generateId import junit.framework.TestCase.assertEquals import org.junit.Test diff --git a/amethyst/src/test/java/com/vitorpamplona/amethyst/service/Nip05NostrAddressVerifierTest.kt b/quartz/src/test/java/com/vitorpamplona/quartz/nip05DnsIdentifiers/Nip05Test.kt similarity index 58% rename from amethyst/src/test/java/com/vitorpamplona/amethyst/service/Nip05NostrAddressVerifierTest.kt rename to quartz/src/test/java/com/vitorpamplona/quartz/nip05DnsIdentifiers/Nip05Test.kt index 3281f99a0..7d3de8ccb 100644 --- a/amethyst/src/test/java/com/vitorpamplona/amethyst/service/Nip05NostrAddressVerifierTest.kt +++ b/quartz/src/test/java/com/vitorpamplona/quartz/nip05DnsIdentifiers/Nip05Test.kt @@ -18,39 +18,21 @@ * 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.service +package com.vitorpamplona.quartz.nip05DnsIdentifiers -import android.os.Looper -import io.mockk.MockKAnnotations -import io.mockk.coEvery -import io.mockk.every -import io.mockk.impl.annotations.SpyK -import io.mockk.mockk -import io.mockk.mockkStatic -import io.mockk.unmockkAll import kotlinx.coroutines.runBlocking -import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertNull import org.junit.Assert.fail -import org.junit.Before import org.junit.Test -class Nip05NostrAddressVerifierTest { +class Nip05Test { companion object { private val ALL_UPPER_CASE_USER_NAME = "ONETWO" private val ALL_LOWER_CASE_USER_NAME = "onetwo" } - @SpyK var nip05Verifier = Nip05NostrAddressVerifier() - - @Before - fun setUp() { - mockkStatic(Looper::class) - every { Looper.myLooper() } returns mockk() - every { Looper.getMainLooper() } returns mockk() - MockKAnnotations.init(this) - } + var nip05Verifier = Nip05() @Test fun `test with matching case on user name`() = @@ -58,30 +40,13 @@ class Nip05NostrAddressVerifierTest { // Set-up val userNameToTest = ALL_UPPER_CASE_USER_NAME val expectedPubKey = "ca29c211f1c72d5b6622268ff43d2288ea2b2cb5b9aa196ff9f1704fc914b71b" - - val nostrJson = - "{\n \"names\": {\n \"$userNameToTest\": \"$expectedPubKey\" \n }\n}" - - coEvery { nip05Verifier.fetchNip05Json(any(), any(), any(), any()) } answers - { - runBlocking { - thirdArg Unit>().invoke(nostrJson) - } - } - + val nostrJson = "{\n \"names\": {\n \"$userNameToTest\": \"$expectedPubKey\" \n }\n}" val nip05 = "$userNameToTest@domain.com" - var actualPubkeyHex = "" - // Execution - nip05Verifier.verifyNip05( - nip05, - forceProxy = { false }, - onSuccess = { actualPubkeyHex = it }, - onError = { fail("Test failure") }, + nip05Verifier.parseHexKeyFor(nip05, nostrJson).fold( + onSuccess = { assertEquals(expectedPubKey, it) }, + onFailure = { fail("Test failure") }, ) - - // Verification - assertEquals(expectedPubKey, actualPubkeyHex) } @Test @@ -89,35 +54,16 @@ class Nip05NostrAddressVerifierTest { runBlocking { // Set-up val expectedPubKey = "ca29c211f1c72d5b6622268ff43d2288ea2b2cb5b9aa196ff9f1704fc914b71b" - val nostrJson = "{ \"names\": { \"$ALL_UPPER_CASE_USER_NAME\": \"$expectedPubKey\" }}" - coEvery { nip05Verifier.fetchNip05Json(any(), any(), any(), any()) } answers - { - runBlocking { - thirdArg Unit>().invoke(nostrJson) - } - } val nip05 = "$ALL_LOWER_CASE_USER_NAME@domain.com" - var actualPubkeyHex = "" - // Execution - nip05Verifier.verifyNip05( - nip05, - forceProxy = { false }, - onSuccess = { actualPubkeyHex = it }, - onError = { fail("Test failure") }, + nip05Verifier.parseHexKeyFor(nip05, nostrJson).fold( + onSuccess = { assertEquals(expectedPubKey, it) }, + onFailure = { fail("Test failure") }, ) - - // Verification - assertEquals(expectedPubKey, actualPubkeyHex) } - @After - fun tearDown() { - unmockkAll() - } - @Test fun `execute assemble url with invalid value returns null`() { // given diff --git a/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/NIP19ParserTest.kt b/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/NIP19ParserTest.kt index b00f0a6ce..1edbd57e0 100644 --- a/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/NIP19ParserTest.kt +++ b/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/NIP19ParserTest.kt @@ -18,14 +18,14 @@ * 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.quartz.nip19Bech32Entities +package com.vitorpamplona.quartz.nip19Bech32 -import com.vitorpamplona.quartz.nip01Core.addressables.ATag -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NAddress -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NEvent -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NProfile -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.NPub -import com.vitorpamplona.quartz.nip19Bech32Entities.entities.Note +import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag +import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress +import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent +import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile +import com.vitorpamplona.quartz.nip19Bech32.entities.NPub +import com.vitorpamplona.quartz.nip19Bech32.entities.Note import org.junit.Assert import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull diff --git a/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/TlvIntegerTest.kt b/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/TlvIntegerTest.kt index 3d70da227..8f7e3eab4 100644 --- a/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/TlvIntegerTest.kt +++ b/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/TlvIntegerTest.kt @@ -18,10 +18,10 @@ * 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.quartz.nip19Bech32Entities +package com.vitorpamplona.quartz.nip19Bech32 -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.to32BitByteArray -import com.vitorpamplona.quartz.nip19Bech32Entities.tlv.toInt32 +import com.vitorpamplona.quartz.nip19Bech32.tlv.to32BitByteArray +import com.vitorpamplona.quartz.nip19Bech32.tlv.toInt32 import org.junit.Assert import org.junit.Assert.assertEquals import org.junit.Test