diff --git a/android/src/main/java/com/tailscale/ipn/ui/model/TailCfg.kt b/android/src/main/java/com/tailscale/ipn/ui/model/TailCfg.kt index a7e689f..827de6e 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/model/TailCfg.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/model/TailCfg.kt @@ -79,6 +79,9 @@ class Tailcfg { // isExitNode reproduces the Go logic in local.go peerStatusFromNode val isExitNode: Boolean = AllowedIPs?.contains("0.0.0.0/0") ?: false && AllowedIPs?.contains("::/0") ?: false + + val isMullvadNode: Boolean + get() = Name.endsWith(".mullvad.ts.net.") } @Serializable diff --git a/android/src/main/java/com/tailscale/ipn/ui/util/PeerHelper.kt b/android/src/main/java/com/tailscale/ipn/ui/util/PeerHelper.kt index d6149c0..847192b 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/util/PeerHelper.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/util/PeerHelper.kt @@ -45,10 +45,13 @@ class PeerCategorizer(scope: CoroutineScope) { // (jonathan) TODO: MDM -> currentUser, otherUsers, taggedDevices val userId = peer.User - if (!grouped.containsKey(userId)) { - grouped[userId] = mutableListOf() + // Mullvad based nodes should not be shown in the peer list + if (!peer.isMullvadNode) { + if (!grouped.containsKey(userId)) { + grouped[userId] = mutableListOf() + } + grouped[userId]?.add(peer) } - grouped[userId]?.add(peer) } val me = netmap.currentUserProfile()