From 42893e5b53d8aa375940313bc911fdf3b8657bd5 Mon Sep 17 00:00:00 2001 From: BoxuChan Date: Mon, 6 Oct 2025 18:58:59 +0200 Subject: [PATCH] Allow Pausing Users within Syncshells without Individual Pair --- MareSynchronos/PlayerData/Pairs/Pair.cs | 5 +++++ MareSynchronos/UI/Components/DrawGroupPair.cs | 20 +++++++++++++++---- .../SignalR/ApIController.Functions.Users.cs | 6 ++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/MareSynchronos/PlayerData/Pairs/Pair.cs b/MareSynchronos/PlayerData/Pairs/Pair.cs index af1449e..33ad18a 100644 --- a/MareSynchronos/PlayerData/Pairs/Pair.cs +++ b/MareSynchronos/PlayerData/Pairs/Pair.cs @@ -332,6 +332,11 @@ public class Pair : DisposableMediatorSubscriberBase _logger.LogTrace("Nothing to remove"); return data; } + if (IsPaused) + { + _logger.LogTrace("Skipping data removal for paused user {uid}", UserData.UID); + return data; + } var ActiveGroupPairs = GroupPair.Where(p => !p.Value.GroupUserPermissions.IsPaused() && !p.Key.GroupUserPermissions.IsPaused()).ToList(); diff --git a/MareSynchronos/UI/Components/DrawGroupPair.cs b/MareSynchronos/UI/Components/DrawGroupPair.cs index 4239a38..1181ee8 100644 --- a/MareSynchronos/UI/Components/DrawGroupPair.cs +++ b/MareSynchronos/UI/Components/DrawGroupPair.cs @@ -296,10 +296,22 @@ public class DrawGroupPair : DrawPairBase if (_uiSharedService.IconButton(pauseIcon)) { - var perm = _pair.UserPair!.OwnPermissions; - perm.SetPaused(!perm.IsPaused()); - _ = _apiController.UserSetPairPermissions(new(_pair.UserData, perm)); - + if (_pair.UserPair != null) + { + var perm = _pair.UserPair.OwnPermissions; + perm.SetPaused(!perm.IsPaused()); + _ = _apiController.UserSetPairPermissions(new(_pair.UserData, perm)); + } + else + { + var groupPerm = _fullInfoDto.GroupUserPermissions; + groupPerm.SetPaused(!groupPerm.IsPaused()); + _ = _apiController.GroupSetUserPermissions(new GroupPairUserPermissionDto( + _group.Group, + _pair.UserData, + groupPerm + )); + } } UiSharedService.AttachToolTip(!_fullInfoDto.GroupUserPermissions.IsPaused() diff --git a/MareSynchronos/WebAPI/SignalR/ApIController.Functions.Users.cs b/MareSynchronos/WebAPI/SignalR/ApIController.Functions.Users.cs index 08862d3..43f9adc 100644 --- a/MareSynchronos/WebAPI/SignalR/ApIController.Functions.Users.cs +++ b/MareSynchronos/WebAPI/SignalR/ApIController.Functions.Users.cs @@ -1,4 +1,5 @@ using MareSynchronos.API.Data; +using MareSynchronos.API.Dto.Group; using MareSynchronos.API.Dto.User; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Extensions.Logging; @@ -90,6 +91,11 @@ public partial class ApiController { await _mareHub!.SendAsync(nameof(UserSetPairPermissions), userPermissions).ConfigureAwait(false); } + + public Task GroupSetUserPermissions(GroupPairUserPermissionDto dto) + { + return _mareHub!.InvokeAsync(nameof(GroupSetUserPermissions), dto); + } public async Task UserSetProfile(UserProfileDto userDescription) {