summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt18
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt6
2 files changed, 22 insertions, 2 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
index 2509ff1b99..e98646d34f 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
@@ -7,13 +7,18 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.channels.sendBlocking
+import kotlinx.coroutines.flow.collect
+import net.mullvad.mullvadvpn.model.DeviceState
import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.service.endpoint.ConnectionProxy
import net.mullvad.mullvadvpn.service.notifications.TunnelStateNotification
+import net.mullvad.mullvadvpn.util.Intermittent
+import net.mullvad.mullvadvpn.util.JobTracker
class ForegroundNotificationManager(
val service: MullvadVpnService,
- val connectionProxy: ConnectionProxy
+ val connectionProxy: ConnectionProxy,
+ val intermittentDaemon: Intermittent<MullvadDaemon>
) {
private sealed class UpdaterMessage {
class UpdateNotification : UpdaterMessage()
@@ -21,6 +26,7 @@ class ForegroundNotificationManager(
class NewTunnelState(val newState: TunnelState) : UpdaterMessage()
}
+ private val jobTracker = JobTracker()
private val updater = runUpdater()
private val tunnelStateNotification = TunnelStateNotification(service)
@@ -47,10 +53,20 @@ class ForegroundNotificationManager(
updater.sendBlocking(UpdaterMessage.NewTunnelState(newState))
}
+ intermittentDaemon.registerListener(this) { daemon ->
+ jobTracker.newBackgroundJob("notificationLoggedInJob") {
+ daemon?.deviceStateUpdates?.collect { deviceState ->
+ loggedIn = deviceState is DeviceState.LoggedIn
+ }
+ }
+ }
+
updater.sendBlocking(UpdaterMessage.UpdateNotification())
}
fun onDestroy() {
+ jobTracker.cancelAllJobs()
+ intermittentDaemon.unregisterListener(this)
connectionProxy.onStateChange.unsubscribe(this)
updater.close()
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index 83029983d8..9ff1e9f6a5 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -82,7 +82,11 @@ class MullvadVpnService : TalpidVpnService() {
connectionProxy.reconnect()
}
- notificationManager = ForegroundNotificationManager(this, connectionProxy)
+ notificationManager = ForegroundNotificationManager(
+ this,
+ connectionProxy,
+ daemonInstance.intermittentDaemon
+ )
accountExpiryNotification = AccountExpiryNotification(
this,