diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-06-26 17:10:59 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-01 20:22:03 +0000 |
| commit | c608abd71f059fbc38f596b0b9411b028928f500 (patch) | |
| tree | 2143ae3ace6109aeb85b671294ab31eaee82eb93 /android | |
| parent | 580524edb7d7d6d6dd27bba20ec3e71adb6ed534 (diff) | |
| download | mullvadvpn-c608abd71f059fbc38f596b0b9411b028928f500.tar.xz mullvadvpn-c608abd71f059fbc38f596b0b9411b028928f500.zip | |
Create account expiry in-app notification
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/AccountExpiryNotification.kt | 46 |
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() + } +} |
