fix sorting in syncshells, display owner properly, display mod popup for syncshells, order world list by name
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Authors></Authors>
|
<Authors></Authors>
|
||||||
<Company></Company>
|
<Company></Company>
|
||||||
<Version>0.7.4</Version>
|
<Version>0.7.5</Version>
|
||||||
<Description></Description>
|
<Description></Description>
|
||||||
<Copyright></Copyright>
|
<Copyright></Copyright>
|
||||||
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ public class CompactUi : Window, IDisposable
|
|||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
string dateTime = "DEV VERSION";
|
string dateTime = "DEV VERSION";
|
||||||
|
var ver = Assembly.GetExecutingAssembly().GetName().Version;
|
||||||
|
this.WindowName = "Mare Synchronos " + ver.Major + "." + ver.Minor + "." + ver.Build + "###MareSynchronosMainUI";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
dateTime = VariousExtensions.GetLinkerTime(Assembly.GetCallingAssembly()).ToString("yyyyMMddHHmmss");
|
dateTime = VariousExtensions.GetLinkerTime(Assembly.GetCallingAssembly()).ToString("yyyyMMddHHmmss");
|
||||||
@@ -72,7 +74,7 @@ public class CompactUi : Window, IDisposable
|
|||||||
Logger.Warn(ex.Message);
|
Logger.Warn(ex.Message);
|
||||||
Logger.Warn(ex.StackTrace);
|
Logger.Warn(ex.StackTrace);
|
||||||
}
|
}
|
||||||
this.WindowName = "Mare Synchronos " + dateTime + "###MareSynchronosMainUI";
|
this.WindowName = $"Mare Synchronos {dateTime} ({ver.Major}.{ver.Minor}.{ver.Build})###MareSynchronosMainUI";
|
||||||
Toggle();
|
Toggle();
|
||||||
#else
|
#else
|
||||||
var ver = Assembly.GetExecutingAssembly().GetName().Version;
|
var ver = Assembly.GetExecutingAssembly().GetName().Version;
|
||||||
|
|||||||
@@ -415,10 +415,25 @@ namespace MareSynchronos.UI
|
|||||||
ImGui.Indent(collapseButton.X);
|
ImGui.Indent(collapseButton.X);
|
||||||
if (_expandedGroupState[groupDto.GID])
|
if (_expandedGroupState[groupDto.GID])
|
||||||
{
|
{
|
||||||
var visibleUsers = pairsInGroup.Where(u => u.IsVisible).OrderBy(u => u.GetNote() ?? u.UserData.AliasOrUID, StringComparer.OrdinalIgnoreCase).ToList();
|
var visibleUsers = pairsInGroup.Where(u => u.IsVisible)
|
||||||
var onlineUsers = pairsInGroup.Where(u => u.IsOnline && !u.IsVisible).OrderBy(u => u.GetNote() ?? u.UserData.AliasOrUID, StringComparer.OrdinalIgnoreCase).ToList();
|
.OrderByDescending(u => string.Equals(u.UserData.UID, groupDto.OwnerUID, StringComparison.Ordinal))
|
||||||
var offlineUsers = pairsInGroup.Where(u => !u.IsOnline && !u.IsVisible).OrderBy(u => u.GetNote() ?? u.UserData.AliasOrUID, StringComparer.OrdinalIgnoreCase).ToList();
|
.ThenByDescending(u => u.GroupPair[groupDto].GroupPairStatusInfo.IsModerator())
|
||||||
|
.ThenByDescending(u => u.GroupPair[groupDto].GroupPairStatusInfo.IsPinned())
|
||||||
|
.ThenBy(u => u.GetNote() ?? u.UserData.AliasOrUID, StringComparer.OrdinalIgnoreCase)
|
||||||
|
.ToList();
|
||||||
|
var onlineUsers = pairsInGroup.Where(u => u.IsOnline && !u.IsVisible)
|
||||||
|
.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.GetNote() ?? u.UserData.AliasOrUID, StringComparer.OrdinalIgnoreCase)
|
||||||
|
.ToList();
|
||||||
|
var offlineUsers = pairsInGroup.Where(u => !u.IsOnline && !u.IsVisible)
|
||||||
|
.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.GetNote() ?? u.UserData.AliasOrUID, StringComparer.OrdinalIgnoreCase)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
if (visibleUsers.Any())
|
if (visibleUsers.Any())
|
||||||
{
|
{
|
||||||
ImGui.Text("Visible");
|
ImGui.Text("Visible");
|
||||||
@@ -426,11 +441,11 @@ namespace MareSynchronos.UI
|
|||||||
foreach (var entry in visibleUsers)
|
foreach (var entry in visibleUsers)
|
||||||
{
|
{
|
||||||
UiShared.DrawWithID(groupDto.GID + entry.UserData.UID, () => DrawSyncshellPairedClient(
|
UiShared.DrawWithID(groupDto.GID + entry.UserData.UID, () => DrawSyncshellPairedClient(
|
||||||
entry,
|
entry,
|
||||||
entry.GroupPair.Single(g => GroupDataComparer.Instance.Equals(g.Key.Group, groupDto.Group)).Value,
|
entry.GroupPair.Single(g => GroupDataComparer.Instance.Equals(g.Key.Group, groupDto.Group)).Value,
|
||||||
groupDto.OwnerUID,
|
groupDto.OwnerUID,
|
||||||
string.Equals(groupDto.OwnerUID, ApiController.UID, StringComparison.Ordinal),
|
string.Equals(groupDto.OwnerUID, ApiController.UID, StringComparison.Ordinal),
|
||||||
groupDto.GroupUserInfo.IsModerator()));
|
groupDto.GroupUserInfo.IsModerator()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -442,10 +457,10 @@ namespace MareSynchronos.UI
|
|||||||
{
|
{
|
||||||
UiShared.DrawWithID(groupDto.GID + entry.UserData.UID, () => DrawSyncshellPairedClient(
|
UiShared.DrawWithID(groupDto.GID + entry.UserData.UID, () => DrawSyncshellPairedClient(
|
||||||
entry,
|
entry,
|
||||||
entry.GroupPair.Single(g => GroupDataComparer.Instance.Equals(g.Key.Group, groupDto.Group)).Value,
|
entry.GroupPair.Single(g => GroupDataComparer.Instance.Equals(g.Key.Group, groupDto.Group)).Value,
|
||||||
groupDto.OwnerUID,
|
groupDto.OwnerUID,
|
||||||
string.Equals(groupDto.OwnerUID, ApiController.UID, StringComparison.Ordinal),
|
string.Equals(groupDto.OwnerUID, ApiController.UID, StringComparison.Ordinal),
|
||||||
groupDto.GroupUserInfo.IsModerator()));
|
groupDto.GroupUserInfo.IsModerator()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -456,11 +471,11 @@ namespace MareSynchronos.UI
|
|||||||
foreach (var entry in offlineUsers)
|
foreach (var entry in offlineUsers)
|
||||||
{
|
{
|
||||||
UiShared.DrawWithID(groupDto.GID + entry.UserData.UID, () => DrawSyncshellPairedClient(
|
UiShared.DrawWithID(groupDto.GID + entry.UserData.UID, () => DrawSyncshellPairedClient(
|
||||||
entry,
|
entry,
|
||||||
entry.GroupPair.Single(g => GroupDataComparer.Instance.Equals(g.Key.Group, groupDto.Group)).Value,
|
entry.GroupPair.Single(g => GroupDataComparer.Instance.Equals(g.Key.Group, groupDto.Group)).Value,
|
||||||
groupDto.OwnerUID,
|
groupDto.OwnerUID,
|
||||||
string.Equals(groupDto.OwnerUID, ApiController.UID, StringComparison.Ordinal),
|
string.Equals(groupDto.OwnerUID, ApiController.UID, StringComparison.Ordinal),
|
||||||
groupDto.GroupUserInfo.IsModerator()));
|
groupDto.GroupUserInfo.IsModerator()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -729,7 +744,7 @@ namespace MareSynchronos.UI
|
|||||||
var textSize = ImGui.CalcTextSize(entryUID);
|
var textSize = ImGui.CalcTextSize(entryUID);
|
||||||
var originalY = ImGui.GetCursorPosY();
|
var originalY = ImGui.GetCursorPosY();
|
||||||
var userIsMod = entry.GroupPairStatusInfo.IsModerator();
|
var userIsMod = entry.GroupPairStatusInfo.IsModerator();
|
||||||
var userIsOwner = string.Equals(entryUID, ownerUid, StringComparison.Ordinal);
|
var userIsOwner = string.Equals(pair.UserData.UID, ownerUid, StringComparison.Ordinal);
|
||||||
var isPinned = entry.GroupPairStatusInfo.IsPinned();
|
var isPinned = entry.GroupPairStatusInfo.IsPinned();
|
||||||
var isPaused = pair.IsPaused;
|
var isPaused = pair.IsPaused;
|
||||||
var presenceIcon = pair.IsVisible ? FontAwesomeIcon.Eye : (pair.IsOnline ? FontAwesomeIcon.Link : FontAwesomeIcon.Unlink);
|
var presenceIcon = pair.IsVisible ? FontAwesomeIcon.Eye : (pair.IsOnline ? FontAwesomeIcon.Link : FontAwesomeIcon.Unlink);
|
||||||
@@ -942,7 +957,7 @@ namespace MareSynchronos.UI
|
|||||||
|
|
||||||
if (ImGui.BeginPopup("Popup"))
|
if (ImGui.BeginPopup("Popup"))
|
||||||
{
|
{
|
||||||
if ((!isModerator) && !(userIsMod || userIsOwner))
|
if ((isModerator) && !(userIsMod || userIsOwner))
|
||||||
{
|
{
|
||||||
var pinText = isPinned ? "Unpin user" : "Pin user";
|
var pinText = isPinned ? "Unpin user" : "Pin user";
|
||||||
if (UiShared.IconTextButton(FontAwesomeIcon.Thumbtack, pinText))
|
if (UiShared.IconTextButton(FontAwesomeIcon.Thumbtack, pinText))
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ public class SettingsUi : Window, IDisposable
|
|||||||
_serverConfigurationManager.Save();
|
_serverConfigurationManager.Save();
|
||||||
}
|
}
|
||||||
var worldIdx = (ushort)item.WorldId;
|
var worldIdx = (ushort)item.WorldId;
|
||||||
var data = _uiShared.WorldData;
|
var data = _uiShared.WorldData.OrderBy(u => u.Value, StringComparer.Ordinal).ToDictionary(k => k.Key, k => k.Value);
|
||||||
if (!data.TryGetValue(worldIdx, out string? worldPreview))
|
if (!data.TryGetValue(worldIdx, out string? worldPreview))
|
||||||
{
|
{
|
||||||
worldPreview = data.First().Value;
|
worldPreview = data.First().Value;
|
||||||
|
|||||||
Reference in New Issue
Block a user