summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-06 20:59:08 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-16 12:14:04 +0000
commitc08d85d52b50c0d5497dd822cde13b30f2f654b8 (patch)
tree5678ee25ad9c54d711debec34c9da87f3ba2b59e /android/src
parente397bbc4384def5bb16dd5193e850339c3cd9ab4 (diff)
downloadmullvadvpn-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.kt44
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)
+ }
+}