summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-08-13 22:14:23 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-08-17 13:02:44 +0000
commit5951f90d558cf3a7606b90cd11bf3a873d2b1b10 (patch)
tree29311dcf094718254c2a6a83e4abc91f984d839d /android/src
parentc586b294040e6c0917b76b0ab6453a5638240698 (diff)
downloadmullvadvpn-5951f90d558cf3a7606b90cd11bf3a873d2b1b10.tar.xz
mullvadvpn-5951f90d558cf3a7606b90cd11bf3a873d2b1b10.zip
Use `AccountCache` for account expiry notification
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt14
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt18
2 files changed, 20 insertions, 12 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 f4fb25a895..17003b5440 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -19,8 +19,6 @@ import net.mullvad.mullvadvpn.service.tunnelstate.TunnelStateUpdater
import net.mullvad.mullvadvpn.ui.MainActivity
import net.mullvad.talpid.TalpidVpnService
import net.mullvad.talpid.util.EventNotifier
-import net.mullvad.talpid.util.autoSubscribable
-import org.joda.time.DateTime
private const val RELAYS_FILE = "relays.json"
@@ -49,23 +47,17 @@ class MullvadVpnService : TalpidVpnService() {
if (newInstance != oldInstance) {
oldInstance?.onDestroy()
- accountExpiryNotification = newInstance?.daemon?.let { daemon ->
- AccountExpiryNotification(this, daemon)
+ accountExpiryNotification = newInstance?.let { instance ->
+ AccountExpiryNotification(this, instance.daemon, instance.accountCache)
}
- accountExpiryEvents = newInstance?.accountCache?.onAccountExpiryChange
-
serviceNotifier.notify(newInstance)
}
}
- private var accountExpiryEvents by autoSubscribable<DateTime?>(this, null) { expiry ->
- accountExpiryNotification?.accountExpiry = expiry
- }
-
private var accountExpiryNotification
by observable<AccountExpiryNotification?>(null) { _, oldNotification, _ ->
- oldNotification?.accountExpiry = null
+ oldNotification?.onDestroy()
}
private lateinit var keyguardManager: KeyguardManager
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 34ac1d5a7d..78b8ac8e34 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
@@ -9,12 +9,17 @@ import android.net.Uri
import kotlin.properties.Delegates.observable
import kotlinx.coroutines.delay
import net.mullvad.mullvadvpn.R
+import net.mullvad.mullvadvpn.service.AccountCache
import net.mullvad.mullvadvpn.service.MullvadDaemon
import net.mullvad.mullvadvpn.util.JobTracker
import org.joda.time.DateTime
import org.joda.time.Duration
-class AccountExpiryNotification(val context: Context, val daemon: MullvadDaemon) {
+class AccountExpiryNotification(
+ val context: Context,
+ val daemon: MullvadDaemon,
+ val accountCache: AccountCache
+) {
companion object {
val NOTIFICATION_ID: Int = 2
val REMAINING_TIME_FOR_REMINDERS = Duration.standardDays(2)
@@ -40,6 +45,17 @@ class AccountExpiryNotification(val context: Context, val daemon: MullvadDaemon)
}
}
+ init {
+ accountCache.onAccountExpiryChange.subscribe(this) { newExpiry ->
+ accountExpiry = newExpiry
+ }
+ }
+
+ fun onDestroy() {
+ accountCache.onAccountNumberChange.unsubscribe(this)
+ accountExpiry = null
+ }
+
private suspend fun update(accountExpiry: DateTime?) {
val remainingTime = accountExpiry?.let { expiry -> Duration(DateTime.now(), expiry) }