Adds a dependency on Account and to the NWC state to avoid linking directly with the Application class

This commit is contained in:
Vitor Pamplona
2025-09-06 10:44:41 -04:00
parent 7087fb85f0
commit ea58b4fa3d
2 changed files with 8 additions and 7 deletions

View File

@@ -89,6 +89,7 @@ import com.vitorpamplona.amethyst.model.topNavFeeds.IFeedTopNavFilter
import com.vitorpamplona.amethyst.model.topNavFeeds.OutboxLoaderState import com.vitorpamplona.amethyst.model.topNavFeeds.OutboxLoaderState
import com.vitorpamplona.amethyst.model.torState.TorRelayState import com.vitorpamplona.amethyst.model.torState.TorRelayState
import com.vitorpamplona.amethyst.service.location.LocationState import com.vitorpamplona.amethyst.service.location.LocationState
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.nwc.NWCPaymentFilterAssembler
import com.vitorpamplona.amethyst.service.uploads.FileHeader import com.vitorpamplona.amethyst.service.uploads.FileHeader
import com.vitorpamplona.quartz.experimental.bounties.BountyAddValueEvent import com.vitorpamplona.quartz.experimental.bounties.BountyAddValueEvent
import com.vitorpamplona.quartz.experimental.edits.TextNoteModificationEvent import com.vitorpamplona.quartz.experimental.edits.TextNoteModificationEvent
@@ -218,7 +219,8 @@ import kotlin.coroutines.cancellation.CancellationException
class Account( class Account(
val settings: AccountSettings = AccountSettings(KeyPair()), val settings: AccountSettings = AccountSettings(KeyPair()),
val signer: NostrSigner, val signer: NostrSigner,
geolocationFlow: StateFlow<LocationState.LocationResult>, val geolocationFlow: StateFlow<LocationState.LocationResult>,
val nwcFilterAssembler: NWCPaymentFilterAssembler,
val cache: LocalCache, val cache: LocalCache,
val client: INostrClient, val client: INostrClient,
val scope: CoroutineScope, val scope: CoroutineScope,
@@ -229,7 +231,7 @@ class Account(
val userMetadata = UserMetadataState(signer, cache, scope, settings) val userMetadata = UserMetadataState(signer, cache, scope, settings)
val nip47SignerState = NwcSignerState(signer, cache, scope, settings) val nip47SignerState = NwcSignerState(signer, nwcFilterAssembler, cache, scope, settings)
val nip65RelayList = Nip65RelayListState(signer, cache, scope, settings) val nip65RelayList = Nip65RelayListState(signer, cache, scope, settings)
val localRelayList = LocalRelayListState(signer, cache, scope, settings) val localRelayList = LocalRelayListState(signer, cache, scope, settings)

View File

@@ -20,10 +20,10 @@
*/ */
package com.vitorpamplona.amethyst.model.nip47WalletConnect package com.vitorpamplona.amethyst.model.nip47WalletConnect
import com.vitorpamplona.amethyst.Amethyst
import com.vitorpamplona.amethyst.model.AccountSettings import com.vitorpamplona.amethyst.model.AccountSettings
import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.nwc.NWCPaymentFilterAssembler
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.nwc.NWCPaymentQueryState import com.vitorpamplona.amethyst.service.relayClient.reqCommand.nwc.NWCPaymentQueryState
import com.vitorpamplona.quartz.nip01Core.core.hexToByteArray import com.vitorpamplona.quartz.nip01Core.core.hexToByteArray
import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair
@@ -62,6 +62,7 @@ import kotlinx.coroutines.launch
*/ */
class NwcSignerState( class NwcSignerState(
val signer: NostrSigner, val signer: NostrSigner,
val nwcFilterAssembler: NWCPaymentFilterAssembler,
val cache: LocalCache, val cache: LocalCache,
val scope: CoroutineScope, val scope: CoroutineScope,
val settings: AccountSettings, val settings: AccountSettings,
@@ -163,13 +164,11 @@ class NwcSignerState(
relay = walletService.relayUri, relay = walletService.relayUri,
) )
Amethyst.instance.sources.nwc nwcFilterAssembler.subscribe(filter)
.subscribe(filter)
scope.launch(Dispatchers.IO) { scope.launch(Dispatchers.IO) {
delay(60000) // waits 1 minute to complete payment. delay(60000) // waits 1 minute to complete payment.
Amethyst.instance.sources.nwc nwcFilterAssembler.unsubscribe(filter)
.unsubscribe(filter)
} }
cache.consume(event, zappedNote, true, walletService.relayUri) { cache.consume(event, zappedNote, true, walletService.relayUri) {