- Removes compose bom from Quartz to avoid unnecessary dependencies.

- Removes old datetime dependencies from Quartz
- Moves compose.runtime dependencies to compose.runtime.annotation
- Adds dependency on coroutines directly (instead of through compose runtime)
- Removes old secp256 target dependencies
- Adds Default scope for NostrClient and Relay Authenticator
- Updates readme
This commit is contained in:
Vitor Pamplona
2025-12-04 14:41:33 -05:00
parent 03633c70ca
commit 0abc631773
8 changed files with 41 additions and 36 deletions
@@ -37,7 +37,10 @@ import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
import com.vitorpamplona.quartz.nip01Core.relay.sockets.WebsocketBuilder
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.IO
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
@@ -74,7 +77,7 @@ import kotlinx.coroutines.launch
*/
class NostrClient(
private val websocketBuilder: WebsocketBuilder,
private val scope: CoroutineScope,
private val scope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob()),
) : INostrClient,
IRelayClientListener {
private val relayPool: RelayPool = RelayPool(websocketBuilder, this)
@@ -32,6 +32,9 @@ import com.vitorpamplona.quartz.nip01Core.signers.EventTemplate
import com.vitorpamplona.quartz.nip42RelayAuth.RelayAuthEvent
import com.vitorpamplona.quartz.utils.Log
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.IO
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
interface IAuthStatus {
@@ -44,7 +47,7 @@ object EmptyIAuthStatus : IAuthStatus {
class RelayAuthenticator(
val client: INostrClient,
val scope: CoroutineScope,
val scope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob()),
val signWithAllLoggedInUsers: suspend (EventTemplate<RelayAuthEvent>) -> List<RelayAuthEvent>,
) : IAuthStatus {
private val authStatus = mutableMapOf<NormalizedRelayUrl, RelayAuthStatus>()
@@ -28,6 +28,8 @@ import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter
import com.vitorpamplona.quartz.utils.Log
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.debounce
@@ -43,6 +45,7 @@ class NostrClientSubscriptionAsFlowTest : BaseNostrClientTest() {
return joinToString { (it.createdAt - starting).toString() }
}
@OptIn(ExperimentalCoroutinesApi::class)
@Test
fun testNostrClientSubscriptionAsFlow() =
runTest {
@@ -81,6 +84,7 @@ class NostrClientSubscriptionAsFlowTest : BaseNostrClientTest() {
assertEquals(10, feedStates.size)
}
@OptIn(FlowPreview::class, ExperimentalCoroutinesApi::class)
@Test
fun testNostrClientSubscriptionAsFlowDebouncing() =
runTest {