diff --git a/MareSynchronos/PlayerData/Pairs/Pair.cs b/MareSynchronos/PlayerData/Pairs/Pair.cs index 4207124..77642a2 100644 --- a/MareSynchronos/PlayerData/Pairs/Pair.cs +++ b/MareSynchronos/PlayerData/Pairs/Pair.cs @@ -231,6 +231,16 @@ public class Pair : DisposableMediatorSubscriberBase return note; } + public string GetPairSortKey() + { + string? noteOrName = GetNoteOrName(); + + if (noteOrName != null) + return $"0{noteOrName}"; + else + return $"9{UserData.AliasOrUID}"; + } + public string GetPlayerNameHash() { return CachedPlayer?.PlayerNameHash ?? string.Empty; diff --git a/MareSynchronos/UI/CompactUI.cs b/MareSynchronos/UI/CompactUI.cs index b77f2bf..6c8f5cd 100644 --- a/MareSynchronos/UI/CompactUI.cs +++ b/MareSynchronos/UI/CompactUI.cs @@ -369,7 +369,7 @@ public class CompactUi : WindowMediatorSubscriberBase var ySize = TransferPartHeight == 0 ? 1 : (ImGui.GetWindowContentRegionMax().Y - ImGui.GetWindowContentRegionMin().Y) - TransferPartHeight - ImGui.GetCursorPosY(); - var users = GetFilteredUsers().OrderBy(u => u.GetNoteOrName()); + var users = GetFilteredUsers().OrderBy(u => u.GetPairSortKey()); var onlineUsers = users.Where(u => u.UserPair!.OtherPermissions.IsPaired() && (u.IsOnline || u.UserPair!.OwnPermissions.IsPaused())).Select(c => new DrawUserPair("Online" + c.UserData.UID, c, _uidDisplayHandler, _apiController, Mediator, _selectGroupForPairUi, _uiSharedService)).ToList(); var visibleUsers = users.Where(u => u.IsVisible).Select(c => new DrawUserPair("Visible" + c.UserData.UID, c, _uidDisplayHandler, _apiController, Mediator, _selectGroupForPairUi, _uiSharedService)).ToList(); diff --git a/MareSynchronos/UI/Components/GroupPanel.cs b/MareSynchronos/UI/Components/GroupPanel.cs index 77def56..2624b6c 100644 --- a/MareSynchronos/UI/Components/GroupPanel.cs +++ b/MareSynchronos/UI/Components/GroupPanel.cs @@ -420,7 +420,7 @@ internal sealed class GroupPanel .OrderByDescending(u => string.Equals(u.UserData.UID, groupDto.OwnerUID, StringComparison.Ordinal)) .ThenByDescending(u => u.GroupPair[groupDto].GroupPairStatusInfo.IsModerator()) .ThenByDescending(u => u.GroupPair[groupDto].GroupPairStatusInfo.IsPinned()) - .ThenBy(u => u.GetNoteOrName() ?? u.UserData.AliasOrUID, StringComparer.OrdinalIgnoreCase); + .ThenBy(u => u.GetPairSortKey(), StringComparer.OrdinalIgnoreCase); var visibleUsers = new List(); var onlineUsers = new List(); @@ -465,7 +465,7 @@ internal sealed class GroupPanel ImGui.Separator(); if (hideOfflineUsers) { - UiSharedService.ColorText($" {offlineUsers.Count} users omitted from display.", ImGuiColors.DalamudGrey); + UiSharedService.ColorText($" {offlineUsers.Count} offline users omitted from display.", ImGuiColors.DalamudGrey); } else {