From fb73f74ebc6080c9d8fe53dffadfe4e0cd2c328a Mon Sep 17 00:00:00 2001 From: data-miner00 Date: Sat, 20 Apr 2024 11:53:12 +0800 Subject: [PATCH] feat: Delete message --- src/Linker.Mvc/Hubs/ChatHub.cs | 15 ++++++++ src/Linker.Mvc/Views/Workspace/Details.cshtml | 38 ++++++++++++++----- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/Linker.Mvc/Hubs/ChatHub.cs b/src/Linker.Mvc/Hubs/ChatHub.cs index f3af6b3..b27943d 100644 --- a/src/Linker.Mvc/Hubs/ChatHub.cs +++ b/src/Linker.Mvc/Hubs/ChatHub.cs @@ -83,6 +83,21 @@ public Task EditMessage(EditChatMessage edit) return Task.WhenAll(tasks); } + public Task DeleteMessage(string workspaceId, string chatId) + { + if (!this.connectionManager.Connections.TryGetValue(this.Context.ConnectionId, out var connection)) + { + return Task.CompletedTask; + } + + IEnumerable tasks = [ + this.repository.SoftDeleteChatMessageAsync(chatId, default), + this.Clients.Group(workspaceId).SendAsync("DeleteMessage", chatId), + ]; + + return Task.WhenAll(tasks); + } + private void KeepConnection(ChatConnection connection) { this.connectionManager.Connections[this.Context.ConnectionId] = connection; diff --git a/src/Linker.Mvc/Views/Workspace/Details.cshtml b/src/Linker.Mvc/Views/Workspace/Details.cshtml index fb35f2b..bf5e058 100644 --- a/src/Linker.Mvc/Views/Workspace/Details.cshtml +++ b/src/Linker.Mvc/Views/Workspace/Details.cshtml @@ -165,15 +165,25 @@

@username - @message.CreatedAt

-
- - -
+ @if (!message.IsDeleted) + { +
+ + +
+ }
-

@message.Message

- + @if (!message.IsDeleted) + { +

@message.Message

+ + } + else + { +

The message has been deleted.

+ }
} @@ -239,7 +249,7 @@

${usr} - ${msg.createdAt}

- +

${msg.message}

@@ -256,6 +266,10 @@ console.log(msg); }); + connection.on("DeleteMessage", (chatId) => { + $(`#p-${chatId}`).text("The message has been deleted.").addClass("italic"); + }) + connection.start().then(() => { connection.invoke("JoinSpecificChatRoom", { username: "@User.FindFirstValue(ClaimTypes.Name)", @@ -330,5 +344,11 @@ function openAllLinksInNewTab(links) { links.forEach((link) => window.open(link, "_blank")); } + + function deleteChat(chatId) { + connection + .invoke("DeleteMessage", "@Model.WorkspaceId", chatId) + .catch(console.error); + } }