Allow moderators to use shell broadcasting, distinct shell finder to remove duplicate shells

This commit is contained in:
cake
2025-11-30 01:26:18 +01:00
parent 04cd09cbb9
commit cab13874d8
3 changed files with 8 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility;
using Dalamud.Utility;
using LightlessSync.API.Data.Extensions;
using LightlessSync.API.Dto.Group;
using LightlessSync.LightlessConfiguration;
using LightlessSync.Services;
@@ -55,9 +56,9 @@ namespace LightlessSync.UI
private void RebuildSyncshellDropdownOptions()
{
var selectedGid = _configService.Current.SelectedFinderSyncshell;
var allSyncshells = _allSyncshells ?? Array.Empty<GroupFullInfoDto>();
var ownedSyncshells = allSyncshells
.Where(g => string.Equals(g.OwnerUID, _userUid, StringComparison.Ordinal))
var allSyncshells = _allSyncshells ?? [];
var filteredSyncshells = allSyncshells
.Where(g => string.Equals(g.OwnerUID, _userUid, StringComparison.Ordinal) || g.GroupUserInfo.IsModerator())
.ToList();
_syncshellOptions.Clear();
@@ -65,7 +66,7 @@ namespace LightlessSync.UI
var addedGids = new HashSet<string>(StringComparer.Ordinal);
foreach (var shell in ownedSyncshells)
foreach (var shell in filteredSyncshells)
{
var label = shell.GroupAliasOrGID ?? shell.GID;
_syncshellOptions.Add((label, shell.GID, true));

View File

@@ -12,6 +12,7 @@ using LightlessSync.Services;
using LightlessSync.Services.Mediator;
using LightlessSync.Services.Profiles;
using LightlessSync.UI.Services;
using LightlessSync.UI.Style;
using LightlessSync.WebAPI;
using Microsoft.Extensions.Logging;
using SixLabors.ImageSharp;
@@ -558,6 +559,7 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase
UiSharedService.ColoredSeparator(UIColors.Get("LightlessPurple"), 1.0f);
}
private void DrawUserRowCustom(Pair pair, GroupPairUserInfo? userInfoOpt, GroupFullInfoDto GroupFullInfo, int rowIndex, float colUid, float colFlags, float colActions)
{
using var id = ImRaii.PushId("userRow_" + pair.UserData.UID);

View File

@@ -498,7 +498,7 @@ public class SyncshellFinderUI : WindowMediatorSubscriberBase
{
var groups = await _apiController.GetBroadcastedGroups(syncshellBroadcasts)
.ConfigureAwait(false);
updatedList = groups?.ToList();
updatedList = groups?.DistinctBy(g => g.Group.GID).ToList();
}
catch (Exception ex)
{