From 67a9320d264cd6a09e96e9731c292e0d60846081 Mon Sep 17 00:00:00 2001 From: Jonathan Nobels Date: Thu, 28 Mar 2024 16:29:55 -0400 Subject: [PATCH] android/ui: hide mullvad exit nodes in peer list (#263) Updates tailscale/corp#18202 hides the mullvad nodes (basesd on their Name) in the peers list. This differs slightly from the iOS logic where we use the Location property, but it feels like a better approach since Location is optional in the HostInfo and may not always be present. Signed-off-by: Jonathan Nobels --- .../src/main/java/com/tailscale/ipn/ui/model/TailCfg.kt | 3 +++ .../main/java/com/tailscale/ipn/ui/util/PeerHelper.kt | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) 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()