diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt | 12 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt | 11 |
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) { |
