From 827b42b37a6a66311fdd9c918ac8b30f2844f183 Mon Sep 17 00:00:00 2001 From: Jonas Lochmann Date: Mon, 7 Oct 2019 00:00:00 +0000 Subject: [PATCH] Allow ignoring system connection status --- .../io/timelimit/android/data/model/ConfigurationItem.kt | 1 + .../java/io/timelimit/android/logic/WebsocketClientLogic.kt | 4 +++- .../io/timelimit/android/sync/websocket/WebsocketClient.kt | 4 ++++ .../android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt | 6 ++++++ app/src/main/res/values-de/strings-diagnose.xml | 1 + app/src/main/res/values/strings-diagnose.xml | 1 + 6 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt b/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt index 2464e0e..b7b6038 100644 --- a/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt +++ b/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt @@ -194,4 +194,5 @@ object ExperimentalFlags { const val SYSTEM_LEVEL_BLOCKING = 2L const val MANIPULATION_ANNOY_USER_ONLY = 4L const val MANIPULATION_ANNOY_USER = MANIPULATION_ANNOY_USER_ONLY or DISABLE_BLOCK_ON_MANIPULATION // otherwise there would be a conflict between both features + const val IGNORE_SYSTEM_CONNECTION_STATUS = 8L } \ No newline at end of file diff --git a/app/src/main/java/io/timelimit/android/logic/WebsocketClientLogic.kt b/app/src/main/java/io/timelimit/android/logic/WebsocketClientLogic.kt index 8cc5384..7e58a91 100644 --- a/app/src/main/java/io/timelimit/android/logic/WebsocketClientLogic.kt +++ b/app/src/main/java/io/timelimit/android/logic/WebsocketClientLogic.kt @@ -20,6 +20,7 @@ import androidx.lifecycle.MutableLiveData import io.timelimit.android.BuildConfig import io.timelimit.android.coroutines.runAsync import io.timelimit.android.coroutines.runAsyncExpectForever +import io.timelimit.android.data.model.ExperimentalFlags import io.timelimit.android.data.model.UserType import io.timelimit.android.livedata.* import io.timelimit.android.sync.websocket.NetworkStatus @@ -53,7 +54,7 @@ class WebsocketClientLogic( val okFromNetworkStatus = appLogic.networkStatus.map { networkStatus -> networkStatus == NetworkStatus.Online - } + }.or(appLogic.database.config().isExperimentalFlagsSetAsync(ExperimentalFlags.IGNORE_SYSTEM_CONNECTION_STATUS)) okForCurrentUser.and(okFromNetworkStatus) } else { @@ -93,6 +94,7 @@ class WebsocketClientLogic( // shutdown any current connection currentWebsocketClient?.shutdown() currentWebsocketClient = null + isConnectedInternal.postValue(false) if (deviceAuthToken.isNotEmpty()) { val serverConfig = appLogic.serverLogic.getServerConfigCoroutine() diff --git a/app/src/main/java/io/timelimit/android/sync/websocket/WebsocketClient.kt b/app/src/main/java/io/timelimit/android/sync/websocket/WebsocketClient.kt index 68ae767..e3fb91c 100644 --- a/app/src/main/java/io/timelimit/android/sync/websocket/WebsocketClient.kt +++ b/app/src/main/java/io/timelimit/android/sync/websocket/WebsocketClient.kt @@ -67,6 +67,10 @@ class SocketIoWebsocketClient(serverUrl: String, private val deviceAuthTokenToCo listener.onConnectionLost() } + client.on(Socket.EVENT_RECONNECT) { + listener.onConnectionLost() + } + client.on("should sync") { val params = it[0] as JSONObject diff --git a/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt b/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt index cdb92e1..63e0c69 100644 --- a/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt +++ b/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt @@ -116,6 +116,12 @@ data class DiagnoseExperimentalFlagItem( enableFlags = ExperimentalFlags.MANIPULATION_ANNOY_USER, disableFlags = ExperimentalFlags.MANIPULATION_ANNOY_USER_ONLY, enable = { !BuildConfig.storeCompilant } + ), + DiagnoseExperimentalFlagItem( + label = R.string.diagnose_exf_isc, + enableFlags = ExperimentalFlags.IGNORE_SYSTEM_CONNECTION_STATUS, + disableFlags = ExperimentalFlags.IGNORE_SYSTEM_CONNECTION_STATUS, + enable = { true } ) ) } diff --git a/app/src/main/res/values-de/strings-diagnose.xml b/app/src/main/res/values-de/strings-diagnose.xml index a745407..faa5bd6 100644 --- a/app/src/main/res/values-de/strings-diagnose.xml +++ b/app/src/main/res/values-de/strings-diagnose.xml @@ -56,6 +56,7 @@ Sperrung nach Manipulationen deaktivieren Apps auf Systemebene sperren Nutzer nach Manipulation nerven + Systemverbindungsstatus ignorieren Hintergrundaufgabenschleifenfehler diff --git a/app/src/main/res/values/strings-diagnose.xml b/app/src/main/res/values/strings-diagnose.xml index 60a33ab..cd1f802 100644 --- a/app/src/main/res/values/strings-diagnose.xml +++ b/app/src/main/res/values/strings-diagnose.xml @@ -56,6 +56,7 @@ Disable locking after manipulations Block Apps at system level Annoy user after manipulation + Ignore system connection status Background task loop exception