diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AppVersionInfoCache.kt | 44 |
1 files changed, 44 insertions, 0 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 new file mode 100644 index 0000000000..1c7e6c0341 --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AppVersionInfoCache.kt @@ -0,0 +1,44 @@ +package net.mullvad.mullvadvpn.service.endpoint + +import kotlin.properties.Delegates.observable +import net.mullvad.mullvadvpn.ipc.Event +import net.mullvad.mullvadvpn.model.AppVersionInfo + +class AppVersionInfoCache(endpoint: ServiceEndpoint) { + private val daemon = endpoint.intermittentDaemon + + var appVersionInfo by observable<AppVersionInfo?>(null) { _, _, info -> + endpoint.sendEvent(Event.AppVersionInfo(info)) + } + private set + + var currentVersion by observable<String?>(null) { _, _, version -> + endpoint.sendEvent(Event.CurrentVersion(version)) + } + private set + + init { + daemon.registerListener(this) { newDaemon -> + if (currentVersion == null && newDaemon != null) { + currentVersion = newDaemon.getCurrentVersion() + } + + newDaemon?.onAppVersionInfoChange = { newAppVersionInfo -> + synchronized(this@AppVersionInfoCache) { + appVersionInfo = newAppVersionInfo + } + } + + // Load initial version info + synchronized(this@AppVersionInfoCache) { + if (appVersionInfo == null && newDaemon != null) { + appVersionInfo = newDaemon.getVersionInfo() + } + } + } + } + + fun onDestroy() { + daemon.unregisterListener(this) + } +} |
