diff options
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/InAppNotification.kt | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/InAppNotification.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/InAppNotification.kt new file mode 100644 index 0000000000..8fb0a64b7c --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/InAppNotification.kt @@ -0,0 +1,40 @@ +package net.mullvad.mullvadvpn.ui.notification + +import net.mullvad.mullvadvpn.util.ChangeMonitor +import net.mullvad.mullvadvpn.util.JobTracker + +abstract class InAppNotification { + private val changeMonitor = ChangeMonitor() + protected val jobTracker = JobTracker() + + var status by changeMonitor.monitor(StatusLevel.Error) + protected set + + var title by changeMonitor.monitor("") + protected set + + var message by changeMonitor.monitor<String?>(null) + protected set + + var onClick by changeMonitor.monitor<(suspend () -> Unit)?>(null) + protected set + + var showIcon by changeMonitor.monitor(false) + protected set + + var shouldShow by changeMonitor.monitor(false) + protected set + + open fun onResume() {} + open fun onPause() {} + + open fun onDestroy() { + jobTracker.cancelAllJobs() + } + + protected fun update() { + if (changeMonitor.changed) { + changeMonitor.reset() + } + } +} |
