From 609bad2431a36bc89601f3e79cbd7e6bf16dd4f5 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sun, 8 Jun 2025 16:18:18 +0100 Subject: [PATCH] Fixed selecting 'delete messages' on a dialog failing #378 --- .../Callbacks/DialogueCallbacks.cs | 2 ++ .../Controllers/DialogueController.cs | 21 +++++++++++++++++-- .../Routers/Static/DialogStaticRouter.cs | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Callbacks/DialogueCallbacks.cs b/Libraries/SPTarkov.Server.Core/Callbacks/DialogueCallbacks.cs index bc30e684..574d7c3d 100644 --- a/Libraries/SPTarkov.Server.Core/Callbacks/DialogueCallbacks.cs +++ b/Libraries/SPTarkov.Server.Core/Callbacks/DialogueCallbacks.cs @@ -246,6 +246,8 @@ public class DialogueCallbacks( public virtual ValueTask ClearMail(string url, ClearMailMessageRequest request, string sessionID) { + _dialogueController.ClearMessages(sessionID, request); + return new ValueTask(_httpResponseUtil.EmptyArrayResponse()); } diff --git a/Libraries/SPTarkov.Server.Core/Controllers/DialogueController.cs b/Libraries/SPTarkov.Server.Core/Controllers/DialogueController.cs index ce17f4d6..6f8640b0 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/DialogueController.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/DialogueController.cs @@ -400,8 +400,7 @@ public class DialogueController( string sessionId) { var profile = _saveServer.GetProfile(sessionId); - var dialog = profile.DialogueRecords.GetValueOrDefault(dialogueId); - if (dialog is null) + if (!profile.DialogueRecords.ContainsKey(dialogueId)) { _logger.Error( _localisationService.GetText( @@ -652,4 +651,22 @@ public class DialogueController( profile.FriendProfileIds.RemoveAt(friendIndex); } } + + /// + /// Clear messages from a specified dialogue + /// + /// Session/Player id + /// Client request to clear messages + public void ClearMessages(string sessionId, ClearMailMessageRequest request) + { + var profile = _saveServer.GetProfile(sessionId); + if (!profile.DialogueRecords.TryGetValue(request.DialogId, out var dialogToClear)) + { + _logger.Warning($"unable to clear messages from dialog: {request.DialogId} as it cannot be found in profile: {sessionId}"); + + return; + } + + dialogToClear.Messages?.Clear(); + } } diff --git a/Libraries/SPTarkov.Server.Core/Routers/Static/DialogStaticRouter.cs b/Libraries/SPTarkov.Server.Core/Routers/Static/DialogStaticRouter.cs index 76d5efd2..d353ac04 100644 --- a/Libraries/SPTarkov.Server.Core/Routers/Static/DialogStaticRouter.cs +++ b/Libraries/SPTarkov.Server.Core/Routers/Static/DialogStaticRouter.cs @@ -118,7 +118,7 @@ public class DialogStaticRouter : StaticRouter typeof(SendMessageRequest) ), new RouteAction( - "client/mail/dialog/clear", + "/client/mail/dialog/clear", async ( url, info,