summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-18 18:09:25 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-20 13:42:49 +0000
commit92532e455237e027feaac0bafa574acd9f96ff0f (patch)
tree5c90f6c6b404591eaf3c85aa1d1c3e0fc559d740
parentbd084dffaabc4c8fd99e5575680c23f66282f188 (diff)
downloadmullvadvpn-92532e455237e027feaac0bafa574acd9f96ff0f.tar.xz
mullvadvpn-92532e455237e027feaac0bafa574acd9f96ff0f.zip
Replace callback with event notifier
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt20
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt8
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt8
3 files changed, 17 insertions, 19 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt
index bee9244fe2..d6271f0a23 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt
@@ -5,28 +5,17 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.model.KeygenEvent
import net.mullvad.mullvadvpn.service.MullvadDaemon
+import net.mullvad.talpid.util.EventNotifier
class KeyStatusListener(val daemon: MullvadDaemon) {
private val setUpJob = setUp()
+ val onKeyStatusChange = EventNotifier<KeygenEvent?>(null)
+
var keyStatus: KeygenEvent? = null
private set(value) {
- synchronized(this) {
- field = value
-
- if (value != null) {
- onKeyStatusChange?.invoke(value)
- }
- }
- }
-
- var onKeyStatusChange: ((KeygenEvent) -> Unit)? = null
- set(value) {
field = value
-
- synchronized(this) {
- keyStatus?.let { status -> value?.invoke(status) }
- }
+ value?.let { newKeyStatus -> onKeyStatusChange.notify(newKeyStatus) }
}
private fun setUp() = GlobalScope.launch(Dispatchers.Default) {
@@ -67,6 +56,7 @@ class KeyStatusListener(val daemon: MullvadDaemon) {
fun onDestroy() {
setUpJob.cancel()
daemon.onKeygenEvent = null
+ onKeyStatusChange.unsubscribeAll()
}
private fun retryKeyGeneration() = GlobalScope.launch(Dispatchers.Default) {
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt
index 22960d5e73..1d71909d69 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt
@@ -33,6 +33,7 @@ class ConnectFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
private var updateTunnelStateJob: Job? = null
private var isTunnelInfoExpanded = false
+ private var keyStatusListenerId: Int? = null
private var tunnelStateListener: Int? = null
override fun onCreate(savedInstanceState: Bundle?) {
@@ -82,7 +83,7 @@ class ConnectFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
notificationBanner.onResume()
- keyStatusListener.onKeyStatusChange = { keyStatus ->
+ keyStatusListenerId = keyStatusListener.onKeyStatusChange.subscribe { keyStatus ->
updateKeyStatusJob.cancel()
updateKeyStatusJob = updateKeyStatus(keyStatus)
}
@@ -115,10 +116,13 @@ class ConnectFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
override fun onSafelyPause() {
accountCache.onAccountDataChange = null
- keyStatusListener.onKeyStatusChange = null
locationInfoCache.onNewLocation = null
relayListListener.onRelayListChange = null
+ keyStatusListenerId?.let { listener ->
+ keyStatusListener.onKeyStatusChange.unsubscribe(listener)
+ }
+
tunnelStateListener?.let { listener ->
connectionProxy.onUiStateChange.unsubscribe(listener)
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt
index e72a4c495c..68e381d948 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt
@@ -39,6 +39,7 @@ class WireguardKeyFragment : ServiceDependentFragment(OnNoService.GoToLaunchScre
private var greenColor: Int = 0
private var redColor: Int = 0
+ private var keyStatusListenerId: Int? = null
private var tunnelStateListener: Int? = null
private var tunnelState: TunnelState = TunnelState.Disconnected()
@@ -161,7 +162,7 @@ class WireguardKeyFragment : ServiceDependentFragment(OnNoService.GoToLaunchScre
}
}
- keyStatusListener.onKeyStatusChange = { newKeyStatus ->
+ keyStatusListenerId = keyStatusListener.onKeyStatusChange.subscribe { newKeyStatus ->
jobTracker.newUiJob("keyStatusUpdate") {
keyStatus = newKeyStatus
}
@@ -175,11 +176,14 @@ class WireguardKeyFragment : ServiceDependentFragment(OnNoService.GoToLaunchScre
connectionProxy.onUiStateChange.unsubscribe(listener)
}
+ keyStatusListenerId?.let { listener ->
+ keyStatusListener.onKeyStatusChange.unsubscribe(listener)
+ }
+
if (!(actionState is ActionState.Idle)) {
actionState = ActionState.Idle(false)
}
- keyStatusListener.onKeyStatusChange = null
jobTracker.cancelAllJobs()
}