summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-26 17:10:59 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-07-01 20:22:03 +0000
commitc608abd71f059fbc38f596b0b9411b028928f500 (patch)
tree2143ae3ace6109aeb85b671294ab31eaee82eb93 /android/src/main
parent580524edb7d7d6d6dd27bba20ec3e71adb6ed534 (diff)
downloadmullvadvpn-c608abd71f059fbc38f596b0b9411b028928f500.tar.xz
mullvadvpn-c608abd71f059fbc38f596b0b9411b028928f500.zip
Create account expiry in-app notification
Diffstat (limited to 'android/src/main')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/AccountExpiryNotification.kt46
1 files changed, 46 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/AccountExpiryNotification.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/AccountExpiryNotification.kt
new file mode 100644
index 0000000000..c159ee9550
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/AccountExpiryNotification.kt
@@ -0,0 +1,46 @@
+package net.mullvad.mullvadvpn.ui.notification
+
+import android.content.Context
+import net.mullvad.mullvadvpn.R
+import net.mullvad.mullvadvpn.service.AccountCache
+import net.mullvad.mullvadvpn.service.MullvadDaemon
+import net.mullvad.mullvadvpn.util.TimeLeftFormatter
+import org.joda.time.DateTime
+
+class AccountExpiryNotification(
+ context: Context,
+ daemon: MullvadDaemon,
+ private val accountCache: AccountCache
+) : NotificationWithUrlWithToken(context, daemon, R.string.account_url) {
+ private val timeLeftFormatter = TimeLeftFormatter(context.resources)
+
+ init {
+ status = StatusLevel.Error
+ title = context.getString(R.string.account_credit_expires_soon)
+ }
+
+ override fun onResume() {
+ accountCache.onAccountExpiryChange.subscribe(this) { accountExpiry ->
+ jobTracker.newUiJob("updateAccountExpiry") {
+ updateAccountExpiry(accountExpiry)
+ }
+ }
+ }
+
+ override fun onPause() {
+ accountCache.onAccountExpiryChange.unsubscribe(this)
+ }
+
+ private fun updateAccountExpiry(expiry: DateTime?) {
+ val threeDaysFromNow = DateTime.now().plusDays(3)
+
+ if (expiry != null && expiry.isBefore(threeDaysFromNow)) {
+ message = timeLeftFormatter.format(expiry)
+ shouldShow = true
+ } else {
+ shouldShow = false
+ }
+
+ update()
+ }
+}