From f8afb4b7838d4536a355a83aad395ee153674441 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 14 May 2024 16:34:32 -0400 Subject: [PATCH] Refactor the relay list for chat message event kind --- .../java/com/vitorpamplona/amethyst/model/LocalCache.kt | 6 +++--- .../amethyst/service/NostrAccountDataSource.kt | 6 +++--- ...ageRelayListEvent.kt => ChatMessageRelayListEvent.kt} | 9 +++++++-- .../java/com/vitorpamplona/quartz/events/EventFactory.kt | 2 +- 4 files changed, 14 insertions(+), 9 deletions(-) rename quartz/src/main/java/com/vitorpamplona/quartz/events/{DirectMessageRelayListEvent.kt => ChatMessageRelayListEvent.kt} (89%) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index 82346fcef..b3296b653 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -56,6 +56,7 @@ import com.vitorpamplona.quartz.events.ChannelMessageEvent import com.vitorpamplona.quartz.events.ChannelMetadataEvent import com.vitorpamplona.quartz.events.ChannelMuteUserEvent import com.vitorpamplona.quartz.events.ChatMessageEvent +import com.vitorpamplona.quartz.events.ChatMessageRelayListEvent import com.vitorpamplona.quartz.events.ChatroomKey import com.vitorpamplona.quartz.events.ClassifiedsEvent import com.vitorpamplona.quartz.events.CommunityDefinitionEvent @@ -63,7 +64,6 @@ import com.vitorpamplona.quartz.events.CommunityListEvent import com.vitorpamplona.quartz.events.CommunityPostApprovalEvent import com.vitorpamplona.quartz.events.ContactListEvent import com.vitorpamplona.quartz.events.DeletionEvent -import com.vitorpamplona.quartz.events.DirectMessageRelayListEvent import com.vitorpamplona.quartz.events.DraftEvent import com.vitorpamplona.quartz.events.EmojiPackEvent import com.vitorpamplona.quartz.events.EmojiPackSelectionEvent @@ -701,7 +701,7 @@ object LocalCache { } private fun consume( - event: DirectMessageRelayListEvent, + event: ChatMessageRelayListEvent, relay: Relay?, ) { consumeBaseReplaceable(event, relay) @@ -2273,7 +2273,7 @@ object LocalCache { } is ContactListEvent -> consume(event) is DeletionEvent -> consume(event) - is DirectMessageRelayListEvent -> consume(event, relay) + is ChatMessageRelayListEvent -> consume(event, relay) is DraftEvent -> consume(event, relay) is EmojiPackEvent -> consume(event, relay) is EmojiPackSelectionEvent -> consume(event, relay) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrAccountDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrAccountDataSource.kt index 919e1e37e..63a92b1f0 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrAccountDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrAccountDataSource.kt @@ -39,8 +39,8 @@ import com.vitorpamplona.quartz.events.CalendarDateSlotEvent import com.vitorpamplona.quartz.events.CalendarRSVPEvent import com.vitorpamplona.quartz.events.CalendarTimeSlotEvent import com.vitorpamplona.quartz.events.ChannelMessageEvent +import com.vitorpamplona.quartz.events.ChatMessageRelayListEvent import com.vitorpamplona.quartz.events.ContactListEvent -import com.vitorpamplona.quartz.events.DirectMessageRelayListEvent import com.vitorpamplona.quartz.events.DraftEvent import com.vitorpamplona.quartz.events.EmojiPackSelectionEvent import com.vitorpamplona.quartz.events.Event @@ -102,7 +102,7 @@ object NostrAccountDataSource : NostrDataSource("AccountData") { types = COMMON_FEED_TYPES, filter = JsonFilter( - kinds = listOf(StatusEvent.KIND, AdvertisedRelayListEvent.KIND, DirectMessageRelayListEvent.KIND), + kinds = listOf(StatusEvent.KIND, AdvertisedRelayListEvent.KIND, ChatMessageRelayListEvent.KIND), authors = listOf(account.userProfile().pubkeyHex), limit = 5, ), @@ -120,7 +120,7 @@ object NostrAccountDataSource : NostrDataSource("AccountData") { MetadataEvent.KIND, ContactListEvent.KIND, AdvertisedRelayListEvent.KIND, - DirectMessageRelayListEvent.KIND, + ChatMessageRelayListEvent.KIND, MuteListEvent.KIND, PeopleListEvent.KIND, ), diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/DirectMessageRelayListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/ChatMessageRelayListEvent.kt similarity index 89% rename from quartz/src/main/java/com/vitorpamplona/quartz/events/DirectMessageRelayListEvent.kt rename to quartz/src/main/java/com/vitorpamplona/quartz/events/ChatMessageRelayListEvent.kt index b7eb3b451..f10a5a255 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/DirectMessageRelayListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/ChatMessageRelayListEvent.kt @@ -21,12 +21,13 @@ package com.vitorpamplona.quartz.events import androidx.compose.runtime.Immutable +import com.vitorpamplona.quartz.encoders.ATag import com.vitorpamplona.quartz.encoders.HexKey import com.vitorpamplona.quartz.signers.NostrSigner import com.vitorpamplona.quartz.utils.TimeUtils @Immutable -class DirectMessageRelayListEvent( +class ChatMessageRelayListEvent( id: HexKey, pubKey: HexKey, createdAt: Long, @@ -50,11 +51,15 @@ class DirectMessageRelayListEvent( const val KIND = 10050 const val FIXED_D_TAG = "" + fun createAddressTag(pubKey: HexKey): String { + return ATag.assembleATag(KIND, pubKey, FIXED_D_TAG) + } + fun create( relays: List, signer: NostrSigner, createdAt: Long = TimeUtils.now(), - onReady: (DirectMessageRelayListEvent) -> Unit, + onReady: (ChatMessageRelayListEvent) -> Unit, ) { val tags = relays.map { diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/EventFactory.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/EventFactory.kt index ed5346c3d..849b0ea1a 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/EventFactory.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/EventFactory.kt @@ -71,6 +71,7 @@ class EventFactory { ChatMessageEvent(id, pubKey, createdAt, tags, content, sig) } } + ChatMessageRelayListEvent.KIND -> ChatMessageRelayListEvent(id, pubKey, createdAt, tags, content, sig) ClassifiedsEvent.KIND -> ClassifiedsEvent(id, pubKey, createdAt, tags, content, sig) CommunityDefinitionEvent.KIND -> CommunityDefinitionEvent(id, pubKey, createdAt, tags, content, sig) @@ -79,7 +80,6 @@ class EventFactory { CommunityPostApprovalEvent(id, pubKey, createdAt, tags, content, sig) ContactListEvent.KIND -> ContactListEvent(id, pubKey, createdAt, tags, content, sig) DeletionEvent.KIND -> DeletionEvent(id, pubKey, createdAt, tags, content, sig) - DirectMessageRelayListEvent.KIND -> DirectMessageRelayListEvent(id, pubKey, createdAt, tags, content, sig) DraftEvent.KIND -> DraftEvent(id, pubKey, createdAt, tags, content, sig) EmojiPackEvent.KIND -> EmojiPackEvent(id, pubKey, createdAt, tags, content, sig) EmojiPackSelectionEvent.KIND ->