diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientStaticReqAsStateFlow.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientStaticReqAsStateFlow.kt index 65897db25..94be9ef79 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientStaticReqAsStateFlow.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/reqs/NostrClientStaticReqAsStateFlow.kt @@ -65,7 +65,7 @@ fun INostrClient.reqResultsInOrderAsFlow( val subId = RandomInstance.randomChars(10) var hasBeenLive = false val eventIds = mutableSetOf() - val events = mutableListOf() + var currentEvents = listOf() val listener = object : IRequestListener { @@ -77,12 +77,16 @@ fun INostrClient.reqResultsInOrderAsFlow( ) { if (event.id !in eventIds) { if (hasBeenLive) { - events.add(0, event) + // faster + val list = ArrayList(1 + currentEvents.size) + list.add(event) + list.addAll(currentEvents) + currentEvents = list } else { - events.add(event) + currentEvents = currentEvents + event } eventIds.add(event.id) - trySend(events.toList()) + trySend(currentEvents) } }