refactor: convert runnables to method references, schedule download of display names after parsing messages

This commit is contained in:
jubb 2021-03-31 10:54:37 +11:00
parent a445e0a326
commit b6769ffddc

View File

@ -30,13 +30,6 @@ class OpenGroupPoller(private val openGroup: OpenGroup, private val executorServ
private var displayNameUpdates = setOf<String>()
// endregion
// region Tasks
private val pollForNewMessagesTask = Runnable { pollForNewMessages() }
private val pollForDeletedMessagesTask = Runnable { pollForDeletedMessages() }
private val pollForModeratorsTask = Runnable { pollForModerators() }
private val pollForDisplayNamesTask = Runnable { pollForDisplayNames() }
// endregion
// region Settings
companion object {
private val pollForNewMessagesInterval: Long = 10 * 1000
@ -50,10 +43,10 @@ class OpenGroupPoller(private val openGroup: OpenGroup, private val executorServ
fun startIfNeeded() {
if (hasStarted || executorService == null) return
cancellableFutures += listOf(
executorService.scheduleAtFixedRate(pollForNewMessagesTask,0, pollForNewMessagesInterval, TimeUnit.MILLISECONDS),
executorService.scheduleAtFixedRate(pollForDeletedMessagesTask,0, pollForDeletedMessagesInterval, TimeUnit.MILLISECONDS),
executorService.scheduleAtFixedRate(pollForModeratorsTask,0, pollForModeratorsInterval, TimeUnit.MILLISECONDS),
executorService.scheduleAtFixedRate(pollForDisplayNamesTask,0, pollForDisplayNamesInterval, TimeUnit.MILLISECONDS)
executorService.scheduleAtFixedRate(::pollForNewMessages,0, pollForNewMessagesInterval, TimeUnit.MILLISECONDS),
executorService.scheduleAtFixedRate(::pollForDeletedMessages,0, pollForDeletedMessagesInterval, TimeUnit.MILLISECONDS),
executorService.scheduleAtFixedRate(::pollForModerators,0, pollForModeratorsInterval, TimeUnit.MILLISECONDS),
executorService.scheduleAtFixedRate(::pollForDisplayNames,0, pollForDisplayNamesInterval, TimeUnit.MILLISECONDS)
)
hasStarted = true
}
@ -191,6 +184,7 @@ class OpenGroupPoller(private val openGroup: OpenGroup, private val executorServ
}
}
displayNameUpdates = displayNameUpdates + messages.map { it.senderPublicKey }.toSet() - userHexEncodedPublicKey
executorService?.schedule(::pollForDisplayNames, 0, TimeUnit.MILLISECONDS)
isCaughtUp = true
isPollOngoing = false
deferred.resolve(Unit)