mirror of https://github.com/tasks/tasks
Check if watch is connected before refreshing
parent
627259a723
commit
d5f9c24da4
@ -0,0 +1,47 @@
|
||||
package org.tasks.wear
|
||||
|
||||
import androidx.datastore.core.DataStore
|
||||
import com.google.android.horologist.annotations.ExperimentalHorologistApi
|
||||
import com.google.android.horologist.data.ProtoDataStoreHelper.protoDataStore
|
||||
import com.google.android.horologist.data.WearDataLayerRegistry
|
||||
import com.google.android.horologist.datalayer.phone.PhoneDataLayerAppHelper
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import org.tasks.GrpcProto.LastUpdate
|
||||
import org.tasks.copy
|
||||
import timber.log.Timber
|
||||
|
||||
@OptIn(ExperimentalHorologistApi::class)
|
||||
class WearRefresherImpl(
|
||||
phoneDataLayerAppHelper: PhoneDataLayerAppHelper,
|
||||
private val registry: WearDataLayerRegistry,
|
||||
private val scope: CoroutineScope,
|
||||
) : WearRefresher {
|
||||
|
||||
private var watchConnected = false
|
||||
|
||||
init {
|
||||
phoneDataLayerAppHelper
|
||||
.connectedAndInstalledNodes
|
||||
.onEach { nodes ->
|
||||
Timber.d("Connected nodes: ${nodes.joinToString()}")
|
||||
watchConnected = nodes.isNotEmpty()
|
||||
}
|
||||
.launchIn(scope)
|
||||
}
|
||||
|
||||
private val lastUpdate: DataStore<LastUpdate> by lazy {
|
||||
registry.protoDataStore<LastUpdate>(scope)
|
||||
}
|
||||
|
||||
override suspend fun refresh() {
|
||||
if (watchConnected) {
|
||||
lastUpdate.updateData {
|
||||
it.copy {
|
||||
now = System.currentTimeMillis()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
package org.tasks.wear
|
||||
|
||||
interface WearRefresher {
|
||||
suspend fun refresh()
|
||||
}
|
||||
Loading…
Reference in New Issue