summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-08-17 10:34:45 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-08-17 10:34:45 -0300
commit23d9025532c8efc423e0095f5c4d3ebeed1e5973 (patch)
tree684cc7c954554be6e7bf06d393618613879c9229 /android/src
parentfc71697292c63c1804475a4d4e8194e9fc025e21 (diff)
parent843f6412de01f0754d347e777910c42b5ca5da14 (diff)
downloadmullvadvpn-23d9025532c8efc423e0095f5c4d3ebeed1e5973.tar.xz
mullvadvpn-23d9025532c8efc423e0095f5c4d3ebeed1e5973.zip
Merge branch 'remove-notification-for-new-accounts'
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt20
-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.kt23
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt6
4 files changed, 46 insertions, 17 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt
index 36e09b1721..82db7bc6f2 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt
@@ -23,6 +23,9 @@ class AccountCache(val daemon: MullvadDaemon, val settingsListener: SettingsList
val onAccountNumberChange = EventNotifier<String?>(null)
val onAccountExpiryChange = EventNotifier<DateTime?>(null)
+ var newlyCreatedAccount = false
+ private set
+
private val jobTracker = JobTracker()
private var accountNumber by onAccountNumberChange.notifiable()
@@ -36,6 +39,19 @@ class AccountCache(val daemon: MullvadDaemon, val settingsListener: SettingsList
}
}
+ fun createNewAccount(): String? {
+ newlyCreatedAccount = true
+
+ return daemon.createNewAccount()
+ }
+
+ fun login(account: String) {
+ if (account != accountNumber) {
+ newlyCreatedAccount = false
+ daemon.setAccount(account)
+ }
+ }
+
fun fetchAccountExpiry() {
synchronized(this) {
accountNumber?.let { account ->
@@ -100,6 +116,10 @@ class AccountCache(val daemon: MullvadDaemon, val settingsListener: SettingsList
accountExpiry = newAccountExpiry
oldAccountExpiry = null
+ if (accountExpiry != null) {
+ newlyCreatedAccount = false
+ }
+
return true
}
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..ee82610035 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,11 +45,23 @@ 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) }
+ val closeToExpire = remainingTime?.isShorterThan(REMAINING_TIME_FOR_REMINDERS) ?: false
- if (remainingTime != null && remainingTime.isShorterThan(REMAINING_TIME_FOR_REMINDERS)) {
- val notification = build(accountExpiry, remainingTime)
+ if (closeToExpire && !accountCache.newlyCreatedAccount) {
+ val notification = build(accountExpiry!!, remainingTime!!)
channel.notificationManager.notify(NOTIFICATION_ID, notification)
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
index 5d103918d1..2f3efbf9b0 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
@@ -95,7 +95,7 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
scrollToShow(loggingInStatus)
val accountToken = jobTracker.runOnBackground {
- daemon.createNewAccount()
+ accountCache.createNewAccount()
}
if (accountToken == null) {
@@ -135,7 +135,7 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
when (accountDataResult) {
is GetAccountDataResult.Ok -> {
- daemon.setAccount(accountToken)
+ accountCache.login(accountToken)
val expiryString = accountDataResult.accountData.expiry
val expiry = DateTime.parse(expiryString, AccountCache.EXPIRY_FORMAT)
@@ -147,7 +147,7 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
}
}
is GetAccountDataResult.RpcError -> {
- daemon.setAccount(accountToken)
+ accountCache.login(accountToken)
LoginResult.ExistingAccountWithTime
}
else -> null