diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AppVersionInfoCache.kt | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AppVersionInfoCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AppVersionInfoCache.kt index 270abf4eec..7f428a716a 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AppVersionInfoCache.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AppVersionInfoCache.kt @@ -4,6 +4,7 @@ import android.content.Context import kotlin.properties.Delegates.observable import net.mullvad.mullvadvpn.ipc.Event import net.mullvad.mullvadvpn.model.AppVersionInfo +import net.mullvad.mullvadvpn.service.MullvadDaemon class AppVersionInfoCache(context: Context, endpoint: ServiceEndpoint) { companion object { @@ -29,26 +30,37 @@ class AppVersionInfoCache(context: Context, endpoint: ServiceEndpoint) { .commit() daemon.registerListener(this) { newDaemon -> - if (currentVersion == null && newDaemon != null) { - currentVersion = newDaemon.getCurrentVersion() + newDaemon?.let { daemon -> + initializeCurrentVersion(daemon) + registerVersionInfoListener(daemon) + fetchInitialVersionInfo(daemon) } + } + } - newDaemon?.onAppVersionInfoChange = { newAppVersionInfo -> - synchronized(this@AppVersionInfoCache) { - appVersionInfo = newAppVersionInfo - } - } + fun onDestroy() { + daemon.unregisterListener(this) + } - // Load initial version info + private fun initializeCurrentVersion(daemon: MullvadDaemon) { + if (currentVersion == null) { + currentVersion = daemon.getCurrentVersion() + } + } + + private fun registerVersionInfoListener(daemon: MullvadDaemon) { + daemon.onAppVersionInfoChange = { newAppVersionInfo -> synchronized(this@AppVersionInfoCache) { - if (appVersionInfo == null && newDaemon != null) { - appVersionInfo = newDaemon.getVersionInfo() - } + appVersionInfo = newAppVersionInfo } } } - fun onDestroy() { - daemon.unregisterListener(this) + private fun fetchInitialVersionInfo(daemon: MullvadDaemon) { + synchronized(this@AppVersionInfoCache) { + if (appVersionInfo == null) { + appVersionInfo = daemon.getVersionInfo() + } + } } } |
