summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt12
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt11
2 files changed, 8 insertions, 15 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt
index 7ec6ebe36f..88d0baadd7 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt
@@ -13,6 +13,10 @@ import org.joda.time.format.DateTimeFormat
val EXPIRY_FORMAT = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss z")
class AccountCache(val daemon: MullvadDaemon, val settingsListener: SettingsListener) {
+ private val subscriptionId = settingsListener.accountNumberNotifier.subscribe { accountNumber ->
+ handleNewAccountNumber(accountNumber)
+ }
+
private var fetchJob: Job? = null
private var accountNumber: String? = null
private var accountExpiry: DateTime? = null
@@ -25,19 +29,13 @@ class AccountCache(val daemon: MullvadDaemon, val settingsListener: SettingsList
}
}
- init {
- settingsListener.onAccountNumberChange = { accountNumber ->
- handleNewAccountNumber(accountNumber)
- }
- }
-
fun refetch() {
fetchJob?.cancel()
fetchJob = fetchAccountExpiry()
}
fun onDestroy() {
- settingsListener.onAccountNumberChange = null
+ settingsListener.accountNumberNotifier.unsubscribe(subscriptionId)
fetchJob?.cancel()
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt
index 033eef12f9..3ba8b058a7 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt
@@ -17,13 +17,7 @@ class SettingsListener(val daemon: MullvadDaemon, val initialSettings: Settings)
maybeSettings?.let { settings -> handleNewSettings(settings) }
}
- var onAccountNumberChange: ((String?) -> Unit)? = null
- set(value) {
- synchronized(this) {
- field = value
- value?.invoke(settings.accountToken)
- }
- }
+ val accountNumberNotifier = EventNotifier(initialSettings.accountToken)
var onRelaySettingsChange: ((RelaySettings?) -> Unit)? = null
set(value) {
@@ -36,6 +30,7 @@ class SettingsListener(val daemon: MullvadDaemon, val initialSettings: Settings)
fun onDestroy() {
daemon.onSettingsChange.unsubscribe(listenerId)
+ accountNumberNotifier.unsubscribeAll()
settingsNotifier.unsubscribeAll()
}
@@ -50,7 +45,7 @@ class SettingsListener(val daemon: MullvadDaemon, val initialSettings: Settings)
private fun handleNewSettings(newSettings: Settings) {
synchronized(this) {
if (settings.accountToken != newSettings.accountToken) {
- onAccountNumberChange?.invoke(newSettings.accountToken)
+ accountNumberNotifier.notify(newSettings.accountToken)
}
if (settings.relaySettings != newSettings.relaySettings) {