summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-26 17:56:55 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-07-01 20:22:03 +0000
commit13a6322b2de11c14ff54a0e5e71b3454eaffaee7 (patch)
tree228e4d4eed366ce54a747cdb5259816de2facbd2 /android/src
parent8e45a4110e79c4ccfa248ed6350eb59bb2bc241c (diff)
downloadmullvadvpn-13a6322b2de11c14ff54a0e5e71b3454eaffaee7.tar.xz
mullvadvpn-13a6322b2de11c14ff54a0e5e71b3454eaffaee7.zip
Implement in-app notification click behavior
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt19
1 files changed, 19 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt
index 73bebc2955..2992ee94eb 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt
@@ -11,8 +11,11 @@ import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.ui.notification.InAppNotification
import net.mullvad.mullvadvpn.ui.notification.InAppNotificationController
import net.mullvad.mullvadvpn.ui.notification.StatusLevel
+import net.mullvad.mullvadvpn.util.JobTracker
class NotificationBanner : FrameLayout {
+ private val jobTracker = JobTracker()
+
private val container =
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE).let { service ->
val inflater = service as LayoutInflater
@@ -51,6 +54,10 @@ class NotificationBanner : FrameLayout {
init {
setBackgroundResource(R.color.darkBlue)
+
+ setOnClickListener {
+ jobTracker.newUiJob("click") { onClick() }
+ }
}
fun onResume() {
@@ -65,6 +72,18 @@ class NotificationBanner : FrameLayout {
notifications.onDestroy()
}
+ private suspend fun onClick() {
+ notifications.current?.onClick?.let { action ->
+ alpha = 0.5f
+ setClickable(false)
+
+ jobTracker.runOnBackground(action)
+
+ setClickable(true)
+ alpha = 1.0f
+ }
+ }
+
private fun update(notification: InAppNotification) {
val notificationMessage = notification.message
val clickAction = notification.onClick