From d2bb4e01a4a3692116c1d9b60f40de6dcf376cc6 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Thu, 29 Sep 2022 16:01:25 +0200 Subject: [PATCH] implement callbacks --- MareAPI | 2 +- .../WebAPI/ApiController.Functions.Admin.cs | 3 +- .../ApiController.Functions.Callbacks.cs | 29 +++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/MareAPI b/MareAPI index 57a7ab8..008f886 160000 --- a/MareAPI +++ b/MareAPI @@ -1 +1 @@ -Subproject commit 57a7ab82625ca350bce0442c60f457e5e5e172c3 +Subproject commit 008f88674347b5230b860366017eb3ec157b2090 diff --git a/MareSynchronos/WebAPI/ApiController.Functions.Admin.cs b/MareSynchronos/WebAPI/ApiController.Functions.Admin.cs index 33720c4..c301460 100644 --- a/MareSynchronos/WebAPI/ApiController.Functions.Admin.cs +++ b/MareSynchronos/WebAPI/ApiController.Functions.Admin.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Threading.Tasks; using MareSynchronos.API; using Microsoft.AspNetCore.SignalR.Client; diff --git a/MareSynchronos/WebAPI/ApiController.Functions.Callbacks.cs b/MareSynchronos/WebAPI/ApiController.Functions.Callbacks.cs index 1109b35..ac04131 100644 --- a/MareSynchronos/WebAPI/ApiController.Functions.Callbacks.cs +++ b/MareSynchronos/WebAPI/ApiController.Functions.Callbacks.cs @@ -77,11 +77,40 @@ public partial class ApiController private void GroupPairChangedCallback(GroupPairDto dto) { + if (dto.IsRemoved.GetValueOrDefault(false)) + { + GroupPairedClients.RemoveAll(g => g.GroupGID == dto.GroupGID && g.UserUID == dto.UserUID); + } + var existingUser = GroupPairedClients.FirstOrDefault(f => f.GroupGID == dto.GroupGID && f.UserUID == dto.UserUID); + if (existingUser == null) + { + GroupPairedClients.Add(dto); + return; + } + + existingUser.IsPaused = dto.IsPaused ?? existingUser.IsPaused; + existingUser.UserAlias = dto.UserAlias ?? existingUser.UserAlias; } private void GroupChangedCallback(GroupDto dto) { + if (dto.IsDeleted.GetValueOrDefault(false)) + { + Groups.RemoveAll(g => g.GID == dto.GID); + GroupPairedClients.RemoveAll(g => g.GroupGID == dto.GID); + return; + } + var existingGroup = Groups.FirstOrDefault(g => g.GID == dto.GID); + if (existingGroup == null) + { + Groups.Add(dto); + return; + } + + existingGroup.OwnedBy = dto.OwnedBy ?? existingGroup.OwnedBy; + existingGroup.InvitesEnabled = dto.InvitesEnabled ?? existingGroup.InvitesEnabled; + existingGroup.IsPaused = dto.IsPaused ?? existingGroup.IsPaused; } }