fix total user count in syncshell (distinct by UIDs)
This commit is contained in:
@@ -8,16 +8,16 @@ namespace MareSynchronos.UI.Components;
|
||||
|
||||
public abstract class DrawFolderBase : IDrawFolder
|
||||
{
|
||||
protected readonly IEnumerable<DrawUserPair> _drawPairs;
|
||||
public IEnumerable<DrawUserPair> DrawPairs { get; private set; }
|
||||
protected readonly string _id;
|
||||
protected readonly TagHandler _tagHandler;
|
||||
private float _menuWidth = -1;
|
||||
public int OnlinePairs => _drawPairs.Count(u => u.Pair.IsOnline);
|
||||
public int OnlinePairs => DrawPairs.Count(u => u.Pair.IsOnline);
|
||||
public int TotalPairs { get; }
|
||||
protected DrawFolderBase(string id, IEnumerable<DrawUserPair> drawPairs, TagHandler tagHandler, int totalPairs)
|
||||
{
|
||||
_id = id;
|
||||
_drawPairs = drawPairs;
|
||||
DrawPairs = drawPairs;
|
||||
_tagHandler = tagHandler;
|
||||
TotalPairs = totalPairs;
|
||||
}
|
||||
@@ -27,7 +27,7 @@ public abstract class DrawFolderBase : IDrawFolder
|
||||
|
||||
public void Draw()
|
||||
{
|
||||
if (!RenderIfEmpty && !_drawPairs.Any()) return;
|
||||
if (!RenderIfEmpty && !DrawPairs.Any()) return;
|
||||
|
||||
using var id = ImRaii.PushId("folder_" + _id);
|
||||
|
||||
@@ -57,9 +57,9 @@ public abstract class DrawFolderBase : IDrawFolder
|
||||
if (_tagHandler.IsTagOpen(_id))
|
||||
{
|
||||
using var indent = ImRaii.PushIndent(20f);
|
||||
if (_drawPairs.Any())
|
||||
if (DrawPairs.Any())
|
||||
{
|
||||
foreach (var item in _drawPairs)
|
||||
foreach (var item in DrawPairs)
|
||||
{
|
||||
item.DrawPairedClient();
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public class DrawFolderGroup : DrawFolderBase
|
||||
if (UiSharedService.IconTextButton(FontAwesomeIcon.StickyNote, "Copy Notes", menuWidth, true))
|
||||
{
|
||||
ImGui.CloseCurrentPopup();
|
||||
ImGui.SetClipboardText(UiSharedService.GetNotes(_drawPairs.Select(k => k.Pair).ToList()));
|
||||
ImGui.SetClipboardText(UiSharedService.GetNotes(DrawPairs.Select(k => k.Pair).ToList()));
|
||||
}
|
||||
UiSharedService.AttachToolTip("Copies all your notes for all users in this Syncshell to the clipboard." + Environment.NewLine + "They can be imported via Settings -> Privacy -> Import Notes from Clipboard");
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ public class DrawFolderTag : DrawFolderBase
|
||||
TagHandler.CustomAllTag => false,
|
||||
TagHandler.CustomOfflineSyncshellTag => false,
|
||||
_ => true,
|
||||
} && _drawPairs.Any();
|
||||
} && DrawPairs.Any();
|
||||
|
||||
private bool RenderCount => _id switch
|
||||
{
|
||||
@@ -135,7 +135,7 @@ public class DrawFolderTag : DrawFolderBase
|
||||
{
|
||||
if (!RenderPause) return currentRightSideX;
|
||||
|
||||
var allArePaused = _drawPairs.All(pair => pair.UserPair!.OwnPermissions.IsPaused());
|
||||
var allArePaused = DrawPairs.All(pair => pair.UserPair!.OwnPermissions.IsPaused());
|
||||
var pauseButton = allArePaused ? FontAwesomeIcon.Play : FontAwesomeIcon.Pause;
|
||||
var pauseButtonX = UiSharedService.GetIconButtonSize(pauseButton).X;
|
||||
|
||||
@@ -145,11 +145,11 @@ public class DrawFolderTag : DrawFolderBase
|
||||
{
|
||||
if (allArePaused)
|
||||
{
|
||||
ResumeAllPairs(_drawPairs);
|
||||
ResumeAllPairs(DrawPairs);
|
||||
}
|
||||
else
|
||||
{
|
||||
PauseRemainingPairs(_drawPairs);
|
||||
PauseRemainingPairs(DrawPairs);
|
||||
}
|
||||
}
|
||||
if (allArePaused)
|
||||
|
||||
@@ -9,7 +9,8 @@ public class DrawGroupedGroupFolder : IDrawFolder
|
||||
{
|
||||
private readonly IEnumerable<IDrawFolder> _groups;
|
||||
private readonly TagHandler _tagHandler;
|
||||
public int OnlinePairs => _groups.Sum(g => g.OnlinePairs);
|
||||
public IEnumerable<DrawUserPair> DrawPairs => throw new NotSupportedException();
|
||||
public int OnlinePairs => _groups.SelectMany(g => g.DrawPairs).Where(g => g.Pair.IsOnline).DistinctBy(g => g.UID).Count();
|
||||
public int TotalPairs => _groups.Sum(g => g.TotalPairs);
|
||||
|
||||
public DrawGroupedGroupFolder(IEnumerable<IDrawFolder> groups, TagHandler tagHandler)
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
namespace MareSynchronos.UI.Components;
|
||||
|
||||
namespace MareSynchronos.UI.Components;
|
||||
|
||||
public interface IDrawFolder
|
||||
{
|
||||
int TotalPairs { get; }
|
||||
int OnlinePairs { get; }
|
||||
IEnumerable<DrawUserPair> DrawPairs { get; }
|
||||
|
||||
void Draw();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user