From 4ef19d17da712e402dd83a8604db77aa453ab0d0 Mon Sep 17 00:00:00 2001 From: Viktor De Pasquale Date: Tue, 6 Aug 2019 15:04:55 +0200 Subject: [PATCH] Added a flag for connection status Reactively updated flag which only checks whether the "data" / "wifi" / "ethernet" is plugged in or enabled. If the user connects to the wifi but has no actual connection, the app will never know. Please refrain from using other access methods (like pinging a host), it can get picked up by a VPN or other methods and possibly expose MM. --- app/build.gradle | 1 + .../com/topjohnwu/magisk/ui/base/MagiskViewModel.kt | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 2115c8f4d..efcff6e57 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,6 +62,7 @@ dependencies { implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'com.github.skoumalcz:teanity:0.3.3' implementation 'com.ncapdevi:frag-nav:3.2.0' + implementation 'com.github.pwittchen:reactivenetwork-rx2:3.0.3' def vMarkwon = '3.1.0' implementation "ru.noties.markwon:core:${vMarkwon}" diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/base/MagiskViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/base/MagiskViewModel.kt index 0e5492cb7..f30d6aa4a 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/base/MagiskViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/base/MagiskViewModel.kt @@ -1,7 +1,10 @@ package com.topjohnwu.magisk.ui.base import android.app.Activity +import com.github.pwittchen.reactivenetwork.library.rx2.ReactiveNetwork import com.skoumal.teanity.extensions.doOnSubscribeUi +import com.skoumal.teanity.extensions.subscribeK +import com.skoumal.teanity.util.KObservableField import com.skoumal.teanity.viewmodel.LoadingViewModel import com.topjohnwu.magisk.model.events.BackPressEvent import com.topjohnwu.magisk.model.events.PermissionEvent @@ -12,6 +15,14 @@ import io.reactivex.subjects.PublishSubject abstract class MagiskViewModel : LoadingViewModel() { + val isConnected = KObservableField(true) + + init { + ReactiveNetwork.observeInternetConnectivity() + .subscribeK { isConnected.value = it } + .add() + } + fun withView(action: Activity.() -> Unit) { ViewActionEvent(action).publish() }