From 905426436390639476de7c7018ff2e01e0d915c8 Mon Sep 17 00:00:00 2001 From: Percy Wegmann Date: Thu, 11 Apr 2024 13:28:05 -0500 Subject: [PATCH] android/ui: sort self peer first in list of peers Closes tailscale/corp#19111 Signed-off-by: Percy Wegmann --- .../main/java/com/tailscale/ipn/ui/model/TailCfg.kt | 2 ++ .../java/com/tailscale/ipn/ui/util/PeerHelper.kt | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) 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 778c59f..6f6cc81 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 @@ -101,6 +101,8 @@ class Tailcfg { val displayName: String get() = ComputedName ?: Name + fun isSelfNode(netmap: Netmap.NetworkMap): Boolean = StableID == netmap.SelfNode.StableID + fun connectedOrSelfNode(nm: Netmap.NetworkMap?) = Online == true || StableID == nm?.SelfNode?.StableID 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 7b279d2..f85729f 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 @@ -39,7 +39,18 @@ class PeerCategorizer { grouped .map { (userId, peers) -> val profile = netmap.userProfile(userId) - PeerSet(profile, peers.sortedBy { it.ComputedName }) + PeerSet( + profile, + peers.sortedWith { a, b -> + when { + a.StableID == b.StableID -> 0 + a.isSelfNode(netmap) -> -1 + b.isSelfNode(netmap) -> 1 + else -> + (a.ComputedName?.lowercase() ?: "").compareTo( + b.ComputedName?.lowercase() ?: "") + } + }) } .sortedBy { if (it.user?.ID == me?.ID) {