diff --git a/android/src/main/java/com/tailscale/ipn/ui/notifier/Notifier.kt b/android/src/main/java/com/tailscale/ipn/ui/notifier/Notifier.kt index faf78c8..449f9de 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/notifier/Notifier.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/notifier/Notifier.kt @@ -3,7 +3,6 @@ package com.tailscale.ipn.ui.notifier -import android.util.Log import com.tailscale.ipn.App import com.tailscale.ipn.ui.model.Empty import com.tailscale.ipn.ui.model.Health @@ -11,6 +10,7 @@ import com.tailscale.ipn.ui.model.Ipn import com.tailscale.ipn.ui.model.Ipn.Notify import com.tailscale.ipn.ui.model.Netmap import com.tailscale.ipn.ui.util.set +import com.tailscale.ipn.util.TSLog import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow @@ -19,7 +19,6 @@ import kotlinx.coroutines.launch import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream -import com.tailscale.ipn.util.TSLog // Notifier is a wrapper around the IPN Bus notifier. It provides a way to watch // for changes in various parts of the Tailscale engine. You will typically only use @@ -69,23 +68,24 @@ object Notifier { NotifyWatchOpt.Netmap.value or NotifyWatchOpt.Prefs.value or NotifyWatchOpt.InitialState.value or - NotifyWatchOpt.InitialHealthState.value - manager = - app.watchNotifications(mask.toLong()) { notification -> - val notify = decoder.decodeFromStream(notification.inputStream()) - notify.State?.let { state.set(Ipn.State.fromInt(it)) } - notify.NetMap?.let(netmap::set) - notify.Prefs?.let(prefs::set) - notify.Engine?.let(engineStatus::set) - notify.TailFSShares?.let(tailFSShares::set) - notify.BrowseToURL?.let(browseToURL::set) - notify.LoginFinished?.let { loginFinished.set(it.property) } - notify.Version?.let(version::set) - notify.OutgoingFiles?.let(outgoingFiles::set) - notify.FilesWaiting?.let(filesWaiting::set) - notify.IncomingFiles?.let(incomingFiles::set) - notify.Health?.let(health::set) - } + NotifyWatchOpt.InitialHealthState.value or + NotifyWatchOpt.RateLimitNetmaps.value + manager = + app.watchNotifications(mask.toLong()) { notification -> + val notify = decoder.decodeFromStream(notification.inputStream()) + notify.State?.let { state.set(Ipn.State.fromInt(it)) } + notify.NetMap?.let(netmap::set) + notify.Prefs?.let(prefs::set) + notify.Engine?.let(engineStatus::set) + notify.TailFSShares?.let(tailFSShares::set) + notify.BrowseToURL?.let(browseToURL::set) + notify.LoginFinished?.let { loginFinished.set(it.property) } + notify.Version?.let(version::set) + notify.OutgoingFiles?.let(outgoingFiles::set) + notify.FilesWaiting?.let(filesWaiting::set) + notify.IncomingFiles?.let(incomingFiles::set) + notify.Health?.let(health::set) + } } } @@ -108,9 +108,10 @@ object Notifier { InitialTailFSShares(32), InitialOutgoingFiles(64), InitialHealthState(128), + RateLimitNetmaps(256), } fun setState(newState: Ipn.State) { _state.value = newState -} + } }