summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-06 17:25:02 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-14 14:06:05 +0000
commit4d221b06a86659fa8708909b19ba74dc65fbd6f9 (patch)
treeefda16e46cf84959fd7c80de8f134e795cc0a414 /android/src
parente1406328ef3a6717048d0449f552f5fe63d0567d (diff)
downloadmullvadvpn-4d221b06a86659fa8708909b19ba74dc65fbd6f9.tar.xz
mullvadvpn-4d221b06a86659fa8708909b19ba74dc65fbd6f9.zip
Use an intermittent daemon in expiry notification
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt23
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt5
2 files changed, 13 insertions, 15 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index 2d057e2c97..520952627d 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -55,21 +55,11 @@ class MullvadVpnService : TalpidVpnService() {
private var setUpDaemonJob: Job? = null
- private var instance by observable<ServiceInstance?>(null) { _, oldInstance, newInstance ->
- if (newInstance != oldInstance) {
- accountExpiryNotification = newInstance?.let { instance ->
- AccountExpiryNotification(this, instance.daemon, endpoint.accountCache)
- }
-
- serviceNotifier.notify(newInstance)
- }
- }
-
- private var accountExpiryNotification by observable<AccountExpiryNotification?>(null) {
- _, oldNotification, _ ->
- oldNotification?.onDestroy()
+ private var instance by observable<ServiceInstance?>(null) { _, _, newInstance ->
+ serviceNotifier.notifyIfChanged(newInstance)
}
+ private lateinit var accountExpiryNotification: AccountExpiryNotification
private lateinit var daemonInstance: DaemonInstance
private lateinit var endpoint: ServiceEndpoint
private lateinit var keyguardManager: KeyguardManager
@@ -122,6 +112,12 @@ class MullvadVpnService : TalpidVpnService() {
accountNumberEvents = endpoint.settingsListener.accountNumberNotifier
}
+ accountExpiryNotification = AccountExpiryNotification(
+ this,
+ daemonInstance.intermittentDaemon,
+ endpoint.accountCache
+ )
+
daemonInstance.apply {
intermittentDaemon.registerListener(this@MullvadVpnService) { daemon ->
handleDaemonInstance(daemon)
@@ -192,6 +188,7 @@ class MullvadVpnService : TalpidVpnService() {
override fun onDestroy() {
Log.d(TAG, "Service has stopped")
state = State.Stopped
+ accountExpiryNotification.onDestroy()
notificationManager.onDestroy()
daemonInstance.onDestroy()
instance = null
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt
index 8e74b8de7b..533a91fe58 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt
@@ -11,13 +11,14 @@ import kotlinx.coroutines.delay
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.service.MullvadDaemon
import net.mullvad.mullvadvpn.service.endpoint.AccountCache
+import net.mullvad.mullvadvpn.util.Intermittent
import net.mullvad.mullvadvpn.util.JobTracker
import org.joda.time.DateTime
import org.joda.time.Duration
class AccountExpiryNotification(
val context: Context,
- val daemon: MullvadDaemon,
+ val daemon: Intermittent<MullvadDaemon>,
val accountCache: AccountCache
) {
companion object {
@@ -79,7 +80,7 @@ class AccountExpiryNotification(
private suspend fun build(expiry: DateTime, remainingTime: Duration): Notification {
val url = jobTracker.runOnBackground {
- Uri.parse("$buyMoreTimeUrl?token=${daemon.getWwwAuthToken()}")
+ Uri.parse("$buyMoreTimeUrl?token=${daemon.await().getWwwAuthToken()}")
}
val intent = Intent(Intent.ACTION_VIEW, url)