Allow moderators to use shell broadcasting, distinct shell finder to remove duplicate shells
This commit is contained in:
@@ -3,6 +3,7 @@ using Dalamud.Interface;
|
|||||||
using Dalamud.Interface.Colors;
|
using Dalamud.Interface.Colors;
|
||||||
using Dalamud.Interface.Utility;
|
using Dalamud.Interface.Utility;
|
||||||
using Dalamud.Utility;
|
using Dalamud.Utility;
|
||||||
|
using LightlessSync.API.Data.Extensions;
|
||||||
using LightlessSync.API.Dto.Group;
|
using LightlessSync.API.Dto.Group;
|
||||||
using LightlessSync.LightlessConfiguration;
|
using LightlessSync.LightlessConfiguration;
|
||||||
using LightlessSync.Services;
|
using LightlessSync.Services;
|
||||||
@@ -55,9 +56,9 @@ namespace LightlessSync.UI
|
|||||||
private void RebuildSyncshellDropdownOptions()
|
private void RebuildSyncshellDropdownOptions()
|
||||||
{
|
{
|
||||||
var selectedGid = _configService.Current.SelectedFinderSyncshell;
|
var selectedGid = _configService.Current.SelectedFinderSyncshell;
|
||||||
var allSyncshells = _allSyncshells ?? Array.Empty<GroupFullInfoDto>();
|
var allSyncshells = _allSyncshells ?? [];
|
||||||
var ownedSyncshells = allSyncshells
|
var filteredSyncshells = allSyncshells
|
||||||
.Where(g => string.Equals(g.OwnerUID, _userUid, StringComparison.Ordinal))
|
.Where(g => string.Equals(g.OwnerUID, _userUid, StringComparison.Ordinal) || g.GroupUserInfo.IsModerator())
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
_syncshellOptions.Clear();
|
_syncshellOptions.Clear();
|
||||||
@@ -65,7 +66,7 @@ namespace LightlessSync.UI
|
|||||||
|
|
||||||
var addedGids = new HashSet<string>(StringComparer.Ordinal);
|
var addedGids = new HashSet<string>(StringComparer.Ordinal);
|
||||||
|
|
||||||
foreach (var shell in ownedSyncshells)
|
foreach (var shell in filteredSyncshells)
|
||||||
{
|
{
|
||||||
var label = shell.GroupAliasOrGID ?? shell.GID;
|
var label = shell.GroupAliasOrGID ?? shell.GID;
|
||||||
_syncshellOptions.Add((label, shell.GID, true));
|
_syncshellOptions.Add((label, shell.GID, true));
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ using LightlessSync.Services;
|
|||||||
using LightlessSync.Services.Mediator;
|
using LightlessSync.Services.Mediator;
|
||||||
using LightlessSync.Services.Profiles;
|
using LightlessSync.Services.Profiles;
|
||||||
using LightlessSync.UI.Services;
|
using LightlessSync.UI.Services;
|
||||||
|
using LightlessSync.UI.Style;
|
||||||
using LightlessSync.WebAPI;
|
using LightlessSync.WebAPI;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using SixLabors.ImageSharp;
|
using SixLabors.ImageSharp;
|
||||||
@@ -558,6 +559,7 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase
|
|||||||
|
|
||||||
UiSharedService.ColoredSeparator(UIColors.Get("LightlessPurple"), 1.0f);
|
UiSharedService.ColoredSeparator(UIColors.Get("LightlessPurple"), 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawUserRowCustom(Pair pair, GroupPairUserInfo? userInfoOpt, GroupFullInfoDto GroupFullInfo, int rowIndex, float colUid, float colFlags, float colActions)
|
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);
|
using var id = ImRaii.PushId("userRow_" + pair.UserData.UID);
|
||||||
|
|||||||
@@ -498,7 +498,7 @@ public class SyncshellFinderUI : WindowMediatorSubscriberBase
|
|||||||
{
|
{
|
||||||
var groups = await _apiController.GetBroadcastedGroups(syncshellBroadcasts)
|
var groups = await _apiController.GetBroadcastedGroups(syncshellBroadcasts)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
updatedList = groups?.ToList();
|
updatedList = groups?.DistinctBy(g => g.Group.GID).ToList();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user