Migrates the Subscription controller to use filters from the NostrClient instead of the past version in the controller to avoid out of sync comparisons

This commit is contained in:
Vitor Pamplona
2025-05-14 10:08:56 -04:00
parent d7d8f02a80
commit 52d31502e6
3 changed files with 7 additions and 1 deletions
@@ -408,6 +408,8 @@ class NostrClient(
fun getSubscriptionFilters(subId: String): List<TypedFilter> = activeSubscriptions.getSubscriptionFilters(subId)
fun getSubscriptionFiltersOrNull(subId: String): List<TypedFilter>? = activeSubscriptions.getSubscriptionFiltersOrNull(subId)
fun connectedRelays() = relayPool.connectedRelays()
fun relayStatusFlow() = relayPool.statusFlow
@@ -39,6 +39,8 @@ class MutableSubscriptionManager : SubscriptionManager {
override fun allSubscriptions(): Map<String, List<TypedFilter>> = subscriptions
override fun getSubscriptionFilters(subId: String): List<TypedFilter> = subscriptions[subId] ?: emptyList()
override fun getSubscriptionFiltersOrNull(subId: String): List<TypedFilter>? = subscriptions[subId]
}
interface SubscriptionManager {
@@ -47,4 +49,6 @@ interface SubscriptionManager {
fun allSubscriptions(): Map<String, List<TypedFilter>>
fun getSubscriptionFilters(subId: String): List<TypedFilter>
fun getSubscriptionFiltersOrNull(subId: String): List<TypedFilter>
}
@@ -155,7 +155,7 @@ class SubscriptionController(
// saves the channels that are currently active
val activeSubscriptions = subscriptions.actives()
// saves the current content to only update if it changes
val currentFilters = activeSubscriptions.associate { it.id to it.typedFilters }
val currentFilters = activeSubscriptions.associate { it.id to client.getSubscriptionFiltersOrNull(it.id) }
// updates all filters
updateSubscriptions()