diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/BaseEoseManager.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/BaseEoseManager.kt index 06e79b57c..5325846bf 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/BaseEoseManager.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/eoseManagers/BaseEoseManager.kt @@ -29,17 +29,25 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.utils.Log import kotlinx.coroutines.Dispatchers +interface IEoseManager { + fun invalidateFilters(ignoreIfDoing: Boolean = false) + + fun destroy() + + fun printStats() +} + abstract class BaseEoseManager( val client: INostrClient, val allKeys: () -> Set, -) { +) : IEoseManager { protected val logTag: String = this.javaClass.simpleName private val orchestrator = SubscriptionController(client) abstract fun updateSubscriptions(keys: Set) - fun printStats() = orchestrator.printStats(logTag) + override fun printStats() = orchestrator.printStats(logTag) fun newSubscriptionId() = if (isDebug) logTag + newSubId() else newSubId() @@ -52,19 +60,16 @@ abstract class BaseEoseManager( // Refreshes observers in batches. private val bundler = BundledUpdate(500, Dispatchers.Default) - fun invalidateFilters() { - bundler.invalidate { - forceInvalidate() - } + override fun invalidateFilters(ignoreIfDoing: Boolean) { + bundler.invalidate(ignoreIfDoing, ::forceInvalidate) } fun forceInvalidate() { updateSubscriptions(allKeys()) - orchestrator.updateRelays() } - fun destroy() { + override fun destroy() { bundler.cancel() orchestrator.destroy() if (isDebug) {