From b321bbe07ff48d571feb4f81c66f58223584dc83 Mon Sep 17 00:00:00 2001 From: pacien Date: Mon, 20 Aug 2018 17:46:07 +0200 Subject: Generify periodically refreshing live data --- .../activities/status/nodes/NodeListLiveData.kt | 25 +++++++--------------- 1 file changed, 8 insertions(+), 17 deletions(-) (limited to 'app/src/main/java/org/pacien/tincapp/activities/status/nodes/NodeListLiveData.kt') diff --git a/app/src/main/java/org/pacien/tincapp/activities/status/nodes/NodeListLiveData.kt b/app/src/main/java/org/pacien/tincapp/activities/status/nodes/NodeListLiveData.kt index cdbdf0a..70ea54e 100644 --- a/app/src/main/java/org/pacien/tincapp/activities/status/nodes/NodeListLiveData.kt +++ b/app/src/main/java/org/pacien/tincapp/activities/status/nodes/NodeListLiveData.kt @@ -18,30 +18,21 @@ package org.pacien.tincapp.activities.status.nodes -import android.arch.lifecycle.LiveData +import org.pacien.tincapp.activities.common.SelfRefreshingLiveData import org.pacien.tincapp.commands.Tinc -import java.util.* -import kotlin.concurrent.timer +import java.util.concurrent.TimeUnit /** * @author pacien */ -class NodeListLiveData(private val netName: String) : LiveData>() { - private val updateInterval = 2 * 1000L // in milliseconds +class NodeListLiveData(private val netName: String) : SelfRefreshingLiveData>(1, TimeUnit.SECONDS) { private val tincCtl = Tinc - private lateinit var updateTimer: Timer - override fun onActive() { - updateTimer = timer(period = updateInterval, action = { updateNodeList() }) - } - - override fun onInactive() { - updateTimer.apply { cancel() }.apply { purge() } - } + override fun onRefresh() { + val nodeList = tincCtl.dumpNodes(netName) + .thenApply { list -> list.map { it.substringBefore(' ') } } + .get() - private fun updateNodeList() { - tincCtl.dumpNodes(netName) - .thenApply { list -> list.map { it.substringBefore(' ')} } - .thenAccept(this::postValue) + postValue(nodeList) } } -- cgit v1.2.3