From 4be617e64a1b4a500e0e678ccb4ec74de75a2d56 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 28 Mar 2026 16:38:01 +0000 Subject: [PATCH] revert: keep INostrClient/NostrClient naming and restore onEose/isLive Reverts three naming changes from the previous refactor: - Interface stays INostrClient (not NostrClient) - Class stays NostrClient (not DefaultNostrClient) - onEose stays onEose (not onCaughtUp) - isLive stays isLive (not isRealTime) All other renames from the API simplification are preserved: subscribe, unsubscribe, publish, count, fetchAll, fetchFirst, etc. https://claude.ai/code/session_01JPcYCcRx5eZN4GvgGxGwbf --- .../ThreadDualAxisChartAssemblerTest.kt | 2 +- .../relays/eventsync/EventSyncTest.kt | 4 +- .../com/vitorpamplona/amethyst/AppModules.kt | 6 +- .../vitorpamplona/amethyst/model/Account.kt | 4 +- .../model/accountsCache/AccountCacheState.kt | 4 +- .../model/nip62Vanish/VanishRequestsState.kt | 4 +- .../service/broadcast/BroadcastTracker.kt | 6 +- .../relayClient/CacheClientConnector.kt | 4 +- .../relayClient/RelayProxyClientConnector.kt | 4 +- .../authCommand/model/AuthCoordinator.kt | 4 +- .../eoseManagers/PerUniqueIdEoseManager.kt | 10 ++-- .../PerUserAndFollowListEoseManager.kt | 10 ++-- .../eoseManagers/PerUserEoseManager.kt | 10 ++-- .../SingleSubNoEoseCacheEoseManager.kt | 10 ++-- .../notifyCommand/model/NotifyCoordinator.kt | 4 +- .../RelaySubscriptionsCoordinator.kt | 4 +- .../account/AccountFilterAssembler.kt | 4 +- .../drafts/AccountDraftsEoseManager.kt | 4 +- .../AccountFollowsLoaderSubAssembler.kt | 10 ++-- .../metadata/AccountMetadataEoseManager.kt | 4 +- ...NotificationsEoseFromInboxRelaysManager.kt | 4 +- ...otificationsEoseFromRandomRelaysManager.kt | 4 +- .../AccountGiftWrapsEoseManager.kt | 4 +- .../ChannelFinderFilterAssemblyGroup.kt | 4 +- ...adataAndLiveActivityWatcherSubAssembler.kt | 4 +- .../ChannelLoaderSubAssembler.kt | 4 +- .../ChannelMetadataWatcherSubAssembler.kt | 4 +- .../LiveActivityWatcherSubAssembly.kt | 4 +- .../event/EventFinderFilterAssembler.kt | 4 +- .../loaders/NoteEventLoaderSubAssembler.kt | 4 +- .../watchers/EventWatcherSubAssembler.kt | 4 +- .../nwc/NWCPaymentFilterAssembler.kt | 4 +- .../nwc/NWCPaymentWatcherSubAssembler.kt | 4 +- .../user/UserFinderFilterAssembler.kt | 4 +- .../loaders/UserOutboxFinderSubAssembler.kt | 6 +- .../user/watchers/UserCardsSubAssembler.kt | 4 +- .../user/watchers/UserReportsSubAssembler.kt | 4 +- .../user/watchers/UserWatcherSubAssembler.kt | 10 ++-- .../searchCommand/SearchFilterAssembler.kt | 4 +- .../SearchPostWatcherSubAssembler.kt | 4 +- .../SearchUserWatcherSubAssembler.kt | 4 +- .../speedLogger/RelaySpeedLogger.kt | 6 +- .../ui/screen/AccountSessionManager.kt | 4 +- .../ui/screen/loggedIn/AccountViewModel.kt | 2 +- .../datasource/ChatroomFilterAssembler.kt | 4 +- .../datasource/ChatroomFilterSubAssembler.kt | 4 +- .../datasource/ChannelFilterAssembler.kt | 4 +- .../ChannelFromUserFilterSubAssembler.kt | 4 +- .../ChannelPublicFilterSubAssembler.kt | 4 +- .../datasource/ChatroomListFilterAssembler.kt | 4 +- .../DMsFromUserFilterSubAssembler.kt | 4 +- .../FollowingEphemeralChatSubAssembler.kt | 4 +- .../FollowingPublicChatSubAssembler.kt | 4 +- .../datasource/ChessFeedFilterSubAssembler.kt | 4 +- .../chess/datasource/ChessFilterAssembler.kt | 4 +- .../CommunityFeedFilterSubAssembler.kt | 4 +- .../datasource/CommunityFilterAssembler.kt | 4 +- .../datasource/DiscoveryFilterAssembler.kt | 4 +- ...yFollowsSetsAndLiveStreamsSubAssembler2.kt | 4 +- ...yLongFormClassifiedsAndDVMSubAssembler1.kt | 4 +- ...yPublicChatsAndCommunitiesSubAssembler3.kt | 4 +- .../FollowPackFeedFilterAssembler.kt | 4 +- .../FollowPackFeedFilterSubAssembler.kt | 4 +- .../GeoHashFeedFilterSubAssembler.kt | 4 +- .../datasource/GeoHashFilterAssembler.kt | 4 +- .../HashtagFeedFilterSubAssembler.kt | 4 +- .../datasource/HashtagFilterAssembler.kt | 4 +- .../home/datasource/HomeFilterAssembler.kt | 4 +- .../HomeOutboxEventsEoseManager.kt | 4 +- .../datasource/UserProfileFilterAssembler.kt | 4 +- .../UserProfileFollowersFilterSubAssembler.kt | 4 +- .../UserProfileMediaFilterSubAssembler.kt | 4 +- .../UserProfileMetadataFilterSubAssembler.kt | 4 +- .../UserProfilePostsFilterSubAssembler.kt | 4 +- .../UserProfileZapsFilterSubAssembler.kt | 4 +- .../datasource/RelayFeedFilterAssembler.kt | 4 +- .../datasource/RelayFeedFilterSubAssembler.kt | 4 +- .../RelayInfoNip66FilterAssembler.kt | 4 +- .../RelayInfoNip66FilterSubAssembler.kt | 4 +- .../loggedIn/relays/eventsync/EventSync.kt | 8 +-- .../datasources/ThreadFilterAssembler.kt | 4 +- .../ThreadEventLoaderSubAssembler.kt | 4 +- .../subassembies/ThreadFilterSubAssembler.kt | 4 +- .../video/datasource/VideoFilterAssembler.kt | 4 +- .../VideoOutboxEventsFilterSubAssembler.kt | 4 +- .../commons/chess/ChessRelayFetchHelper.kt | 12 ++-- .../domain/nip46/BunkerLoginUseCase.kt | 4 +- .../domain/nip46/NostrConnectLoginUseCase.kt | 8 +-- .../assemblers/FeedMetadataCoordinator.kt | 6 +- .../assemblers/MetadataFilterAssembler.kt | 4 +- .../assemblers/ReactionsFilterAssembler.kt | 4 +- .../eoseManagers/BaseEoseManager.kt | 4 +- .../eoseManagers/PerKeyEoseManager.kt | 10 ++-- .../eoseManagers/SingleSubEoseManager.kt | 10 ++-- .../commons/chess/ChessEventBroadcaster.kt | 8 +-- .../desktop/account/AccountManager.kt | 12 ++-- .../amethyst/desktop/chess/ChessScreen.kt | 2 +- .../desktop/network/RelayConnectionManager.kt | 10 ++-- .../subscriptions/ChessSubscription.kt | 22 ++++---- .../DesktopRelaySubscriptionsCoordinator.kt | 8 +-- .../desktop/subscriptions/FeedSubscription.kt | 56 +++++++++---------- .../desktop/subscriptions/FilterDMs.kt | 16 +++--- .../subscriptions/ProfileSubscription.kt | 20 +++---- .../subscriptions/SubscriptionUtils.kt | 10 ++-- .../desktop/ui/ArticleReaderScreen.kt | 4 +- .../amethyst/desktop/ui/BookmarksScreen.kt | 6 +- .../amethyst/desktop/ui/NoteActions.kt | 8 +-- .../desktop/ui/NotificationsScreen.kt | 2 +- .../amethyst/desktop/ui/ReadsScreen.kt | 4 +- .../amethyst/desktop/ui/SearchScreen.kt | 4 +- .../amethyst/desktop/ui/ThreadScreen.kt | 4 +- .../amethyst/desktop/ui/UserProfileScreen.kt | 14 ++--- .../desktop/ui/chats/ChatroomListState.kt | 2 +- .../desktop/ui/chats/DmSendTracker.kt | 4 +- .../amethyst/desktop/ui/chats/NewDmDialog.kt | 2 +- .../desktop/cache/CoordinatorPipelineTest.kt | 8 +-- ...ostrClientInterface.kt => INostrClient.kt} | 4 +- .../{DefaultNostrClient.kt => NostrClient.kt} | 6 +- .../client/accessories/EventCollector.kt | 6 +- .../client/accessories/NostrClientCountExt.kt | 8 +-- .../accessories/NostrClientFetchAllExt.kt | 20 +++---- .../NostrClientFetchAllPagesExt.kt | 10 ++-- .../accessories/NostrClientFetchFirstExt.kt | 20 +++---- .../accessories/NostrClientPublishExt.kt | 6 +- .../RelayInsertConfirmationCollector.kt | 6 +- .../relay/client/accessories/RelayLogger.kt | 6 +- .../relay/client/accessories/RelayNotifier.kt | 6 +- .../client/accessories/RelayOfflineTracker.kt | 6 +- .../relay/client/auth/RelayAuthenticator.kt | 4 +- .../client/counts/RelayActiveCountStates.kt | 4 +- .../relay/client/pool/PoolRequests.kt | 6 +- .../relay/client/reqs/DynamicSubscription.kt | 8 +-- .../client/reqs/NostrClientFetchAsFlowExt.kt | 14 ++--- .../reqs/NostrClientSubscribeAsFlowExt.kt | 14 ++--- .../client/reqs/RelayActiveRequestStates.kt | 6 +- .../client/reqs/RequestSubscriptionState.kt | 2 +- .../relay/client/reqs/StaticSubscription.kt | 18 +++--- .../relay/client/reqs/SubscriptionListener.kt | 4 +- .../relay/client/reqs/stats/RelayReqStats.kt | 6 +- .../relay/client/stats/RelayStats.kt | 4 +- .../subscriptions/SubscriptionController.kt | 6 +- .../nip01Core/relay/server/LiveEventStore.kt | 4 +- .../nip01Core/relay/server/RelaySession.kt | 2 +- .../signer/NostrSignerRemote.kt | 6 +- .../signer/RemoteSignerManager.kt | 4 +- .../nip77Negentropy/NegentropyManager.kt | 2 +- .../signer/NostrSignerRemoteIsolationTest.kt | 6 +- .../relay/NostrClientFirstEventTest.kt | 3 +- .../relay/NostrClientManualSubTest.kt | 7 +-- .../relay/NostrClientQueryCountTest.kt | 7 +-- .../relay/NostrClientRepeatSubTest.kt | 3 +- .../NostrClientReqBypassingRelayLimitsTest.kt | 5 +- .../relay/NostrClientSendAndWaitTest.kt | 3 +- .../NostrClientSubscriptionAsFlowTest.kt | 5 +- .../relay/NostrClientSubscriptionTest.kt | 3 +- ...trClientSubscriptionUntilEoseAsFlowTest.kt | 5 +- 156 files changed, 464 insertions(+), 473 deletions(-) rename quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/{NostrClientInterface.kt => INostrClient.kt} (98%) rename quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/{DefaultNostrClient.kt => NostrClient.kt} (98%) diff --git a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ThreadDualAxisChartAssemblerTest.kt b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ThreadDualAxisChartAssemblerTest.kt index 095256bdd..9902c067a 100644 --- a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ThreadDualAxisChartAssemblerTest.kt +++ b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ThreadDualAxisChartAssemblerTest.kt @@ -54,7 +54,7 @@ class ThreadDualAxisChartAssemblerTest { val scope = CoroutineScope(Dispatchers.IO + SupervisorJob()) val client = - DefaultNostrClient( + NostrClient( OkHttpWebSocket.Builder { OkHttpClient .Builder() diff --git a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSyncTest.kt b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSyncTest.kt index 2c882a0a0..41dd0cc3b 100644 --- a/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSyncTest.kt +++ b/amethyst/src/androidTest/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSyncTest.kt @@ -67,7 +67,7 @@ class EventSyncTest { inboxTargets = { setOf(vitor) }, dmTargets = { setOf(vitor) }, clientBuilder = { - DefaultNostrClient(socketBuilder, appScope) + NostrClient(socketBuilder, appScope) }, scope = appScope, ) @@ -86,7 +86,7 @@ class EventSyncTest { inboxTargets = { setOf(vitor) }, dmTargets = { setOf(vitor) }, clientBuilder = { - val newClient = DefaultNostrClient(socketBuilder, appScope) + val newClient = NostrClient(socketBuilder, appScope) val logger = RelayLogger(newClient, debugSending = true, debugReceiving = false) val signer = NostrSignerInternal(KeyPair()) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/AppModules.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/AppModules.kt index e29b7454a..2f3690482 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/AppModules.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/AppModules.kt @@ -68,7 +68,7 @@ import com.vitorpamplona.amethyst.ui.screen.AccountSessionManager import com.vitorpamplona.amethyst.ui.screen.UiSettingsState import com.vitorpamplona.amethyst.ui.tor.TorManager import com.vitorpamplona.quartz.nip01Core.core.Address -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayLogger import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayOfflineTracker import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.stats.RelayReqStats @@ -244,7 +244,7 @@ class AppModules( scope = applicationIOScope, ) - // Connects the NostrClient class with okHttp + // Connects the INostrClient class with okHttp val websocketBuilder = OkHttpWebSocket.Builder { url -> val useTor = torEvaluatorFlow.flow.value.useTor(url) @@ -255,7 +255,7 @@ class AppModules( val cache: LocalCache = LocalCache // Provides a relay pool - val client: NostrClient = DefaultNostrClient(websocketBuilder, applicationIOScope) + val client: INostrClient = NostrClient(websocketBuilder, applicationIOScope) // Watches for changes on Tor and Relay List Settings val relayProxyClientConnector = 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 6c99e5d71..f3bfa0e95 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -135,7 +135,7 @@ import com.vitorpamplona.quartz.nip01Core.hints.EventHintBundle import com.vitorpamplona.quartz.nip01Core.hints.EventHintProvider import com.vitorpamplona.quartz.nip01Core.hints.PubKeyHintProvider import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.fetchFirst import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -244,7 +244,7 @@ class Account( val nwcFilterAssembler: () -> NWCPaymentFilterAssembler, val otsResolverBuilder: () -> OtsResolver, val cache: LocalCache, - val client: NostrClient, + val client: INostrClient, val scope: CoroutineScope, ) : IAccount { private var userProfileCache: User? = null diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/accountsCache/AccountCacheState.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/accountsCache/AccountCacheState.kt index db5787cc6..30379256b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/accountsCache/AccountCacheState.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/accountsCache/AccountCacheState.kt @@ -28,7 +28,7 @@ import com.vitorpamplona.amethyst.service.location.LocationState import com.vitorpamplona.amethyst.service.relayClient.reqCommand.nwc.NWCPaymentFilterAssembler import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.toHexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip03Timestamp.OtsResolver @@ -50,7 +50,7 @@ class AccountCacheState( val contentResolverFn: () -> ContentResolver, val otsResolverBuilder: () -> OtsResolver, val cache: LocalCache, - val client: NostrClient, + val client: INostrClient, ) { val accounts = MutableStateFlow>(emptyMap()) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip62Vanish/VanishRequestsState.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip62Vanish/VanishRequestsState.kt index 8015ed82e..a5337ac52 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip62Vanish/VanishRequestsState.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip62Vanish/VanishRequestsState.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.model.nip62Vanish import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.LocalCache.notes -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.fetchFirst import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -61,7 +61,7 @@ enum class ComplianceStatus { class VanishRequestsState( val signer: NostrSigner, val cache: LocalCache, - val client: NostrClient, + val client: INostrClient, val scope: CoroutineScope, ) { val noteFlow = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/broadcast/BroadcastTracker.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/broadcast/BroadcastTracker.kt index ad5855b56..7c9e15c08 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/broadcast/BroadcastTracker.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/broadcast/BroadcastTracker.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.amethyst.service.broadcast import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.Message @@ -71,7 +71,7 @@ class BroadcastTracker { suspend fun trackBroadcast( event: Event, relays: Set, - client: NostrClient, + client: INostrClient, ) { val trackingId = UUID.randomUUID().toString() @@ -232,7 +232,7 @@ class BroadcastTracker { @OptIn(DelicateCoroutinesApi::class) suspend fun retry( broadcast: BroadcastEvent, - client: NostrClient, + client: INostrClient, specificRelay: NormalizedRelayUrl? = null, ): BroadcastEvent { val event = broadcast.event diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/CacheClientConnector.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/CacheClientConnector.kt index 6a0bbd52c..6e03d26c7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/CacheClientConnector.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/CacheClientConnector.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.service.relayClient import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.EventCollector import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayInsertConfirmationCollector import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -31,7 +31,7 @@ import com.vitorpamplona.quartz.nip59Giftwrap.seals.SealedRumorEvent import com.vitorpamplona.quartz.nip59Giftwrap.wraps.GiftWrapEvent class CacheClientConnector( - val client: NostrClient, + val client: INostrClient, val cache: LocalCache, ) { val receiver = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/RelayProxyClientConnector.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/RelayProxyClientConnector.kt index b48084821..512f85a3b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/RelayProxyClientConnector.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/RelayProxyClientConnector.kt @@ -26,7 +26,7 @@ import com.vitorpamplona.amethyst.service.connectivity.ConnectivityStatus import com.vitorpamplona.amethyst.service.okhttp.DualHttpClientManagerForRelays import com.vitorpamplona.amethyst.ui.tor.TorManager import com.vitorpamplona.amethyst.ui.tor.TorServiceStatus -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.utils.Log import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -48,7 +48,7 @@ class RelayProxyClientConnector( val okHttpClients: DualHttpClientManagerForRelays, val connManager: ConnectivityManager, val torManager: TorManager, - val client: NostrClient, + val client: INostrClient, val scope: CoroutineScope, ) { data class RelayServiceInfra( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/authCommand/model/AuthCoordinator.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/authCommand/model/AuthCoordinator.kt index 5e574086d..2437c21a2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/authCommand/model/AuthCoordinator.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/authCommand/model/AuthCoordinator.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.service.relayClient.authCommand.model import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.isDebug import com.vitorpamplona.amethyst.model.Account -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.auth.RelayAuthenticator import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync import com.vitorpamplona.quartz.utils.Log @@ -35,7 +35,7 @@ class ScreenAuthAccount( @Stable class AuthCoordinator( - client: NostrClient, + client: INostrClient, scope: CoroutineScope, ) { private val authWithAccounts = ListWithUniqueSetCache { it.account } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUniqueIdEoseManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUniqueIdEoseManager.kt index 15bce2c7c..2817e2a39 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUniqueIdEoseManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUniqueIdEoseManager.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.commons.relayClient.eoseManagers.BaseEoseManag import com.vitorpamplona.amethyst.service.relays.EOSEByKey import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.pool.groupByRelay import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener @@ -42,7 +42,7 @@ import com.vitorpamplona.quartz.utils.TimeUtils * shares all EOSEs among all users. */ abstract class PerUniqueIdEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, val invalidateAfterEose: Boolean = false, ) : BaseEoseManager(client, allKeys) { @@ -69,7 +69,7 @@ abstract class PerUniqueIdEoseManager( open fun newSub(key: T): Subscription = requestNewSubscription( object : SubscriptionListener { - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -78,11 +78,11 @@ abstract class PerUniqueIdEoseManager( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { - if (isRealTime) { + if (isLive) { newEose(key, relay, TimeUtils.now(), forFilters) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUserAndFollowListEoseManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUserAndFollowListEoseManager.kt index ec6477bd6..0635acab8 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUserAndFollowListEoseManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUserAndFollowListEoseManager.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relays.EOSEAccountKey import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.pool.groupByRelay import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener @@ -46,7 +46,7 @@ import com.vitorpamplona.quartz.utils.TimeUtils * app reuse the EOSE because it assumes the filter is going to be different */ abstract class PerUserAndFollowListEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, val invalidateAfterEose: Boolean = false, ) : BaseEoseManager(client, allKeys) { @@ -70,7 +70,7 @@ abstract class PerUserAndFollowListEoseManager( open fun newSub(key: T): Subscription = requestNewSubscription( object : SubscriptionListener { - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -79,11 +79,11 @@ abstract class PerUserAndFollowListEoseManager( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { - if (isRealTime) { + if (isLive) { newEose(key, relay, TimeUtils.now(), forFilters) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUserEoseManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUserEoseManager.kt index c1b9e7de6..ad899cd2c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUserEoseManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/PerUserEoseManager.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relays.EOSEAccountFast import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.pool.groupByRelay import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener @@ -44,7 +44,7 @@ import com.vitorpamplona.quartz.utils.TimeUtils * the subscription disappears and comes back later. */ abstract class PerUserEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, val invalidateAfterEose: Boolean = false, ) : BaseEoseManager(client, allKeys) { @@ -68,7 +68,7 @@ abstract class PerUserEoseManager( open fun newSub(key: T): Subscription = requestNewSubscription( object : SubscriptionListener { - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -77,11 +77,11 @@ abstract class PerUserEoseManager( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { - if (isRealTime) { + if (isLive) { newEose(key, relay, TimeUtils.now(), forFilters) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/SingleSubNoEoseCacheEoseManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/SingleSubNoEoseCacheEoseManager.kt index b241a6179..28c3648bb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/SingleSubNoEoseCacheEoseManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/SingleSubNoEoseCacheEoseManager.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.service.relayClient.eoseManagers import com.vitorpamplona.amethyst.commons.relayClient.eoseManagers.BaseEoseManager import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.pool.groupByRelay import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener @@ -35,14 +35,14 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl * filters */ abstract class SingleSubNoEoseCacheEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, val invalidateAfterEose: Boolean = false, ) : BaseEoseManager(client, allKeys) { val sub = requestNewSubscription( object : SubscriptionListener { - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -53,11 +53,11 @@ abstract class SingleSubNoEoseCacheEoseManager( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { - if (isRealTime) { + if (isLive) { if (invalidateAfterEose) { invalidateFilters() } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/notifyCommand/model/NotifyCoordinator.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/notifyCommand/model/NotifyCoordinator.kt index 1842141a3..404015a6b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/notifyCommand/model/NotifyCoordinator.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/notifyCommand/model/NotifyCoordinator.kt @@ -20,11 +20,11 @@ */ package com.vitorpamplona.amethyst.service.relayClient.notifyCommand.model -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayNotifier class NotifyCoordinator( - client: NostrClient, + client: INostrClient, ) { val requests = NotifyRequestsCache() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/RelaySubscriptionsCoordinator.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/RelaySubscriptionsCoordinator.kt index 43e60799e..3c1363a1f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/RelaySubscriptionsCoordinator.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/RelaySubscriptionsCoordinator.kt @@ -43,14 +43,14 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.relay.datasource.RelayFeedF import com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.datasource.RelayInfoNip66FilterAssembler import com.vitorpamplona.amethyst.ui.screen.loggedIn.threadview.datasources.ThreadFilterAssembler import com.vitorpamplona.amethyst.ui.screen.loggedIn.video.datasource.VideoFilterAssembler -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayOfflineTracker import com.vitorpamplona.quartz.nip01Core.relay.client.auth.IAuthStatus import kotlinx.coroutines.CoroutineScope class RelaySubscriptionsCoordinator( cache: LocalCache, - client: NostrClient, + client: INostrClient, authenticator: IAuthStatus, failureTracker: RelayOfflineTracker, scope: CoroutineScope, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/AccountFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/AccountFilterAssembler.kt index 9b3aa2908..1c387a304 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/AccountFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/AccountFilterAssembler.kt @@ -32,7 +32,7 @@ import com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.nip01No import com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.nip59GiftWraps.AccountGiftWrapsEoseManager import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountFeedContentStates import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayOfflineTracker import com.vitorpamplona.quartz.nip01Core.relay.client.auth.IAuthStatus import kotlinx.coroutines.CoroutineScope @@ -50,7 +50,7 @@ class AccountQueryState( */ @Stable class AccountFilterAssembler( - client: NostrClient, + client: INostrClient, cache: LocalCache, authenticator: IAuthStatus, failureTracker: RelayOfflineTracker, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/drafts/AccountDraftsEoseManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/drafts/AccountDraftsEoseManager.kt index 8d5808e51..1d87c2f00 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/drafts/AccountDraftsEoseManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/drafts/AccountDraftsEoseManager.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.AccountQueryState import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import kotlinx.coroutines.Dispatchers @@ -34,7 +34,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch class AccountDraftsEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun user(key: AccountQueryState) = key.account.userProfile() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/follows/AccountFollowsLoaderSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/follows/AccountFollowsLoaderSubAssembler.kt index f89a4c06b..dc98df29f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/follows/AccountFollowsLoaderSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/follows/AccountFollowsLoaderSubAssembler.kt @@ -30,7 +30,7 @@ import com.vitorpamplona.amethyst.service.BundledUpdate import com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.AccountQueryState import com.vitorpamplona.amethyst.service.relays.EOSEAccountFast import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayOfflineTracker import com.vitorpamplona.quartz.nip01Core.relay.client.auth.IAuthStatus import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter @@ -56,7 +56,7 @@ import kotlinx.coroutines.launch * It needs to be super fast on startup. */ class AccountFollowsLoaderSubAssembler( - val client: NostrClient, + val client: INostrClient, val cache: LocalCache, val scope: CoroutineScope, val authStatus: IAuthStatus, @@ -108,7 +108,7 @@ class AccountFollowsLoaderSubAssembler( orchestrator.requestNewSubscription( if (isDebug) logTag + newSubId() else newSubId(), object : SubscriptionListener { - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -117,11 +117,11 @@ class AccountFollowsLoaderSubAssembler( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { - if (isRealTime) { + if (isLive) { newEose(TimeUtils.now(), relay, forFilters) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/AccountMetadataEoseManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/AccountMetadataEoseManager.kt index 8afa83e02..db90fd8b7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/AccountMetadataEoseManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/AccountMetadataEoseManager.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.AccountQueryState import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import com.vitorpamplona.quartz.utils.TimeUtils @@ -35,7 +35,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch class AccountMetadataEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun user(key: AccountQueryState) = key.account.userProfile() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip01Notifications/AccountNotificationsEoseFromInboxRelaysManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip01Notifications/AccountNotificationsEoseFromInboxRelaysManager.kt index 40695d1e3..9d7c0cdfe 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip01Notifications/AccountNotificationsEoseFromInboxRelaysManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip01Notifications/AccountNotificationsEoseFromInboxRelaysManager.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.AccountQueryState import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import com.vitorpamplona.quartz.utils.TimeUtils @@ -36,7 +36,7 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch class AccountNotificationsEoseFromInboxRelaysManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun user(key: AccountQueryState) = key.account.userProfile() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip01Notifications/AccountNotificationsEoseFromRandomRelaysManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip01Notifications/AccountNotificationsEoseFromRandomRelaysManager.kt index 38cd0a1a6..9aa0acc87 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip01Notifications/AccountNotificationsEoseFromRandomRelaysManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip01Notifications/AccountNotificationsEoseFromRandomRelaysManager.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.AccountQueryState import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import com.vitorpamplona.quartz.utils.TimeUtils @@ -37,7 +37,7 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch class AccountNotificationsEoseFromRandomRelaysManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun user(key: AccountQueryState) = key.account.userProfile() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip59GiftWraps/AccountGiftWrapsEoseManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip59GiftWraps/AccountGiftWrapsEoseManager.kt index ef5d8bfbe..ab4de2875 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip59GiftWraps/AccountGiftWrapsEoseManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/nip59GiftWraps/AccountGiftWrapsEoseManager.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.AccountQueryState import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import kotlinx.coroutines.Dispatchers @@ -34,7 +34,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch class AccountGiftWrapsEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun user(key: AccountQueryState) = key.account.userProfile() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/ChannelFinderFilterAssemblyGroup.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/ChannelFinderFilterAssemblyGroup.kt index 33023a862..9ea523510 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/ChannelFinderFilterAssemblyGroup.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/ChannelFinderFilterAssemblyGroup.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.commons.model.Channel import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.mixChatsLive.ChannelMetadataAndLiveActivityWatcherSubAssembler import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip28PublicChats.ChannelLoaderSubAssembler -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient // This allows multiple screen to be listening to tags, even the same tag @Stable @@ -35,7 +35,7 @@ class ChannelFinderQueryState( @Stable class ChannelFinderFilterAssemblyGroup( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/mixChatsLive/ChannelMetadataAndLiveActivityWatcherSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/mixChatsLive/ChannelMetadataAndLiveActivityWatcherSubAssembler.kt index 9fcb70ba4..57dfe7050 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/mixChatsLive/ChannelMetadataAndLiveActivityWatcherSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/mixChatsLive/ChannelMetadataAndLiveActivityWatcherSubAssembler.kt @@ -27,7 +27,7 @@ import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.Channel import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip28PublicChats.filterChannelMetadataUpdatesById import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip53LiveActivities.filterLiveStreamUpdatesByAddress import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.utils.mapOfSet @@ -39,7 +39,7 @@ import com.vitorpamplona.quartz.utils.mapOfSet * only one EOSE for everybody. */ class ChannelMetadataAndLiveActivityWatcherSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip28PublicChats/ChannelLoaderSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip28PublicChats/ChannelLoaderSubAssembler.kt index 10cacc571..c14d14bd1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip28PublicChats/ChannelLoaderSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip28PublicChats/ChannelLoaderSubAssembler.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip28P import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.SingleSubNoEoseCacheEoseManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.ChannelFinderQueryState -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter /** @@ -35,7 +35,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter * This is one filter for everybody. */ class ChannelLoaderSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubNoEoseCacheEoseManager(client, allKeys, invalidateAfterEose = true) { override fun updateFilter(keys: List): List = filterMissingChannelsById(keys) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip28PublicChats/ChannelMetadataWatcherSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip28PublicChats/ChannelMetadataWatcherSubAssembler.kt index 21992934a..4f8dfde48 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip28PublicChats/ChannelMetadataWatcherSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip28PublicChats/ChannelMetadataWatcherSubAssembler.kt @@ -25,11 +25,11 @@ import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChann import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEoseManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.ChannelFinderQueryState import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class ChannelMetadataWatcherSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip53LiveActivities/LiveActivityWatcherSubAssembly.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip53LiveActivities/LiveActivityWatcherSubAssembly.kt index d7e5541b7..0d087ca16 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip53LiveActivities/LiveActivityWatcherSubAssembly.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/channel/nip53LiveActivities/LiveActivityWatcherSubAssembly.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActiviti import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEoseManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.ChannelFinderQueryState import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter /** @@ -33,7 +33,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter * since they are replaceable. */ class LiveActivityWatcherSubAssembly( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/EventFinderFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/EventFinderFilterAssembler.kt index 9c6858b73..29a676749 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/EventFinderFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/EventFinderFilterAssembler.kt @@ -26,7 +26,7 @@ import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.loaders.NoteEventLoaderSubAssembler import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.watchers.EventWatcherSubAssembler -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient // This allows multiple screen to be listening to tags, even the same tag @Stable @@ -37,7 +37,7 @@ class EventFinderQueryState( @Stable class EventFinderFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/loaders/NoteEventLoaderSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/loaders/NoteEventLoaderSubAssembler.kt index 6fdc7ad79..9ff15e640 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/loaders/NoteEventLoaderSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/loaders/NoteEventLoaderSubAssembler.kt @@ -22,10 +22,10 @@ package com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.loaders import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.SingleSubNoEoseCacheEoseManager import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.EventFinderQueryState -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient class NoteEventLoaderSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubNoEoseCacheEoseManager(client, allKeys, invalidateAfterEose = true) { override fun updateFilter(keys: List) = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/watchers/EventWatcherSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/watchers/EventWatcherSubAssembler.kt index aa730d6ab..91358cdfd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/watchers/EventWatcherSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/watchers/EventWatcherSubAssembler.kt @@ -27,13 +27,13 @@ import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.EventFind import com.vitorpamplona.amethyst.service.relays.EOSEAccountFast import com.vitorpamplona.amethyst.service.relays.MutableTime import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl class EventWatcherSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubEoseManager(client, allKeys) { var lastNotesOnFilter = emptyList() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/nwc/NWCPaymentFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/nwc/NWCPaymentFilterAssembler.kt index 1b8e7e4c7..48c66be4e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/nwc/NWCPaymentFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/nwc/NWCPaymentFilterAssembler.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.service.relayClient.reqCommand.nwc import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl // This allows multiple screen to be listening to tags, even the same tag @@ -37,7 +37,7 @@ class NWCPaymentQueryState( @Stable class NWCPaymentFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/nwc/NWCPaymentWatcherSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/nwc/NWCPaymentWatcherSubAssembler.kt index 2ff1bcd18..4be5b34c4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/nwc/NWCPaymentWatcherSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/nwc/NWCPaymentWatcherSubAssembler.kt @@ -21,11 +21,11 @@ package com.vitorpamplona.amethyst.service.relayClient.reqCommand.nwc import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.SingleSubNoEoseCacheEoseManager -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class NWCPaymentWatcherSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubNoEoseCacheEoseManager(client, allKeys) { override fun updateFilter(keys: List): List? { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/UserFinderFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/UserFinderFilterAssembler.kt index 7123850c1..e6b572e09 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/UserFinderFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/UserFinderFilterAssembler.kt @@ -29,7 +29,7 @@ import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.loaders.Us import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.watchers.UserCardsSubAssembler import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.watchers.UserReportsSubAssembler import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.watchers.UserWatcherSubAssembler -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayOfflineTracker // This allows multiple screen to be listening to tags, even the same tag @@ -41,7 +41,7 @@ class UserFinderQueryState( @Stable class UserFinderFilterAssembler( - client: NostrClient, + client: INostrClient, cache: LocalCache, failureTracker: RelayOfflineTracker, ) : ComposeSubscriptionManager() { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/loaders/UserOutboxFinderSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/loaders/UserOutboxFinderSubAssembler.kt index 9cb8eaf5d..d4d9504db 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/loaders/UserOutboxFinderSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/loaders/UserOutboxFinderSubAssembler.kt @@ -27,7 +27,7 @@ import com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.follows import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.UserFinderQueryState import com.vitorpamplona.amethyst.service.relays.EOSEAccountFast import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayOfflineTracker import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.pool.groupByRelay @@ -38,7 +38,7 @@ import com.vitorpamplona.quartz.nip65RelayList.AdvertisedRelayListEvent import com.vitorpamplona.quartz.utils.TimeUtils class UserOutboxFinderSubAssembler( - client: NostrClient, + client: INostrClient, val cache: LocalCache, val failureTracker: RelayOfflineTracker, allKeys: () -> Set, @@ -69,7 +69,7 @@ class UserOutboxFinderSubAssembler( val sub = requestNewSubscription( object : SubscriptionListener { - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserCardsSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserCardsSubAssembler.kt index 93c97616b..19474b6c4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserCardsSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserCardsSubAssembler.kt @@ -28,14 +28,14 @@ import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.UserFinder import com.vitorpamplona.amethyst.service.relays.MutableTime import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.utils.mapOfSet class UserCardsSubAssembler( - client: NostrClient, + client: INostrClient, val cache: LocalCache, allKeys: () -> Set, ) : SingleSubEoseManager(client, allKeys) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserReportsSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserReportsSubAssembler.kt index 1822f310a..fd2e68532 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserReportsSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserReportsSubAssembler.kt @@ -27,14 +27,14 @@ import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.UserFinderQueryState import com.vitorpamplona.amethyst.service.relays.MutableTime import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.utils.mapOfSet class UserReportsSubAssembler( - client: NostrClient, + client: INostrClient, val cache: LocalCache, allKeys: () -> Set, ) : SingleSubEoseManager(client, allKeys) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserWatcherSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserWatcherSubAssembler.kt index 4d7ea0023..698c93b76 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserWatcherSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/UserWatcherSubAssembler.kt @@ -27,7 +27,7 @@ import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.UserFinderQueryState import com.vitorpamplona.amethyst.service.relays.EOSEAccountFast import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.groupByRelay import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter @@ -35,7 +35,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.utils.TimeUtils class UserWatcherSubAssembler( - client: NostrClient, + client: INostrClient, val cache: LocalCache, allKeys: () -> Set, ) : BaseEoseManager(client, allKeys) { @@ -62,7 +62,7 @@ class UserWatcherSubAssembler( val sub = requestNewSubscription( object : SubscriptionListener { - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -71,11 +71,11 @@ class UserWatcherSubAssembler( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { - if (isRealTime) { + if (isLive) { newEose(relay, TimeUtils.now(), forFilters) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/SearchFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/SearchFilterAssembler.kt index 7f2533ac2..ebbd64c4a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/SearchFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/SearchFilterAssembler.kt @@ -27,7 +27,7 @@ import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.service.relayClient.searchCommand.subassemblies.SearchPostWatcherSubAssembler import com.vitorpamplona.amethyst.service.relayClient.searchCommand.subassemblies.SearchUserWatcherSubAssembler -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -42,7 +42,7 @@ class SearchQueryState( @Stable class SearchFilterAssembler( - client: NostrClient, + client: INostrClient, scope: CoroutineScope, val cache: LocalCache, ) : MutableComposeSubscriptionManager(scope) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/subassemblies/SearchPostWatcherSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/subassemblies/SearchPostWatcherSubAssembler.kt index 32a0a4839..94b63bcad 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/subassemblies/SearchPostWatcherSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/subassemblies/SearchPostWatcherSubAssembler.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEo import com.vitorpamplona.amethyst.service.relayClient.searchCommand.SearchQueryState import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.toHexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress @@ -44,7 +44,7 @@ import com.vitorpamplona.quartz.utils.Hex */ class SearchPostWatcherSubAssembler( val cache: LocalCache, - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/subassemblies/SearchUserWatcherSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/subassemblies/SearchUserWatcherSubAssembler.kt index 412021ad2..1fa7801e6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/subassemblies/SearchUserWatcherSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/searchCommand/subassemblies/SearchUserWatcherSubAssembler.kt @@ -26,7 +26,7 @@ import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEo import com.vitorpamplona.amethyst.service.relayClient.searchCommand.SearchQueryState import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.toHexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress @@ -45,7 +45,7 @@ import com.vitorpamplona.quartz.utils.Hex */ class SearchUserWatcherSubAssembler( val cache: LocalCache, - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/speedLogger/RelaySpeedLogger.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/speedLogger/RelaySpeedLogger.kt index 4c57edd72..66718a9ea 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/speedLogger/RelaySpeedLogger.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/speedLogger/RelaySpeedLogger.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.amethyst.service.relayClient.speedLogger -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.EventMessage @@ -29,10 +29,10 @@ import com.vitorpamplona.quartz.utils.Log import com.vitorpamplona.quartz.utils.bytesUsedInMemory /** - * Listens to NostrClient's onNotify messages from the relay + * Listens to INostrClient's onNotify messages from the relay */ class RelaySpeedLogger( - val client: NostrClient, + val client: INostrClient, ) { companion object { val TAG: String = RelaySpeedLogger::class.java.simpleName diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountSessionManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountSessionManager.kt index 2d8628574..4bd3202fd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountSessionManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountSessionManager.kt @@ -38,7 +38,7 @@ import com.vitorpamplona.quartz.nip01Core.core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.core.toHexKey import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent import com.vitorpamplona.quartz.nip02FollowList.tags.ContactTag @@ -94,7 +94,7 @@ sealed class AccountState { class AccountSessionManager( val accountsCache: AccountCacheState, val nip05ClientBuilder: () -> Nip05Client, - val clientBuilder: () -> NostrClient, + val clientBuilder: () -> INostrClient, val localPreferences: LocalPreferences, val scope: CoroutineScope, ) { 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 0563450f3..519d04998 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 @@ -219,7 +219,7 @@ class AccountViewModel( val customScope = CoroutineScope(viewModelScope.coroutineContext + SupervisorJob()) // Provides a relay pool - val newClient = DefaultNostrClient(Amethyst.instance.websocketBuilder, customScope) + val newClient = NostrClient(Amethyst.instance.websocketBuilder, customScope) // Authenticates with relays. val auth = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/ChatroomFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/ChatroomFilterAssembler.kt index e8a6c6906..b5cc945fc 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/ChatroomFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/ChatroomFilterAssembler.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.privateDM.datasource import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager import com.vitorpamplona.amethyst.model.Account -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip17Dm.base.ChatroomKey // This allows multiple screen to be listening to tags, even the same tag @@ -34,7 +34,7 @@ class ChatroomQueryState( } class ChatroomFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/ChatroomFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/ChatroomFilterSubAssembler.kt index 4c427295a..0d451daec 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/ChatroomFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/ChatroomFilterSubAssembler.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.privateDM.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserAndFollowListEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class ChatroomFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserAndFollowListEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/ChannelFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/ChannelFilterAssembler.kt index 4855bf7ee..3edc54fdb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/ChannelFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/ChannelFilterAssembler.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManager import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource.subassemblies.ChannelFromUserFilterSubAssembler import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource.subassemblies.ChannelPublicFilterSubAssembler -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient // This allows multiple screen to be listening to tags, even the same tag class ChannelQueryState( @@ -34,7 +34,7 @@ class ChannelQueryState( ) class ChannelFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/subassemblies/ChannelFromUserFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/subassemblies/ChannelFromUserFilterSubAssembler.kt index db89c4285..70fea4c93 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/subassemblies/ChannelFromUserFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/subassemblies/ChannelFromUserFilterSubAssembler.kt @@ -27,11 +27,11 @@ import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActiviti import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserAndFollowListEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource.ChannelQueryState -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class ChannelFromUserFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserAndFollowListEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/subassemblies/ChannelPublicFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/subassemblies/ChannelPublicFilterSubAssembler.kt index ad10706f5..6fab0c332 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/subassemblies/ChannelPublicFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/datasource/subassemblies/ChannelPublicFilterSubAssembler.kt @@ -27,11 +27,11 @@ import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActiviti import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource.ChannelQueryState -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class ChannelPublicFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/ChatroomListFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/ChatroomListFilterAssembler.kt index 644f705fa..2b9c53450 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/ChatroomListFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/ChatroomListFilterAssembler.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.datasource import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager import com.vitorpamplona.amethyst.model.Account -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient // This allows multiple screen to be listening to tags, even the same tag @Stable @@ -33,7 +33,7 @@ class ChatroomListState( @Stable class ChatroomListFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/DMsFromUserFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/DMsFromUserFilterSubAssembler.kt index d4bab373e..410e03d59 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/DMsFromUserFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/DMsFromUserFilterSubAssembler.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.datasource import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import kotlinx.coroutines.Dispatchers @@ -33,7 +33,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch class DMsFromUserFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/FollowingEphemeralChatSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/FollowingEphemeralChatSubAssembler.kt index 55b457067..ad6ca0ddb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/FollowingEphemeralChatSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/FollowingEphemeralChatSubAssembler.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.datasource import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import kotlinx.coroutines.Dispatchers @@ -34,7 +34,7 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch class FollowingEphemeralChatSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/FollowingPublicChatSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/FollowingPublicChatSubAssembler.kt index 8a927ead6..98c66b737 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/FollowingPublicChatSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/FollowingPublicChatSubAssembler.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.datasource import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import kotlinx.coroutines.Dispatchers @@ -34,7 +34,7 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch class FollowingPublicChatSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/datasource/ChessFeedFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/datasource/ChessFeedFilterSubAssembler.kt index 3bb6d12b3..3a1cccd1d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/datasource/ChessFeedFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/datasource/ChessFeedFilterSubAssembler.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chess.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -42,7 +42,7 @@ data class ChessQueryState( * Sub-assembler that creates the actual relay filters */ class ChessFeedFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/datasource/ChessFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/datasource/ChessFilterAssembler.kt index ba918bf29..04a4fc5b9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/datasource/ChessFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/datasource/ChessFilterAssembler.kt @@ -21,13 +21,13 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chess.datasource import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient /** * Filter assembler for chess events */ class ChessFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/datasource/CommunityFeedFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/datasource/CommunityFeedFilterSubAssembler.kt index 8d68110da..d3571be89 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/datasource/CommunityFeedFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/datasource/CommunityFeedFilterSubAssembler.kt @@ -23,13 +23,13 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.communities.datasource import com.vitorpamplona.amethyst.commons.relayClient.eoseManagers.SingleSubEoseManager import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip72ModCommunities.definition.CommunityDefinitionEvent import com.vitorpamplona.quartz.utils.mapOfSet class CommunityFeedFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/datasource/CommunityFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/datasource/CommunityFilterAssembler.kt index 71974a410..fdb60d00d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/datasource/CommunityFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/datasource/CommunityFilterAssembler.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.communities.datasource import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager import com.vitorpamplona.amethyst.model.AddressableNote -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient // This allows multiple screen to be listening to tags, even the same tag class CommunityQueryState( @@ -30,7 +30,7 @@ class CommunityQueryState( ) class CommunityFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryFilterAssembler.kt index 6792b29af..dc49d49b5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryFilterAssembler.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.discover.datasource import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountFeedContentStates -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import kotlinx.coroutines.CoroutineScope // This allows multiple screen to be listening to tags, even the same tag @@ -34,7 +34,7 @@ class DiscoveryQueryState( ) class DiscoveryFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryFollowsSetsAndLiveStreamsSubAssembler2.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryFollowsSetsAndLiveStreamsSubAssembler2.kt index d3d5be3ae..78eb084d1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryFollowsSetsAndLiveStreamsSubAssembler2.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryFollowsSetsAndLiveStreamsSubAssembler2.kt @@ -26,7 +26,7 @@ import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserAndFol import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.amethyst.ui.screen.loggedIn.discover.nip51FollowSets.makeFollowSetsFilter import com.vitorpamplona.amethyst.ui.screen.loggedIn.discover.nip53LiveActivities.makeLiveActivitiesFilter -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import kotlinx.coroutines.Dispatchers @@ -38,7 +38,7 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch class DiscoveryFollowsSetsAndLiveStreamsSubAssembler2( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserAndFollowListEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryLongFormClassifiedsAndDVMSubAssembler1.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryLongFormClassifiedsAndDVMSubAssembler1.kt index 40279083d..941b95c28 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryLongFormClassifiedsAndDVMSubAssembler1.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryLongFormClassifiedsAndDVMSubAssembler1.kt @@ -27,7 +27,7 @@ import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.amethyst.ui.screen.loggedIn.discover.nip23LongForm.makeLongFormFilter import com.vitorpamplona.amethyst.ui.screen.loggedIn.discover.nip90DVMs.makeContentDVMsFilter import com.vitorpamplona.amethyst.ui.screen.loggedIn.discover.nip99Classifieds.makeClassifiedsFilter -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import kotlinx.coroutines.Dispatchers @@ -39,7 +39,7 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch class DiscoveryLongFormClassifiedsAndDVMSubAssembler1( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserAndFollowListEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryPublicChatsAndCommunitiesSubAssembler3.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryPublicChatsAndCommunitiesSubAssembler3.kt index 78ebfa01d..a6e94c133 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryPublicChatsAndCommunitiesSubAssembler3.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/datasource/DiscoveryPublicChatsAndCommunitiesSubAssembler3.kt @@ -26,7 +26,7 @@ import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserAndFol import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.amethyst.ui.screen.loggedIn.discover.nip28Chats.makePublicChatsFilter import com.vitorpamplona.amethyst.ui.screen.loggedIn.discover.nip72Communities.makeCommunitiesFilter -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import kotlinx.coroutines.Dispatchers @@ -38,7 +38,7 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch class DiscoveryPublicChatsAndCommunitiesSubAssembler3( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserAndFollowListEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/datasource/FollowPackFeedFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/datasource/FollowPackFeedFilterAssembler.kt index 874745483..940414cc4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/datasource/FollowPackFeedFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/datasource/FollowPackFeedFilterAssembler.kt @@ -24,7 +24,7 @@ import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.AddressableNote -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient // This allows multiple screen to be listening to tags, even the same tag class FollowPackFeedQueryState( @@ -34,7 +34,7 @@ class FollowPackFeedQueryState( @Stable class FollowPackFeedFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/datasource/FollowPackFeedFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/datasource/FollowPackFeedFilterSubAssembler.kt index 853e3d346..08f100400 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/datasource/FollowPackFeedFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/datasource/FollowPackFeedFilterSubAssembler.kt @@ -25,12 +25,12 @@ import com.vitorpamplona.amethyst.model.topNavFeeds.allUserFollows.AllUserFollow import com.vitorpamplona.amethyst.model.topNavFeeds.allUserFollows.AllUserFollowsByProxyTopNavFilter import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.datasource.nip65Follows.filterHomePostsByAuthors -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip51Lists.followList.FollowListEvent class FollowPackFeedFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/datasource/GeoHashFeedFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/datasource/GeoHashFeedFilterSubAssembler.kt index 65e2f3d33..9d7fe94ab 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/datasource/GeoHashFeedFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/datasource/GeoHashFeedFilterSubAssembler.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.geohash.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class GeoHashFeedFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/datasource/GeoHashFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/datasource/GeoHashFilterAssembler.kt index af98d9faa..af5257fa6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/datasource/GeoHashFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/datasource/GeoHashFilterAssembler.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.geohash.datasource import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl // This allows multiple screen to be listening to tags, even the same tag @@ -38,7 +38,7 @@ class GeohashQueryState( */ @Stable class GeoHashFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/datasource/HashtagFeedFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/datasource/HashtagFeedFilterSubAssembler.kt index e3156b9f5..23a6b1d22 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/datasource/HashtagFeedFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/datasource/HashtagFeedFilterSubAssembler.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.hashtag.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class HashtagFeedFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/datasource/HashtagFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/datasource/HashtagFilterAssembler.kt index dd3bfa7a3..55a481ed2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/datasource/HashtagFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/datasource/HashtagFilterAssembler.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.hashtag.datasource import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl // This allows multiple screen to be listening to tags, even the same tag @@ -33,7 +33,7 @@ class HashtagQueryState( } class HashtagFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/datasource/HomeFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/datasource/HomeFilterAssembler.kt index 6771f1313..e76959df4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/datasource/HomeFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/datasource/HomeFilterAssembler.kt @@ -25,7 +25,7 @@ import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManager import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountFeedContentStates import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.datasource.nip65Follows.HomeOutboxEventsEoseManager -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import kotlinx.coroutines.CoroutineScope // This allows multiple screen to be listening to tags, even the same tag @@ -39,7 +39,7 @@ class HomeQueryState( @Stable class HomeFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/datasource/nip65Follows/HomeOutboxEventsEoseManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/datasource/nip65Follows/HomeOutboxEventsEoseManager.kt index 075611e1f..ff7f31365 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/datasource/nip65Follows/HomeOutboxEventsEoseManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/datasource/nip65Follows/HomeOutboxEventsEoseManager.kt @@ -40,7 +40,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.datasource.nip01Core.f import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.datasource.nip64Chess.filterHomePostsByChess import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.datasource.nip72Communities.filterHomePostsByAllCommunities import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.datasource.nip72Communities.filterHomePostsByCommunity -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import kotlinx.coroutines.Dispatchers @@ -51,7 +51,7 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch class HomeOutboxEventsEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserAndFollowListEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileFilterAssembler.kt index 6080659e1..b57daf7ce 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileFilterAssembler.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.datasource import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager import com.vitorpamplona.amethyst.model.User -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient // This allows multiple screen to be listening to tags, even the same tag class UserProfileQueryState( @@ -30,7 +30,7 @@ class UserProfileQueryState( ) class UserProfileFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileFollowersFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileFollowersFilterSubAssembler.kt index e15a7514c..6fe462fe8 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileFollowersFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileFollowersFilterSubAssembler.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class UserProfileFollowersFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileMediaFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileMediaFilterSubAssembler.kt index 40f6de975..1066b7f53 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileMediaFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileMediaFilterSubAssembler.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class UserProfileMediaFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileMetadataFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileMetadataFilterSubAssembler.kt index abfb6182b..e6d21c933 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileMetadataFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileMetadataFilterSubAssembler.kt @@ -23,12 +23,12 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.datasource import com.vitorpamplona.amethyst.commons.relayClient.eoseManagers.SingleSubEoseManager import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.utils.mapOfSet class UserProfileMetadataFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfilePostsFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfilePostsFilterSubAssembler.kt index ec945b2b9..2ef23e9a9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfilePostsFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfilePostsFilterSubAssembler.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class UserProfilePostsFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileZapsFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileZapsFilterSubAssembler.kt index 8de29250d..5546024d0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileZapsFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/datasource/UserProfileZapsFilterSubAssembler.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class UserProfileZapsFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relay/datasource/RelayFeedFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relay/datasource/RelayFeedFilterAssembler.kt index 0878a3f0c..a439a9d43 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relay/datasource/RelayFeedFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relay/datasource/RelayFeedFilterAssembler.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.relay.datasource import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl // This allows multiple screens to be listening to the same or different relay feeds. @@ -30,7 +30,7 @@ class RelayFeedQueryState( ) class RelayFeedFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relay/datasource/RelayFeedFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relay/datasource/RelayFeedFilterSubAssembler.kt index de6a9fb36..2a90bd26b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relay/datasource/RelayFeedFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relay/datasource/RelayFeedFilterSubAssembler.kt @@ -22,11 +22,11 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.relay.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter class RelayFeedFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/datasource/RelayInfoNip66FilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/datasource/RelayInfoNip66FilterAssembler.kt index f0961ba0d..8a2654284 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/datasource/RelayInfoNip66FilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/datasource/RelayInfoNip66FilterAssembler.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.datasource import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl class RelayInfoNip66QueryState( @@ -30,7 +30,7 @@ class RelayInfoNip66QueryState( ) class RelayInfoNip66FilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/datasource/RelayInfoNip66FilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/datasource/RelayInfoNip66FilterSubAssembler.kt index 253c14560..676288ee0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/datasource/RelayInfoNip66FilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/datasource/RelayInfoNip66FilterSubAssembler.kt @@ -22,13 +22,13 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.datasource import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEoseManager import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip66RelayMonitor.discovery.RelayDiscoveryEvent class RelayInfoNip66FilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSync.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSync.kt index 59d08dfae..568a7fc17 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSync.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSync.kt @@ -27,7 +27,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.eventsync.EventSync. import com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.eventsync.EventSync.LiveSyncActivity.SourceRelayInfo import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.fetchAllPages import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient @@ -80,7 +80,7 @@ class EventSync( private val outboxTargets: () -> Set, private val inboxTargets: () -> Set, private val dmTargets: () -> Set, - private val clientBuilder: () -> NostrClient, + private val clientBuilder: () -> INostrClient, private val scope: CoroutineScope, ) { companion object { @@ -622,7 +622,7 @@ class EventSync( * * [onEvent] receives the event and the URL of the relay it came from. */ - private suspend fun NostrClient.downloadFromPool( + private suspend fun INostrClient.downloadFromPool( relays: List, filters: Map>, onNewPage: (Long, NormalizedRelayUrl) -> Unit, @@ -661,7 +661,7 @@ class EventSync( * * @return total number of events received across all pages. */ - private suspend fun NostrClient.downloadFromRelay( + private suspend fun INostrClient.downloadFromRelay( relay: NormalizedRelayUrl, filters: List, onNewPage: (Long) -> Unit, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/ThreadFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/ThreadFilterAssembler.kt index 7e74b504c..9cb756013 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/ThreadFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/ThreadFilterAssembler.kt @@ -26,7 +26,7 @@ import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.ui.screen.loggedIn.threadview.datasources.subassembies.ThreadEventLoaderSubAssembler import com.vitorpamplona.amethyst.ui.screen.loggedIn.threadview.datasources.subassembies.ThreadFilterSubAssembler import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient // This allows multiple screen to be listening to tags, even the same tag @Stable @@ -37,7 +37,7 @@ class ThreadQueryState( @Stable class ThreadFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/subassembies/ThreadEventLoaderSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/subassembies/ThreadEventLoaderSubAssembler.kt index 1fdf5bbeb..f9a465a27 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/subassembies/ThreadEventLoaderSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/subassembies/ThreadEventLoaderSubAssembler.kt @@ -26,7 +26,7 @@ import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEo import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.amethyst.ui.screen.loggedIn.threadview.datasources.ThreadQueryState import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter /** @@ -39,7 +39,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter * saves the of the thread EOSEs in the long run to avoid re-downloading */ class ThreadEventLoaderSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys, invalidateAfterEose = true) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/subassembies/ThreadFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/subassembies/ThreadFilterSubAssembler.kt index 40b86b66b..ac089db90 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/subassembies/ThreadFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/threadview/datasources/subassembies/ThreadFilterSubAssembler.kt @@ -26,7 +26,7 @@ import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUniqueIdEo import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.amethyst.ui.screen.loggedIn.threadview.datasources.ThreadQueryState import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter /** @@ -36,7 +36,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter * saves the of the thread EOSEs in the long run to avoid re-downloading */ class ThreadFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUniqueIdEoseManager(client, allKeys) { override fun updateFilter( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/datasource/VideoFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/datasource/VideoFilterAssembler.kt index 5a4e970d3..ca5fa42e7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/datasource/VideoFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/datasource/VideoFilterAssembler.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManager import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountFeedContentStates import com.vitorpamplona.amethyst.ui.screen.loggedIn.video.datasource.subassemblies.VideoOutboxEventsFilterSubAssembler -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import kotlinx.coroutines.CoroutineScope // This allows multiple screen to be listening to tags, even the same tag @@ -35,7 +35,7 @@ class VideoQueryState( ) class VideoFilterAssembler( - client: NostrClient, + client: INostrClient, ) : ComposeSubscriptionManager() { val group = listOf( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/datasource/subassemblies/VideoOutboxEventsFilterSubAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/datasource/subassemblies/VideoOutboxEventsFilterSubAssembler.kt index c4cf933a3..5b0287302 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/datasource/subassemblies/VideoOutboxEventsFilterSubAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/datasource/subassemblies/VideoOutboxEventsFilterSubAssembler.kt @@ -40,7 +40,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.video.datasource.subassembl import com.vitorpamplona.amethyst.ui.screen.loggedIn.video.datasource.subassemblies.nip65Follows.filterPictureAndVideoByFollows import com.vitorpamplona.amethyst.ui.screen.loggedIn.video.datasource.subassemblies.nip72Communities.filterPictureAndVideoByAllCommunities import com.vitorpamplona.amethyst.ui.screen.loggedIn.video.datasource.subassemblies.nip72Communities.filterPictureAndVideoByCommunity -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription import com.vitorpamplona.quartz.utils.TimeUtils @@ -52,7 +52,7 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch class VideoOutboxEventsFilterSubAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : PerUserAndFollowListEoseManager(client, allKeys) { override fun updateFilter( diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessRelayFetchHelper.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessRelayFetchHelper.kt index aa5233d11..703ab3c98 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessRelayFetchHelper.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessRelayFetchHelper.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.amethyst.commons.chess import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.newSubId import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter @@ -49,7 +49,7 @@ enum class RelayFetchStatus { /** * One-shot relay fetch helper for chess events. * - * Follows the existing NostrClient + SubscriptionListener + Channel pattern + * Follows the existing INostrClient + SubscriptionListener + Channel pattern * from quartz (see NostrClientSingleDownloadExt.kt). * * Each fetch opens a subscription, collects events until EOSE from all relays, @@ -57,12 +57,12 @@ enum class RelayFetchStatus { * no state is cached between fetches. */ class ChessRelayFetchHelper( - private val client: NostrClient, + private val client: INostrClient, ) { /** * Fetch events matching filters from relays, waiting for EOSE. * - * @param filters Map of relay → filter list (same format as NostrClient.subscribe) + * @param filters Map of relay → filter list (same format as INostrClient.subscribe) * @param timeoutMs Max time to wait for relays to respond (default from ChessConfig) * @param onProgress Optional callback for progress updates per relay * @return Deduplicated list of events received before timeout/EOSE @@ -91,7 +91,7 @@ class ChessRelayFetchHelper( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -100,7 +100,7 @@ class ChessRelayFetchHelper( onProgress?.invoke(RelayFetchProgress(relay, RelayFetchStatus.RECEIVING, count)) } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/domain/nip46/BunkerLoginUseCase.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/domain/nip46/BunkerLoginUseCase.kt index 241773ac6..4962f5e3e 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/domain/nip46/BunkerLoginUseCase.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/domain/nip46/BunkerLoginUseCase.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.amethyst.commons.domain.nip46 -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip46RemoteSigner.signer.NostrSignerRemote import kotlinx.coroutines.flow.first @@ -32,7 +32,7 @@ object BunkerLoginUseCase { suspend fun execute( bunkerUri: String, ephemeralSigner: NostrSignerInternal, - client: NostrClient, + client: INostrClient, ): BunkerLoginResult { val remoteSigner = NostrSignerRemote.fromBunkerUri(bunkerUri, ephemeralSigner, client) remoteSigner.openSubscription() diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/domain/nip46/NostrConnectLoginUseCase.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/domain/nip46/NostrConnectLoginUseCase.kt index 72c7efba3..ef044ba8f 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/domain/nip46/NostrConnectLoginUseCase.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/domain/nip46/NostrConnectLoginUseCase.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.OptimizedJsonMapper import com.vitorpamplona.quartz.nip01Core.core.toHexKey import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.StaticSubscription import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -83,7 +83,7 @@ object NostrConnectLoginUseCase { suspend fun awaitAndLogin( uriData: NostrConnectUri, - client: NostrClient, + client: INostrClient, ): BunkerLoginResult { val connectData = waitForConnectRequest( @@ -117,7 +117,7 @@ object NostrConnectLoginUseCase { ephemeralPubKey: HexKey, relays: Set, expectedSecret: String, - client: NostrClient, + client: INostrClient, ): ConnectRequestData { val deferred = CompletableDeferred() @@ -201,7 +201,7 @@ object NostrConnectLoginUseCase { ephemeralSigner: NostrSignerInternal, connectData: ConnectRequestData, relays: Set, - client: NostrClient, + client: INostrClient, ) { val ackResponse = BunkerResponseAck(id = connectData.requestId!!) val ackEvent = diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/FeedMetadataCoordinator.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/FeedMetadataCoordinator.kt index 4cc8df331..4b62fc9ab 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/FeedMetadataCoordinator.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/FeedMetadataCoordinator.kt @@ -27,7 +27,7 @@ import com.vitorpamplona.amethyst.commons.relayClient.subscriptions.Subscription import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.newSubId import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter @@ -55,7 +55,7 @@ import kotlinx.coroutines.CoroutineScope * ``` */ class FeedMetadataCoordinator( - private val client: NostrClient, + private val client: INostrClient, private val scope: CoroutineScope, private val indexRelays: Set, private val preloader: MetadataPreloader? = null, @@ -82,7 +82,7 @@ class FeedMetadataCoordinator( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/MetadataFilterAssembler.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/MetadataFilterAssembler.kt index dbc79f2fd..1dffa08b4 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/MetadataFilterAssembler.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/MetadataFilterAssembler.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.commons.relayClient.eoseManagers.SingleSubEose import com.vitorpamplona.amethyst.commons.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -48,7 +48,7 @@ data class MetadataQueryState( * - Caches EOSE to avoid re-fetching known metadata */ class MetadataFilterAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubEoseManager(client, allKeys, invalidateAfterEose = true) { override fun distinct(key: MetadataQueryState): Any = key.pubkeys.hashCode() diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/ReactionsFilterAssembler.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/ReactionsFilterAssembler.kt index 0d62c8fc6..72c371f65 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/ReactionsFilterAssembler.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/assemblers/ReactionsFilterAssembler.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.commons.relayClient.assemblers import com.vitorpamplona.amethyst.commons.relayClient.eoseManagers.SingleSubEoseManager import com.vitorpamplona.amethyst.commons.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -48,7 +48,7 @@ data class ReactionsQueryState( * - Caches EOSE to avoid re-fetching known reactions */ class ReactionsFilterAssembler( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, ) : SingleSubEoseManager(client, allKeys, invalidateAfterEose = true) { override fun distinct(key: ReactionsQueryState): Any = key.noteIds.hashCode() diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/BaseEoseManager.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/BaseEoseManager.kt index bcc6827d7..427d34195 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/BaseEoseManager.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/BaseEoseManager.kt @@ -21,14 +21,14 @@ package com.vitorpamplona.amethyst.commons.relayClient.eoseManagers import com.vitorpamplona.amethyst.commons.service.BundledUpdate -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.newSubId import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.SubscriptionController import kotlinx.coroutines.Dispatchers abstract class BaseEoseManager( - val client: NostrClient, + val client: INostrClient, val allKeys: () -> Set, val sampleTime: Long = 500, ) : IEoseManager { diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/PerKeyEoseManager.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/PerKeyEoseManager.kt index dc0d2d1f1..b609d52dc 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/PerKeyEoseManager.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/PerKeyEoseManager.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.commons.relayClient.eoseManagers import com.vitorpamplona.amethyst.commons.relays.EOSECache import com.vitorpamplona.amethyst.commons.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.pool.groupByRelay import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener @@ -46,7 +46,7 @@ import com.vitorpamplona.quartz.utils.TimeUtils * shared among multiple query states that map to the same key. */ abstract class PerKeyEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, val invalidateAfterEose: Boolean = false, cacheSize: Int = 200, @@ -83,7 +83,7 @@ abstract class PerKeyEoseManager( open fun newSub(queryState: T): Subscription = requestNewSubscription( object : SubscriptionListener { - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -92,11 +92,11 @@ abstract class PerKeyEoseManager( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { - if (isRealTime) { + if (isLive) { newEose(queryState, relay, TimeUtils.now(), forFilters) } } diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/SingleSubEoseManager.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/SingleSubEoseManager.kt index 99ee6c130..8c012cc94 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/SingleSubEoseManager.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/relayClient/eoseManagers/SingleSubEoseManager.kt @@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.commons.relayClient.eoseManagers import com.vitorpamplona.amethyst.commons.relays.EOSERelayList import com.vitorpamplona.amethyst.commons.relays.SincePerRelayMap import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter import com.vitorpamplona.quartz.nip01Core.relay.client.pool.groupByRelay import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener @@ -44,7 +44,7 @@ import com.vitorpamplona.quartz.utils.TimeUtils * shares all EOSEs among all users. */ abstract class SingleSubEoseManager( - client: NostrClient, + client: INostrClient, allKeys: () -> Set, val invalidateAfterEose: Boolean = false, ) : BaseEoseManager(client, allKeys) { @@ -67,7 +67,7 @@ abstract class SingleSubEoseManager( val sub = requestNewSubscription( object : SubscriptionListener { - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -76,11 +76,11 @@ abstract class SingleSubEoseManager( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { - if (isRealTime) { + if (isLive) { newEose(relay, TimeUtils.now(), forFilters) } } diff --git a/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessEventBroadcaster.kt b/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessEventBroadcaster.kt index e996f3b7c..0293c58d1 100644 --- a/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessEventBroadcaster.kt +++ b/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessEventBroadcaster.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.amethyst.commons.chess import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.publishAndConfirm import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.newSubId @@ -46,7 +46,7 @@ data class BroadcastResult( * ensuring the event was actually received and accepted. */ class ChessEventBroadcaster( - private val client: NostrClient, + private val client: INostrClient, ) { /** * Broadcast an event to the chess relays with confirmation. @@ -87,12 +87,12 @@ class ChessEventBroadcaster( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/account/AccountManager.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/account/AccountManager.kt index e998fb621..535f3245c 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/account/AccountManager.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/account/AccountManager.kt @@ -131,11 +131,11 @@ class AccountManager internal constructor( // --- Dedicated NIP-46 client (isolated from general relay pool) --- private val nip46ClientMutex = Mutex() - private var nip46Client: DefaultDefaultNostrClient? = null + private var nip46Client: NostrClient? = null - private suspend fun getOrCreateNip46Client(): DefaultNostrClient = + private suspend fun getOrCreateNip46Client(): INostrClient = nip46ClientMutex.withLock { - nip46Client ?: DefaultNostrClient( + nip46Client ?: NostrClient( BasicOkHttpWebSocket.Builder(DesktopHttpClient::getHttpClient), ).also { nip46Client = it @@ -155,7 +155,7 @@ class AccountManager internal constructor( * but we must wait for the websocket to be ready before sending requests. */ private suspend fun awaitNip46RelayConnection( - client: DefaultNostrClient, + client: INostrClient, targetRelays: Set, ) { withTimeout(NIP46_RELAY_CONNECT_TIMEOUT_MS) { @@ -302,7 +302,7 @@ class AccountManager internal constructor( suspend fun loginWithBunker(bunkerUri: String): Result { val listener = createLoginRelayListener() - var client: DefaultDefaultNostrClient? = null + var client: NostrClient? = null try { val ephemeralKeyPair = KeyPair() val ephemeralSigner = NostrSignerInternal(ephemeralKeyPair) @@ -363,7 +363,7 @@ class AccountManager internal constructor( suspend fun loginWithNostrConnect(onUriGenerated: (String) -> Unit): Result { val listener = createLoginRelayListener() - var client: DefaultDefaultNostrClient? = null + var client: NostrClient? = null try { val ephemeralKeyPair = KeyPair() val uriData = NostrConnectLoginUseCase.generateUri(ephemeralKeyPair, NIP46_RELAYS, "Amethyst%20Desktop") diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/chess/ChessScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/chess/ChessScreen.kt index b792b5345..2668756b8 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/chess/ChessScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/chess/ChessScreen.kt @@ -140,7 +140,7 @@ fun ChessScreen( onEvent = { event, _, _, _ -> viewModel.handleIncomingEvent(event) }, - onCaughtUp = { _, _ -> + onEose = { _, _ -> // ChessLobbyLogic handles loading state internally }, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/network/RelayConnectionManager.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/network/RelayConnectionManager.kt index bd84b35b7..54380dea8 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/network/RelayConnectionManager.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/network/RelayConnectionManager.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.amethyst.desktop.network import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient @@ -44,10 +44,10 @@ import kotlinx.coroutines.flow.asStateFlow open class RelayConnectionManager( websocketBuilder: WebsocketBuilder, ) : RelayConnectionListener { - private val _client = DefaultNostrClient(websocketBuilder) + private val _client = NostrClient(websocketBuilder) - /** Exposes the underlying NostrClient for subscription coordinators */ - val client: com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient get() = _client + /** Exposes the underlying INostrClient for subscription coordinators */ + val client: com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient get() = _client private val _relayStatuses = MutableStateFlow>(emptyMap()) val relayStatuses: StateFlow> = _relayStatuses.asStateFlow() @@ -145,7 +145,7 @@ open class RelayConnectionManager( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/ChessSubscription.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/ChessSubscription.kt index 42faeabcd..8027f1ecf 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/ChessSubscription.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/ChessSubscription.kt @@ -58,7 +58,7 @@ private val CHESS_EVENT_KINDS = class DesktopChessSubscriptionController( private val relayManager: RelayConnectionManager, private val onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - private val onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + private val onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ) : ChessSubscriptionController { private val _currentState = MutableStateFlow(null) override val currentState: StateFlow = _currentState.asStateFlow() @@ -98,7 +98,7 @@ class DesktopChessSubscriptionController( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -106,16 +106,16 @@ class DesktopChessSubscriptionController( if (event.kind in CHESS_EVENT_KINDS) { DesktopChessEventCache.add(event) } - onEvent(event, isRealTime, relay, forFilters) + onEvent(event, isLive, relay, forFilters) } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { // Track EOSE time for this relay for efficient re-subscription relayEoseTimes[relay] = TimeUtils.now() - onCaughtUp(relay, forFilters) + onEose(relay, forFilters) } }, ) @@ -162,7 +162,7 @@ class DesktopChessSubscriptionController( * @param activeGameIds Set of game IDs the user is actively playing (for game-specific filters) * @param opponentPubkeys Set of opponent pubkeys for active games (for move filtering) * @param onEvent Callback for incoming events - * @param onCaughtUp Callback for EOSE (End of Stored Events) + * @param onEose Callback for EOSE (End of Stored Events) */ fun createChessSubscriptionWithGames( relays: Set, @@ -170,7 +170,7 @@ fun createChessSubscriptionWithGames( activeGameIds: Set = emptySet(), opponentPubkeys: Set = emptySet(), onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (relays.isEmpty()) return null @@ -197,7 +197,7 @@ fun createChessSubscriptionWithGames( filters = filters, relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -207,11 +207,11 @@ fun createChessSubscriptionWithGames( */ @Deprecated( "Use createChessSubscriptionWithGames for active game support", - ReplaceWith("createChessSubscriptionWithGames(relays, userPubkey, emptySet(), emptySet(), onEvent, onCaughtUp)"), + ReplaceWith("createChessSubscriptionWithGames(relays, userPubkey, emptySet(), emptySet(), onEvent, onEose)"), ) fun createChessSubscription( relays: Set, userPubkey: String, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, -): SubscriptionConfig? = createChessSubscriptionWithGames(relays, userPubkey, emptySet(), emptySet(), onEvent, onCaughtUp) + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, +): SubscriptionConfig? = createChessSubscriptionWithGames(relays, userPubkey, emptySet(), emptySet(), onEvent, onEose) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/DesktopRelaySubscriptionsCoordinator.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/DesktopRelaySubscriptionsCoordinator.kt index 38d9aab20..474f3a163 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/DesktopRelaySubscriptionsCoordinator.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/DesktopRelaySubscriptionsCoordinator.kt @@ -30,7 +30,7 @@ import com.vitorpamplona.amethyst.desktop.model.DesktopDmRelayState import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -73,7 +73,7 @@ import kotlin.time.Duration.Companion.seconds * ``` */ class DesktopRelaySubscriptionsCoordinator( - private val client: NostrClient, + private val client: INostrClient, private val scope: CoroutineScope, private val indexRelays: Set, private val localCache: DesktopLocalCache, @@ -180,7 +180,7 @@ class DesktopRelaySubscriptionsCoordinator( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -284,7 +284,7 @@ class DesktopRelaySubscriptionsCoordinator( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/FeedSubscription.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/FeedSubscription.kt index 78c677a91..a7d4a633a 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/FeedSubscription.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/FeedSubscription.kt @@ -39,14 +39,14 @@ fun createGlobalFeedSubscription( relays: Set, limit: Int = 50, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( subId = generateSubId("global-feed"), filters = listOf(FilterBuilders.textNotesGlobal(limit = limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) /** @@ -57,7 +57,7 @@ fun createFollowingFeedSubscription( followedUsers: List, limit: Int = 50, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (followedUsers.isEmpty()) return null @@ -66,7 +66,7 @@ fun createFollowingFeedSubscription( filters = listOf(FilterBuilders.textNotesFromAuthors(followedUsers, limit = limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -77,14 +77,14 @@ fun createContactListSubscription( relays: Set, pubKeyHex: String, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( subId = generateSubId("contacts-${pubKeyHex.take(8)}"), filters = listOf(FilterBuilders.contactList(pubKeyHex)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) /** @@ -94,14 +94,14 @@ fun createNoteSubscription( relays: Set, noteId: String, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( subId = generateSubId("note-${noteId.take(8)}"), filters = listOf(FilterBuilders.byIds(listOf(noteId))), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) /** @@ -115,7 +115,7 @@ fun createThreadRepliesSubscription( noteId: String, limit: Int = 200, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( subId = generateSubId("thread-${noteId.take(8)}"), @@ -129,7 +129,7 @@ fun createThreadRepliesSubscription( ), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) /** @@ -144,7 +144,7 @@ fun createSearchPeopleSubscription( searchQuery: String, limit: Int = 50, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, onClosed: (NormalizedRelayUrl, String, List?) -> Unit = { _, _, _ -> }, ): SubscriptionConfig? { if (searchQuery.isBlank()) return null @@ -154,7 +154,7 @@ fun createSearchPeopleSubscription( filters = listOf(FilterBuilders.searchPeople(searchQuery, limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, onClosed = onClosed, ) } @@ -171,7 +171,7 @@ fun createSearchNotesSubscription( searchQuery: String, limit: Int = 50, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (searchQuery.isBlank()) return null @@ -180,7 +180,7 @@ fun createSearchNotesSubscription( filters = listOf(FilterBuilders.searchNotes(searchQuery, limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -195,7 +195,7 @@ fun createZapsSubscription( eventIds: List, limit: Int = 100, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (eventIds.isEmpty()) return null @@ -204,7 +204,7 @@ fun createZapsSubscription( filters = listOf(FilterBuilders.zapsForEvents(eventIds, limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -219,7 +219,7 @@ fun createReactionsSubscription( eventIds: List, limit: Int = 100, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (eventIds.isEmpty()) return null @@ -228,7 +228,7 @@ fun createReactionsSubscription( filters = listOf(FilterBuilders.reactionsForEvents(eventIds, limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -243,7 +243,7 @@ fun createRepliesSubscription( eventIds: List, limit: Int = 100, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (eventIds.isEmpty()) return null @@ -252,7 +252,7 @@ fun createRepliesSubscription( filters = listOf(FilterBuilders.repliesForEvents(eventIds, limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -267,7 +267,7 @@ fun createRepostsSubscription( eventIds: List, limit: Int = 100, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (eventIds.isEmpty()) return null @@ -276,7 +276,7 @@ fun createRepostsSubscription( filters = listOf(FilterBuilders.repostsForEvents(eventIds, limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -287,14 +287,14 @@ fun createLongFormFeedSubscription( relays: Set, limit: Int = 30, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( subId = generateSubId("longform-feed"), filters = listOf(FilterBuilders.longFormGlobal(limit = limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) /** @@ -305,7 +305,7 @@ fun createFollowingLongFormFeedSubscription( followedUsers: List, limit: Int = 30, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (followedUsers.isEmpty()) return null @@ -314,7 +314,7 @@ fun createFollowingLongFormFeedSubscription( filters = listOf(FilterBuilders.longFormFromAuthors(followedUsers, limit = limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -333,7 +333,7 @@ fun createChessSubscription( userPubkey: String, limit: Int = 100, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( subId = generateSubId("chess-${userPubkey.take(8)}"), @@ -348,5 +348,5 @@ fun createChessSubscription( ), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/FilterDMs.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/FilterDMs.kt index 28aebdf2a..e1b9ced84 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/FilterDMs.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/FilterDMs.kt @@ -144,7 +144,7 @@ fun createNip04DmInboxSubscription( since: Long? = null, limit: Int? = null, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (relays.isEmpty() || userPubKeyHex.length != 64) return null @@ -153,7 +153,7 @@ fun createNip04DmInboxSubscription( filters = listOf(FilterDMs.nip04ToMe(userPubKeyHex, since, limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -167,7 +167,7 @@ fun createNip04DmOutboxSubscription( since: Long? = null, limit: Int? = null, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (relays.isEmpty() || userPubKeyHex.length != 64) return null @@ -176,7 +176,7 @@ fun createNip04DmOutboxSubscription( filters = listOf(FilterDMs.nip04FromMe(userPubKeyHex, since, limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -189,7 +189,7 @@ fun createGiftWrapSubscription( userPubKeyHex: HexKey, since: Long? = null, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (relays.isEmpty() || userPubKeyHex.length != 64) return null @@ -198,7 +198,7 @@ fun createGiftWrapSubscription( filters = listOf(FilterDMs.giftWrapsToMe(userPubKeyHex, since)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -213,7 +213,7 @@ fun createDmConversationSubscription( conversationPubKeys: Set, since: Long? = null, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (conversationPubKeys.isEmpty() || userPubKeyHex.length != 64) return null @@ -225,6 +225,6 @@ fun createDmConversationSubscription( filters = FilterDMs.nip04Conversation(userPubKeyHex, conversationPubKeys, since), relays = allRelays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/ProfileSubscription.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/ProfileSubscription.kt index e2d03f464..da9f93413 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/ProfileSubscription.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/ProfileSubscription.kt @@ -32,7 +32,7 @@ fun createMetadataSubscription( relays: Set, pubKeyHex: String, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { // Validate pubkey length if (pubKeyHex.length != 64) { @@ -43,7 +43,7 @@ fun createMetadataSubscription( filters = listOf(FilterBuilders.userMetadata(pubKeyHex)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -56,7 +56,7 @@ fun createBatchMetadataSubscription( relays: Set, pubKeyHexList: List, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { // Filter out invalid pubkeys val validPubkeys = pubKeyHexList.filter { it.length == 64 } @@ -67,7 +67,7 @@ fun createBatchMetadataSubscription( filters = listOf(FilterBuilders.userMetadataBatch(validPubkeys)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -79,7 +79,7 @@ fun createMetadataListSubscription( relays: Set, pubKeys: List, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig? { if (pubKeys.isEmpty()) return null @@ -88,7 +88,7 @@ fun createMetadataListSubscription( filters = listOf(FilterBuilders.userMetadataMultiple(pubKeys)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) } @@ -100,7 +100,7 @@ fun createUserPostsSubscription( pubKeyHex: String, limit: Int = 50, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( subId = generateSubId("posts-${pubKeyHex.take(8)}"), @@ -111,7 +111,7 @@ fun createUserPostsSubscription( ), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) /** @@ -122,12 +122,12 @@ fun createNotificationsSubscription( pubKeyHex: String, limit: Int = 100, onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( subId = generateSubId("notif-${pubKeyHex.take(8)}"), filters = listOf(FilterBuilders.notificationsForUser(pubKeyHex, limit = limit)), relays = relays, onEvent = onEvent, - onCaughtUp = onCaughtUp, + onEose = onEose, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/SubscriptionUtils.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/SubscriptionUtils.kt index 7ddb5ec3f..b9fa38e75 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/SubscriptionUtils.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/subscriptions/SubscriptionUtils.kt @@ -45,7 +45,7 @@ data class SubscriptionConfig( val filters: List, val relays: Set, val onEvent: (Event, Boolean, NormalizedRelayUrl, List?) -> Unit, - val onCaughtUp: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, + val onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, val onClosed: (NormalizedRelayUrl, String, List?) -> Unit = { _, _, _ -> }, ) @@ -83,18 +83,18 @@ fun rememberSubscription( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { - cfg.onEvent(event, isRealTime, relay, forFilters) + cfg.onEvent(event, isLive, relay, forFilters) } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { - cfg.onCaughtUp(relay, forFilters) + cfg.onEose(relay, forFilters) } override fun onClosed( diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ArticleReaderScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ArticleReaderScreen.kt index 6d1c5d20a..4bd362e90 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ArticleReaderScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ArticleReaderScreen.kt @@ -222,7 +222,7 @@ fun ArticleReaderScreen( } } }, - onCaughtUp = { _, _ -> + onEose = { _, _ -> eoseReceived = true }, ) @@ -335,7 +335,7 @@ fun ArticleReaderScreen( .toSet() } }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/BookmarksScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/BookmarksScreen.kt index 95f487dc2..e692b6470 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/BookmarksScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/BookmarksScreen.kt @@ -168,7 +168,7 @@ fun BookmarksScreen( publicBookmarkIds = pubIds } }, - onCaughtUp = { _, _ -> + onEose = { _, _ -> hasReceivedEose = true isLoading = false }, @@ -214,7 +214,7 @@ fun BookmarksScreen( subscriptionsCoordinator?.consumeEvent(event, relay) publicEventState.addItem(event) }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null @@ -236,7 +236,7 @@ fun BookmarksScreen( subscriptionsCoordinator?.consumeEvent(event, relay) privateEventState.addItem(event) }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NoteActions.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NoteActions.kt index 5a24ce614..d14ae4b50 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NoteActions.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NoteActions.kt @@ -439,7 +439,7 @@ private suspend fun fetchMetadataForUsers( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -457,7 +457,7 @@ private suspend fun fetchMetadataForUsers( } } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -1061,7 +1061,7 @@ private suspend fun fetchUserLightningAddress( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -1078,7 +1078,7 @@ private suspend fun fetchUserLightningAddress( } } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NotificationsScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NotificationsScreen.kt index c9efe8a4d..edb2e43d8 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NotificationsScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NotificationsScreen.kt @@ -228,7 +228,7 @@ fun NotificationsScreen( notificationState.addItem(notification) }, - onCaughtUp = { _, _ -> + onEose = { _, _ -> eoseReceivedCount++ }, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ReadsScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ReadsScreen.kt index 9284ee5aa..80438b7b0 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ReadsScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ReadsScreen.kt @@ -261,7 +261,7 @@ fun ReadsScreen( eventState.addItem(event) } }, - onCaughtUp = { _, _ -> + onEose = { _, _ -> eoseReceivedCount++ }, ) @@ -277,7 +277,7 @@ fun ReadsScreen( eventState.addItem(event) } }, - onCaughtUp = { _, _ -> + onEose = { _, _ -> eoseReceivedCount++ }, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/SearchScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/SearchScreen.kt index 2bd3c86d5..2ac9bd546 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/SearchScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/SearchScreen.kt @@ -202,7 +202,7 @@ fun SearchScreen( } } }, - onCaughtUp = { relay, _ -> + onEose = { relay, _ -> state.updateRelayState(relay.url, RelaySyncStatus.EOSE_RECEIVED) state.stopSearching("people-search") }, @@ -236,7 +236,7 @@ fun SearchScreen( } } }, - onCaughtUp = { relay, _ -> + onEose = { relay, _ -> state.updateRelayState(relay.url, RelaySyncStatus.EOSE_RECEIVED) state.stopSearching("adv-search") }, diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ThreadScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ThreadScreen.kt index 7a30eb3eb..ff54ca15b 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ThreadScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ThreadScreen.kt @@ -131,7 +131,7 @@ fun ThreadScreen( subscriptionsCoordinator?.consumeEvent(event, relay) levelCache[event.id] = 0 }, - onCaughtUp = { _, _ -> + onEose = { _, _ -> rootNoteEoseReceived = true }, ) @@ -149,7 +149,7 @@ fun ThreadScreen( onEvent = { event, _, relay, _ -> subscriptionsCoordinator?.consumeEvent(event, relay) }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt index da2111a93..0c9582151 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt @@ -190,7 +190,7 @@ fun UserProfileScreen( onEvent = { event, _, relay, _ -> subscriptionsCoordinator?.consumeEvent(event, relay) }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null @@ -232,7 +232,7 @@ fun UserProfileScreen( contactListLoaded = true } }, - onCaughtUp = { _, _ -> + onEose = { _, _ -> eoseReceivedCount++ // Wait for EOSE from at least 2 relays or all relays before enabling button @@ -294,7 +294,7 @@ fun UserProfileScreen( localCache.cacheFollowingCount(pubKeyHex, count) } }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null @@ -329,7 +329,7 @@ fun UserProfileScreen( localCache.cacheFollowerCount(pubKeyHex, count) } }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null @@ -356,7 +356,7 @@ fun UserProfileScreen( pictureEvents.add(event) } }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null @@ -383,7 +383,7 @@ fun UserProfileScreen( articleEvents.add(event) } }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null @@ -410,7 +410,7 @@ fun UserProfileScreen( highlightEvents.add(event) } }, - onCaughtUp = { _, _ -> }, + onEose = { _, _ -> }, ) } else { null diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatroomListState.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatroomListState.kt index bcbd2c54d..8137cc4b0 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatroomListState.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatroomListState.kt @@ -164,7 +164,7 @@ class ChatroomListState( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/DmSendTracker.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/DmSendTracker.kt index b074e3ec1..3399e8e4d 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/DmSendTracker.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/DmSendTracker.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.desktop.ui.chats import com.vitorpamplona.amethyst.commons.ui.chat.DmBroadcastStatus import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.publishAndConfirmDetailed import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import kotlinx.coroutines.delay @@ -31,7 +31,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow class DmSendTracker( - private val client: NostrClient, + private val client: INostrClient, ) { private val _status = MutableStateFlow(DmBroadcastStatus.Idle) val status: StateFlow = _status.asStateFlow() diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/NewDmDialog.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/NewDmDialog.kt index a0f7c4ec6..d50cbbb33 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/NewDmDialog.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/NewDmDialog.kt @@ -103,7 +103,7 @@ fun NewDmDialog( } } }, - onCaughtUp = { _, _ -> + onEose = { _, _ -> searchState.endRelaySearch() }, ) diff --git a/desktopApp/src/jvmTest/kotlin/com/vitorpamplona/amethyst/desktop/cache/CoordinatorPipelineTest.kt b/desktopApp/src/jvmTest/kotlin/com/vitorpamplona/amethyst/desktop/cache/CoordinatorPipelineTest.kt index f3fa81aa9..e3092696c 100644 --- a/desktopApp/src/jvmTest/kotlin/com/vitorpamplona/amethyst/desktop/cache/CoordinatorPipelineTest.kt +++ b/desktopApp/src/jvmTest/kotlin/com/vitorpamplona/amethyst/desktop/cache/CoordinatorPipelineTest.kt @@ -27,7 +27,7 @@ import com.vitorpamplona.amethyst.desktop.subscriptions.DesktopRelaySubscription import com.vitorpamplona.amethyst.desktop.viewmodels.DesktopFeedViewModel import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient @@ -50,7 +50,7 @@ import kotlin.test.assertTrue /** * Integration tests for the Coordinator → Cache → ViewModel pipeline. * - * These tests use a stub NostrClient (no real relay connections) and exercise + * These tests use a stub INostrClient (no real relay connections) and exercise * the full event consumption path through DesktopRelaySubscriptionsCoordinator. * * Key invariant being tested: when coordinator.consumeEvent() is called, @@ -65,10 +65,10 @@ class CoordinatorPipelineTest { private suspend fun waitForBundler() = delay(600) /** - * Stub NostrClient — records subscription calls but doesn't connect to any relay. + * Stub INostrClient — records subscription calls but doesn't connect to any relay. * This lets us test the coordinator's event routing without network dependencies. */ - private class StubNostrClient : NostrClient { + private class StubNostrClient : INostrClient { val openedSubs = mutableMapOf>, SubscriptionListener?>>() override fun connectedRelaysFlow(): StateFlow> = MutableStateFlow(emptySet()) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClientInterface.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/INostrClient.kt similarity index 98% rename from quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClientInterface.kt rename to quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/INostrClient.kt index 1bce302d9..f7b111950 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClientInterface.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/INostrClient.kt @@ -31,7 +31,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -interface NostrClient : AutoCloseable { +interface INostrClient : AutoCloseable { fun connectedRelaysFlow(): StateFlow> fun availableRelaysFlow(): StateFlow> @@ -87,7 +87,7 @@ interface NostrClient : AutoCloseable { fun activeOutboxCache(url: NormalizedRelayUrl): Set } -class EmptyNostrClient : NostrClient { +class EmptyNostrClient : INostrClient { override fun connectedRelaysFlow() = MutableStateFlow(emptySet()) override fun availableRelaysFlow() = MutableStateFlow(emptySet()) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/DefaultNostrClient.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClient.kt similarity index 98% rename from quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/DefaultNostrClient.kt rename to quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClient.kt index 0d58098b9..91b1952d9 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/DefaultNostrClient.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClient.kt @@ -52,7 +52,7 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch /** - * The NostrClient manages Nostr relay operations, subscriptions, and event delivery. It maintains: + * The INostrClient manages Nostr relay operations, subscriptions, and event delivery. It maintains: * - A RelayPool for managing connections to a collection of Nostr relays * - Active subscriptions tracking through PoolSubscriptionRepository * - An event outbox for managing unsent events and retry logic @@ -76,10 +76,10 @@ import kotlinx.coroutines.launch * are connected to all necessary endpoints. It also listens to relay state changes to update * subscriptions and message retries when connections are re-established. */ -class DefaultNostrClient( +class NostrClient( private val websocketBuilder: WebsocketBuilder, private val parentScope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob()), -) : NostrClient, +) : INostrClient, RelayConnectionListener, AutoCloseable { private val relayPool: RelayPool = RelayPool(websocketBuilder, this) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/EventCollector.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/EventCollector.kt index 4bb4af7af..7c97ec321 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/EventCollector.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/EventCollector.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.EventMessage @@ -29,10 +29,10 @@ import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.Message import com.vitorpamplona.quartz.utils.Log /** - * Listens to NostrClient's onEvent messages for caching purposes. + * Listens to INostrClient's onEvent messages for caching purposes. */ class EventCollector( - val client: NostrClient, + val client: INostrClient, val onEvent: (event: Event, relay: IRelayClient) -> Unit, ) { private val clientListener = diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientCountExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientCountExt.kt index c0841a9f5..9222ba74d 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientCountExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientCountExt.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.client.single.newSubId @@ -43,7 +43,7 @@ import kotlinx.coroutines.withTimeoutOrNull * @param timeoutMs How long to wait for a response (default 15 s). * @return The [CountResult], or `null` on timeout. */ -suspend fun NostrClient.count( +suspend fun INostrClient.count( relay: NormalizedRelayUrl, filter: Filter, timeoutMs: Long = 15_000, @@ -92,7 +92,7 @@ suspend fun NostrClient.count( * @param timeoutMs How long to wait for all responses (default 15 s). * @return Map of relay -> [CountResult] for every relay that responded in time. */ -suspend fun NostrClient.count( +suspend fun INostrClient.count( filters: Map>, timeoutMs: Long = 15_000, ): Map { @@ -155,7 +155,7 @@ suspend fun NostrClient.count( * @param timeoutMs How long to wait for all responses (default 15 s). * @return A merged [CountResult], or `null` if no relay responded. */ -suspend fun NostrClient.countMerged( +suspend fun INostrClient.countMerged( relays: List, filter: Filter, timeoutMs: Long = 15_000, diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchAllExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchAllExt.kt index 340a52828..01cc3a560 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchAllExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchAllExt.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.newSubId import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter @@ -31,45 +31,45 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.withTimeoutOrNull -suspend fun NostrClient.fetchAll( +suspend fun INostrClient.fetchAll( relay: String, filter: Filter, timeoutMs: Long = 30_000L, ) = fetchAll(newSubId(), mapOf(RelayUrlNormalizer.normalize(relay) to listOf(filter)), timeoutMs) -suspend fun NostrClient.fetchAll( +suspend fun INostrClient.fetchAll( relay: String, filters: List, timeoutMs: Long = 30_000L, ) = fetchAll(newSubId(), mapOf(RelayUrlNormalizer.normalize(relay) to filters), timeoutMs) -suspend fun NostrClient.fetchAll( +suspend fun INostrClient.fetchAll( subscriptionId: String = newSubId(), relay: String, filters: List, timeoutMs: Long = 30_000L, ) = fetchAll(subscriptionId, mapOf(RelayUrlNormalizer.normalize(relay) to filters), timeoutMs) -suspend fun NostrClient.fetchAll( +suspend fun INostrClient.fetchAll( relay: NormalizedRelayUrl, filter: Filter, timeoutMs: Long = 30_000L, ) = fetchAll(newSubId(), mapOf(relay to listOf(filter)), timeoutMs) -suspend fun NostrClient.fetchAll( +suspend fun INostrClient.fetchAll( relay: NormalizedRelayUrl, filters: List, timeoutMs: Long = 30_000L, ) = fetchAll(newSubId(), mapOf(relay to filters), timeoutMs) -suspend fun NostrClient.fetchAll( +suspend fun INostrClient.fetchAll( subscriptionId: String = newSubId(), relay: NormalizedRelayUrl, filters: List, timeoutMs: Long = 30_000L, ) = fetchAll(subscriptionId, mapOf(relay to filters), timeoutMs) -suspend fun NostrClient.fetchAll( +suspend fun INostrClient.fetchAll( subscriptionId: String = newSubId(), filters: Map>, timeoutMs: Long = 30_000L, @@ -85,7 +85,7 @@ suspend fun NostrClient.fetchAll( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -110,7 +110,7 @@ suspend fun NostrClient.fetchAll( doneChannel.trySend(relay) } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchAllPagesExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchAllPagesExt.kt index 9889c0407..8bacb7b38 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchAllPagesExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchAllPagesExt.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.newSubId import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter @@ -51,7 +51,7 @@ import kotlin.math.min * @param onEvent Called for every event received (in page order, after each EOSE). * @return Total number of events received across all pages. */ -suspend fun NostrClient.fetchAllPages( +suspend fun INostrClient.fetchAllPages( relay: NormalizedRelayUrl, filters: List, timeoutMs: Long = 30_000L, @@ -98,7 +98,7 @@ suspend fun NostrClient.fetchAllPages( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -120,7 +120,7 @@ suspend fun NostrClient.fetchAllPages( } } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -168,7 +168,7 @@ suspend fun NostrClient.fetchAllPages( return totalEvents } -suspend fun NostrClient.fetchAllPages( +suspend fun INostrClient.fetchAllPages( relay: String, filters: List, timeoutMs: Long = 30_000L, diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchFirstExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchFirstExt.kt index 98951f19f..16aa65034 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchFirstExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientFetchFirstExt.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.newSubId import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter @@ -31,39 +31,39 @@ import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.Channel.Factory.UNLIMITED import kotlinx.coroutines.withTimeoutOrNull -suspend fun NostrClient.fetchFirst( +suspend fun INostrClient.fetchFirst( relay: String, filter: Filter, ) = fetchFirst(newSubId(), mapOf(RelayUrlNormalizer.normalize(relay) to listOf(filter))) -suspend fun NostrClient.fetchFirst( +suspend fun INostrClient.fetchFirst( relay: String, filters: List, ) = fetchFirst(newSubId(), mapOf(RelayUrlNormalizer.normalize(relay) to filters)) -suspend fun NostrClient.fetchFirst( +suspend fun INostrClient.fetchFirst( subscriptionId: String = newSubId(), relay: String, filters: List, ) = fetchFirst(subscriptionId, mapOf(RelayUrlNormalizer.normalize(relay) to filters)) -suspend fun NostrClient.fetchFirst( +suspend fun INostrClient.fetchFirst( relay: NormalizedRelayUrl, filter: Filter, ) = fetchFirst(newSubId(), mapOf(relay to listOf(filter))) -suspend fun NostrClient.fetchFirst( +suspend fun INostrClient.fetchFirst( relay: NormalizedRelayUrl, filters: List, ) = fetchFirst(newSubId(), mapOf(relay to filters)) -suspend fun NostrClient.fetchFirst( +suspend fun INostrClient.fetchFirst( subscriptionId: String = newSubId(), relay: NormalizedRelayUrl, filters: List, ) = fetchFirst(subscriptionId, mapOf(relay to filters)) -suspend fun NostrClient.fetchFirst( +suspend fun INostrClient.fetchFirst( subscriptionId: String = newSubId(), filters: Map>, ): Event? { @@ -73,7 +73,7 @@ suspend fun NostrClient.fetchFirst( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -96,7 +96,7 @@ suspend fun NostrClient.fetchFirst( resultChannel.trySend(null) } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientPublishExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientPublishExt.kt index 44307ceb8..cdbfbf68f 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientPublishExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/NostrClientPublishExt.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.Message @@ -41,7 +41,7 @@ class Result( ) @OptIn(DelicateCoroutinesApi::class) -suspend fun NostrClient.publishAndConfirm( +suspend fun INostrClient.publishAndConfirm( event: Event, relayList: Set, timeoutInSeconds: Long = 15, @@ -52,7 +52,7 @@ suspend fun NostrClient.publishAndConfirm( * Returns per-relay results: relay URL -> accepted (true/false). */ @OptIn(DelicateCoroutinesApi::class) -suspend fun NostrClient.publishAndConfirmDetailed( +suspend fun INostrClient.publishAndConfirmDetailed( event: Event, relayList: Set, timeoutInSeconds: Long = 15, diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayInsertConfirmationCollector.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayInsertConfirmationCollector.kt index 411df7b97..5014eada6 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayInsertConfirmationCollector.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayInsertConfirmationCollector.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.Message @@ -29,10 +29,10 @@ import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.OkMessage import com.vitorpamplona.quartz.utils.Log /** - * Listens to NostrClient's onEvent messages for caching purposes. + * Listens to INostrClient's onEvent messages for caching purposes. */ class RelayInsertConfirmationCollector( - val client: NostrClient, + val client: INostrClient, val onRelayReceived: (eventId: HexKey, relay: IRelayClient) -> Unit, ) { private val clientListener = diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayLogger.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayLogger.kt index 1a6734937..34f32dcd5 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayLogger.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayLogger.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.AuthMessage @@ -38,10 +38,10 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.displayUrl import com.vitorpamplona.quartz.utils.Log /** - * Listens to NostrClient's onNotify messages from the relay + * Listens to INostrClient's onNotify messages from the relay */ class RelayLogger( - val client: NostrClient, + val client: INostrClient, val debugSending: Boolean = false, val debugReceiving: Boolean = false, ) { diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayNotifier.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayNotifier.kt index 67f4bad85..65f2c6aae 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayNotifier.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayNotifier.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.Message @@ -28,10 +28,10 @@ import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.NotifyMessage import com.vitorpamplona.quartz.utils.Log /** - * Listens to NostrClient's onNotify messages from the relay + * Listens to INostrClient's onNotify messages from the relay */ class RelayNotifier( - val client: NostrClient, + val client: INostrClient, val notify: (message: String, relay: IRelayClient) -> Unit, ) { companion object { diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayOfflineTracker.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayOfflineTracker.kt index a3baede47..c7981bdf7 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayOfflineTracker.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/accessories/RelayOfflineTracker.kt @@ -20,17 +20,17 @@ */ package com.vitorpamplona.quartz.nip01Core.relay.client.accessories -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.utils.Log /** - * Listens to NostrClient's onNotify messages from the relay + * Listens to INostrClient's onNotify messages from the relay */ class RelayOfflineTracker( - val client: NostrClient, + val client: INostrClient, ) { companion object { const val TAG = "RelayOfflineTracker" diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/auth/RelayAuthenticator.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/auth/RelayAuthenticator.kt index 1057b54c6..cce594855 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/auth/RelayAuthenticator.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/auth/RelayAuthenticator.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip01Core.relay.client.auth -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.AuthMessage @@ -46,7 +46,7 @@ object EmptyIAuthStatus : IAuthStatus { } class RelayAuthenticator( - val client: NostrClient, + val client: INostrClient, val scope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob()), val signWithAllLoggedInUsers: suspend (EventTemplate) -> List, ) : IAuthStatus { diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/counts/RelayActiveCountStates.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/counts/RelayActiveCountStates.kt index 81db54f81..dba6888dc 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/counts/RelayActiveCountStates.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/counts/RelayActiveCountStates.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip01Core.relay.client.counts -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.ClosedMessage @@ -33,7 +33,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.utils.Log class RelayActiveCountStates( - val client: NostrClient, + val client: INostrClient, ) { private var queryStates = mutableMapOf>() diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolRequests.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolRequests.kt index 80e66a0b4..fce701969 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolRequests.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolRequests.kt @@ -193,7 +193,7 @@ class PoolRequests { state?.onNewEvent(relay.url) desiredSubListeners.get(msg.subId)?.onEvent( event = msg.event, - isRealTime = state?.currentState(relay.url) == ReqSubStatus.LIVE, + isLive = state?.currentState(relay.url) == ReqSubStatus.LIVE, relay = relay.url, forFilters = state?.lastKnownFilterStates(relay.url), ) @@ -201,8 +201,8 @@ class PoolRequests { is EoseMessage -> { val state = relayState.get(msg.subId) - state?.onCaughtUp(relay.url) - desiredSubListeners.get(msg.subId)?.onCaughtUp( + state?.onEose(relay.url) + desiredSubListeners.get(msg.subId)?.onEose( relay = relay.url, forFilters = state?.lastKnownFilterStates(relay.url), ) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/DynamicSubscription.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/DynamicSubscription.kt index a470fb871..1821f4ad8 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/DynamicSubscription.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/DynamicSubscription.kt @@ -21,13 +21,13 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.reqs import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.utils.RandomInstance class DynamicSubscription( - val client: NostrClient, + val client: INostrClient, val filter: () -> Map>, val onEvent: (event: Event) -> Unit = {}, ) : SubscriptionListener, @@ -36,7 +36,7 @@ class DynamicSubscription( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -56,7 +56,7 @@ class DynamicSubscription( } } -fun NostrClient.subscribe( +fun INostrClient.subscribe( filters: () -> Map>, onEvent: (event: Event) -> Unit = {}, ): SubscriptionHandle = DynamicSubscription(this, filters, onEvent) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientFetchAsFlowExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientFetchAsFlowExt.kt index 0e9af3f6e..1cda8b7e7 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientFetchAsFlowExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientFetchAsFlowExt.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.reqs import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer @@ -37,22 +37,22 @@ import kotlinx.coroutines.flow.callbackFlow * 3. Closes the flow (completes) when the relay sends EOSE, * cancelling the subscription automatically via [awaitClose]. */ -fun NostrClient.fetchAsFlow( +fun INostrClient.fetchAsFlow( relay: String, filters: List, ) = fetchAsFlow(RelayUrlNormalizer.normalize(relay), filters) -fun NostrClient.fetchAsFlow( +fun INostrClient.fetchAsFlow( relay: String, filter: Filter, ) = fetchAsFlow(RelayUrlNormalizer.normalize(relay), listOf(filter)) -fun NostrClient.fetchAsFlow( +fun INostrClient.fetchAsFlow( relay: NormalizedRelayUrl, filter: Filter, ) = fetchAsFlow(relay, listOf(filter)) -fun NostrClient.fetchAsFlow( +fun INostrClient.fetchAsFlow( relay: NormalizedRelayUrl, filters: List, ): Flow> = @@ -65,7 +65,7 @@ fun NostrClient.fetchAsFlow( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -76,7 +76,7 @@ fun NostrClient.fetchAsFlow( } } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientSubscribeAsFlowExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientSubscribeAsFlowExt.kt index a1580adb3..50b6af68a 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientSubscribeAsFlowExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientSubscribeAsFlowExt.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.reqs import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer @@ -42,22 +42,22 @@ import kotlinx.coroutines.flow.callbackFlow * - They will be ignored if they are already in the list. * - They will be added to the beginning of the list if they are new. */ -fun NostrClient.subscribeAsFlow( +fun INostrClient.subscribeAsFlow( relay: String, filters: List, ) = subscribeAsFlow(RelayUrlNormalizer.normalize(relay), filters) -fun NostrClient.subscribeAsFlow( +fun INostrClient.subscribeAsFlow( relay: String, filter: Filter, ) = subscribeAsFlow(RelayUrlNormalizer.normalize(relay), listOf(filter)) -fun NostrClient.subscribeAsFlow( +fun INostrClient.subscribeAsFlow( relay: NormalizedRelayUrl, filter: Filter, ) = subscribeAsFlow(relay, listOf(filter)) -fun NostrClient.subscribeAsFlow( +fun INostrClient.subscribeAsFlow( relay: NormalizedRelayUrl, filters: List, ): Flow> = @@ -71,7 +71,7 @@ fun NostrClient.subscribeAsFlow( object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -90,7 +90,7 @@ fun NostrClient.subscribeAsFlow( } } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/RelayActiveRequestStates.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/RelayActiveRequestStates.kt index 2f6f0e674..a51d2f1df 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/RelayActiveRequestStates.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/RelayActiveRequestStates.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip01Core.relay.client.reqs -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.ClosedMessage @@ -34,7 +34,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.utils.Log class RelayActiveRequestStates( - val client: NostrClient, + val client: INostrClient, ) { private var subStates = mutableMapOf>() @@ -53,7 +53,7 @@ class RelayActiveRequestStates( ) { when (msg) { is EventMessage -> subGetOrCreate(relay.url).onNewEvent(msg.subId) - is EoseMessage -> subGetOrCreate(relay.url).onCaughtUp(msg.subId) + is EoseMessage -> subGetOrCreate(relay.url).onEose(msg.subId) is ClosedMessage -> subGetOrCreate(relay.url).onClosed(msg.subId) } } diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/RequestSubscriptionState.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/RequestSubscriptionState.kt index b32d3aaf8..f4c8bd8dd 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/RequestSubscriptionState.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/RequestSubscriptionState.kt @@ -57,7 +57,7 @@ class RequestSubscriptionState { } } - fun onCaughtUp(reference: T) { + fun onEose(reference: T) { subStates[reference] = ReqSubStatus.LIVE } diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/StaticSubscription.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/StaticSubscription.kt index d093c3b2e..1e87560ad 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/StaticSubscription.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/StaticSubscription.kt @@ -21,14 +21,14 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.reqs import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer import com.vitorpamplona.quartz.utils.RandomInstance class StaticSubscription( - val client: NostrClient, + val client: INostrClient, val filter: Map>, val onEvent: (event: Event) -> Unit = {}, ) : SubscriptionListener, @@ -37,7 +37,7 @@ class StaticSubscription( override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { @@ -57,25 +57,25 @@ class StaticSubscription( } } -fun NostrClient.subscribe( +fun INostrClient.subscribe( relay: NormalizedRelayUrl, filters: List, onEvent: (event: Event) -> Unit = {}, ): SubscriptionHandle = StaticSubscription(this, mapOf(relay to filters), onEvent) -fun NostrClient.subscribe( +fun INostrClient.subscribe( relay: NormalizedRelayUrl, filter: Filter, onEvent: (event: Event) -> Unit = {}, ): SubscriptionHandle = StaticSubscription(this, mapOf(relay to listOf(filter)), onEvent) -fun NostrClient.subscribe( +fun INostrClient.subscribe( relays: List, filters: List, onEvent: (event: Event) -> Unit = {}, ): SubscriptionHandle = StaticSubscription(this, relays.associateWith { filters }, onEvent) -fun NostrClient.subscribe( +fun INostrClient.subscribe( relays: List, filter: Filter, onEvent: (event: Event) -> Unit = {}, @@ -84,13 +84,13 @@ fun NostrClient.subscribe( // ----------------------------------- // Helper methods with relay as string // ----------------------------------- -fun NostrClient.subscribe( +fun INostrClient.subscribe( relay: String, filters: List, onEvent: (event: Event) -> Unit = {}, ): SubscriptionHandle = StaticSubscription(this, mapOf(RelayUrlNormalizer.normalize(relay) to filters), onEvent) -fun NostrClient.subscribe( +fun INostrClient.subscribe( relay: String, filter: Filter, onEvent: (event: Event) -> Unit = {}, diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/SubscriptionListener.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/SubscriptionListener.kt index eb2dde2bb..45f614237 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/SubscriptionListener.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/SubscriptionListener.kt @@ -25,14 +25,14 @@ import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl interface SubscriptionListener { - fun onCaughtUp( + fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) {} fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) {} diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/stats/RelayReqStats.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/stats/RelayReqStats.kt index 1d8793a63..4b34d2273 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/stats/RelayReqStats.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/stats/RelayReqStats.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.quartz.nip01Core.relay.client.reqs.stats -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.EventMessage @@ -28,10 +28,10 @@ import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.Message import com.vitorpamplona.quartz.utils.Log /** - * Listens to NostrClient's onNotify messages from the relay + * Listens to INostrClient's onNotify messages from the relay */ class RelayReqStats( - val client: NostrClient, + val client: INostrClient, ) { private val stats = ReqStatsRepository() diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/stats/RelayStats.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/stats/RelayStats.kt index cd35ccec2..b6548e1a2 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/stats/RelayStats.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/stats/RelayStats.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip01Core.relay.client.stats import androidx.collection.LruCache -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.ClosedMessage @@ -35,7 +35,7 @@ import com.vitorpamplona.quartz.utils.Log import com.vitorpamplona.quartz.utils.bytesUsedInMemory class RelayStats( - val client: NostrClient, + val client: INostrClient, ) { private val innerCache = object : LruCache(1000) { diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/subscriptions/SubscriptionController.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/subscriptions/SubscriptionController.kt index 0481699ab..6e0f4883e 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/subscriptions/SubscriptionController.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/subscriptions/SubscriptionController.kt @@ -20,14 +20,14 @@ */ package com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.utils.cache.LargeCache /** - * Manages Nostr subscriptions using a [NostrClient], allowing subscriptions to be created, modified, + * Manages Nostr subscriptions using a [INostrClient], allowing subscriptions to be created, modified, * and synchronized with relay filters. Subscriptions are stored in a cache and processed through * [updateRelays] to update relay filters dynamically. Also tracks event statistics and EOSE (End of * Stored Events) events, and provides utility methods to interact with subscriptions like dismissal. @@ -45,7 +45,7 @@ import com.vitorpamplona.quartz.utils.cache.LargeCache * - Dismiss subscriptions with [dismissSubscription]. */ class SubscriptionController( - val client: NostrClient, + val client: INostrClient, ) { private val subscriptions = LargeCache() diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/server/LiveEventStore.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/server/LiveEventStore.kt index 9013ffc66..4268dcef3 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/server/LiveEventStore.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/server/LiveEventStore.kt @@ -54,13 +54,13 @@ class LiveEventStore( suspend fun query( filters: List, onEach: (Event) -> Unit, - onCaughtUp: () -> Unit, + onEose: () -> Unit, ) { // 1. Replay stored events matching filters. store.query(filters, onEach) // 2. Signal end of stored events. - onCaughtUp() + onEose() // 3. Stream live events until cancelled. newEventStream.collect { newEvent -> diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/server/RelaySession.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/server/RelaySession.kt index f81436b7e..2a384d8a6 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/server/RelaySession.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/server/RelaySession.kt @@ -146,7 +146,7 @@ class RelaySession( send(EventMessage(cmd.subId, event)) } }, - onCaughtUp = { send(EoseMessage(cmd.subId)) }, + onEose = { send(EoseMessage(cmd.subId)) }, ) } catch (_: kotlinx.coroutines.CancellationException) { // Subscription was closed – this is expected. diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/NostrSignerRemote.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/NostrSignerRemote.kt index 8f07a5656..27d2f4a50 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/NostrSignerRemote.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/NostrSignerRemote.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip46RemoteSigner.signer import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.StaticSubscription import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -52,7 +52,7 @@ class NostrSignerRemote( val signer: NostrSignerInternal, val remotePubkey: HexKey, val relays: Set, - val client: NostrClient, + val client: INostrClient, val permissions: String? = null, val secret: String? = null, ) : NostrSigner(signer.pubKey) { @@ -296,7 +296,7 @@ class NostrSignerRemote( fun fromBunkerUri( bunkerUri: String, signer: NostrSignerInternal, - client: NostrClient, + client: INostrClient, permissions: String? = null, ): NostrSignerRemote { if (!bunkerUri.startsWith("bunker://")) throw Exception("Invalid bunker uri") diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/RemoteSignerManager.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/RemoteSignerManager.kt index bec976801..5ae463e05 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/RemoteSignerManager.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/RemoteSignerManager.kt @@ -21,7 +21,7 @@ package com.vitorpamplona.quartz.nip46RemoteSigner.signer import com.vitorpamplona.quartz.nip01Core.core.OptimizedJsonMapper -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequest @@ -34,7 +34,7 @@ import kotlin.coroutines.resume class RemoteSignerManager( val timeout: Long = 30000, - val client: NostrClient, + val client: INostrClient, val signer: NostrSignerInternal, val remoteKey: String, val relayList: Set, diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip77Negentropy/NegentropyManager.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip77Negentropy/NegentropyManager.kt index 4af65a8d2..018e9e46f 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip77Negentropy/NegentropyManager.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip77Negentropy/NegentropyManager.kt @@ -63,7 +63,7 @@ interface INegentropyListener { * per relay and subscription ID. * * Usage: - * 1. Register this as a listener on the NostrClient + * 1. Register this as a listener on the INostrClient * 2. Call [startSync] with a filter and local events to begin reconciliation * 3. Receive results via [INegentropyListener] callbacks */ diff --git a/quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/NostrSignerRemoteIsolationTest.kt b/quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/NostrSignerRemoteIsolationTest.kt index e19fb4afa..47b9376dc 100644 --- a/quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/NostrSignerRemoteIsolationTest.kt +++ b/quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/nip46RemoteSigner/signer/NostrSignerRemoteIsolationTest.kt @@ -22,7 +22,7 @@ package com.vitorpamplona.quartz.nip46RemoteSigner.signer import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair -import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient +import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient @@ -37,10 +37,10 @@ import kotlin.test.assertNotNull import kotlin.test.assertTrue /** - * NostrClient that records subscribe calls for verification. + * INostrClient that records subscribe calls for verification. * Used instead of mockk since commonTest doesn't have mockk. */ -private class TrackingNostrClient : NostrClient { +private class TrackingNostrClient : INostrClient { data class SubscriptionRecord( val subId: String, val filters: Map>, diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientFirstEventTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientFirstEventTest.kt index 655db8721..5e9d2b35f 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientFirstEventTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientFirstEventTest.kt @@ -20,7 +20,6 @@ */ package com.vitorpamplona.quartz.nip01Core.relay import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.DefaultNostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.fetchFirst import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import kotlinx.coroutines.CoroutineScope @@ -36,7 +35,7 @@ class NostrClientFirstEventTest : BaseNostrClientTest() { fun testDownloadFirstEvent() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val event = client.fetchFirst( diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientManualSubTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientManualSubTest.kt index eee18c497..05270deba 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientManualSubTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientManualSubTest.kt @@ -21,7 +21,6 @@ package com.vitorpamplona.quartz.nip01Core.relay import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.DefaultNostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -42,7 +41,7 @@ class NostrClientManualSubTest : BaseNostrClientTest() { fun testEoseAfter100Events() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val resultChannel = Channel(UNLIMITED) val events = mutableListOf() @@ -52,14 +51,14 @@ class NostrClientManualSubTest : BaseNostrClientTest() { object : SubscriptionListener { override fun onEvent( event: Event, - isRealTime: Boolean, + isLive: Boolean, relay: NormalizedRelayUrl, forFilters: List?, ) { resultChannel.trySend(event.id) } - override fun onCaughtUp( + override fun onEose( relay: NormalizedRelayUrl, forFilters: List?, ) { diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientQueryCountTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientQueryCountTest.kt index 36bd0c0ae..3d39dceb7 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientQueryCountTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientQueryCountTest.kt @@ -19,7 +19,6 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package com.vitorpamplona.quartz.nip01Core.relay -import com.vitorpamplona.quartz.nip01Core.relay.client.DefaultNostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.count import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.normalizeRelayUrl @@ -42,7 +41,7 @@ class NostrClientQueryCountTest : BaseNostrClientTest() { fun testQueryCountSuspend() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val result = client.count(fiatjaf, metadata) @@ -56,7 +55,7 @@ class NostrClientQueryCountTest : BaseNostrClientTest() { fun testQueryCountSuspendAllEvents() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val result = client.count(fiatjaf, Filter()) @@ -70,7 +69,7 @@ class NostrClientQueryCountTest : BaseNostrClientTest() { fun testQueryCountSuspendMultipleRelays() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val results = client.count( diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientRepeatSubTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientRepeatSubTest.kt index a5012b39b..0554d866b 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientRepeatSubTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientRepeatSubTest.kt @@ -20,7 +20,6 @@ */ package com.vitorpamplona.quartz.nip01Core.relay import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.DefaultNostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.RelayConnectionListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.EoseMessage @@ -48,7 +47,7 @@ class NostrClientRepeatSubTest : BaseNostrClientTest() { fun testRepeatSubEvents() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val resultChannel = Channel(UNLIMITED) val events = mutableListOf() diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientReqBypassingRelayLimitsTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientReqBypassingRelayLimitsTest.kt index 9f4e576e2..ec7388cce 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientReqBypassingRelayLimitsTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientReqBypassingRelayLimitsTest.kt @@ -21,7 +21,6 @@ package com.vitorpamplona.quartz.nip01Core.relay import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.DefaultNostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.fetchAllPages import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent @@ -39,7 +38,7 @@ class NostrClientReqBypassingRelayLimitsTest : BaseNostrClientTest() { fun testDownloadFromRelayReturnsMetadataEvents() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val events = mutableListOf() @@ -73,7 +72,7 @@ class NostrClientReqBypassingRelayLimitsTest : BaseNostrClientTest() { fun testDownloadFromRelayReturnsMetadataAndContactListEvents() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val metadataEvents = mutableListOf() val contactListEvents = mutableListOf() diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSendAndWaitTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSendAndWaitTest.kt index a347fd064..5dbe4a5f0 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSendAndWaitTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSendAndWaitTest.kt @@ -20,7 +20,6 @@ */ package com.vitorpamplona.quartz.nip01Core.relay import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair -import com.vitorpamplona.quartz.nip01Core.relay.client.DefaultNostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.publishAndConfirm import com.vitorpamplona.quartz.nip01Core.relay.normalizer.normalizeRelayUrl import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal @@ -38,7 +37,7 @@ class NostrClientSendAndWaitTest : BaseNostrClientTest() { fun testSendAndWaitForResponse() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val randomSigner = NostrSignerInternal(KeyPair()) diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionAsFlowTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionAsFlowTest.kt index 6a9964c79..e3d767fde 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionAsFlowTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionAsFlowTest.kt @@ -21,7 +21,6 @@ package com.vitorpamplona.quartz.nip01Core.relay import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.DefaultNostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.subscribeAsFlow import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.utils.Log @@ -49,7 +48,7 @@ class NostrClientSubscriptionAsFlowTest : BaseNostrClientTest() { fun testNostrClientSubscriptionAsFlow() = runTest { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val flow = client.subscribeAsFlow( @@ -88,7 +87,7 @@ class NostrClientSubscriptionAsFlowTest : BaseNostrClientTest() { fun testNostrClientSubscriptionAsFlowDebouncing() = runTest { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val flow = client.subscribeAsFlow( diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionTest.kt index 360f4e534..89a5b97ca 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionTest.kt @@ -21,7 +21,6 @@ package com.vitorpamplona.quartz.nip01Core.relay import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.DefaultNostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.StaticSubscription import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer @@ -41,7 +40,7 @@ class NostrClientSubscriptionTest : BaseNostrClientTest() { fun testNostrClientSubscription() = runBlocking { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val resultChannel = Channel(UNLIMITED) val events = mutableSetOf() diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionUntilEoseAsFlowTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionUntilEoseAsFlowTest.kt index 2ed700224..289d9d2cb 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionUntilEoseAsFlowTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/relay/NostrClientSubscriptionUntilEoseAsFlowTest.kt @@ -21,7 +21,6 @@ package com.vitorpamplona.quartz.nip01Core.relay import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip01Core.relay.client.DefaultNostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.fetchAsFlow import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.utils.Log @@ -49,7 +48,7 @@ class NostrClientSubscriptionUntilEoseAsFlowTest : BaseNostrClientTest() { fun testNostrClientSubscriptionUntilEoseAsFlow() = runTest { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val flow = client.fetchAsFlow( @@ -88,7 +87,7 @@ class NostrClientSubscriptionUntilEoseAsFlowTest : BaseNostrClientTest() { fun testNostrClientSubscriptionUntilEoseAsFlowDebouncing() = runTest { val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - val client = DefaultNostrClient(socketBuilder, appScope) + val client = NostrClient(socketBuilder, appScope) val flow = client.fetchAsFlow(