diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-06 20:59:08 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-04-16 12:14:04 +0000 |
| commit | c08d85d52b50c0d5497dd822cde13b30f2f654b8 (patch) | |
| tree | 5678ee25ad9c54d711debec34c9da87f3ba2b59e /android/src | |
| parent | e397bbc4384def5bb16dd5193e850339c3cd9ab4 (diff) | |
| download | mullvadvpn-c08d85d52b50c0d5497dd822cde13b30f2f654b8.tar.xz mullvadvpn-c08d85d52b50c0d5497dd822cde13b30f2f654b8.zip | |
Create new service side `AppVersionInfoCache`
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) + } +} |
