Disable chat deletion

This commit is contained in:
sevenhill
2026-07-06 22:46:55 +03:00
parent 52ae43c25d
commit 183ec8d90f
11 changed files with 95 additions and 253 deletions
+2 -24
View File
@@ -367,33 +367,11 @@ public sealed class AdminController(
}
[HttpDelete("api/chats/{id:guid}")]
public async Task<IActionResult> DeleteChat(Guid id, [FromQuery] string? pairingCode, CancellationToken cancellationToken)
public IActionResult DeleteChat(Guid id, [FromQuery] string? pairingCode)
{
if (!IsPairingCodeValid(pairingCode)) return Unauthorized();
var chat = await db.Chats
.Include(x => x.Messages)
.ThenInclude(x => x.Attachments)
.FirstOrDefaultAsync(x => x.Id == id, cancellationToken);
if (chat is null)
{
return NotFound();
}
var files = chat.Messages
.SelectMany(x => x.Attachments)
.Select(x => storage.GetPath(x.StorageFileName))
.Where(System.IO.File.Exists)
.ToArray();
db.Chats.Remove(chat);
await db.SaveChangesAsync(cancellationToken);
foreach (var file in files)
{
System.IO.File.Delete(file);
}
return NoContent();
return BadRequest("Chat deletion is disabled because MAX does not remove chats from the web client.");
}
private async Task<AdminStatusDto> BuildStatusAsync(CancellationToken cancellationToken)
+2 -25
View File
@@ -274,7 +274,7 @@ public sealed class ChatsController(
}
[HttpPost("delete")]
public async Task<IActionResult> DeleteChats(ChatBulkActionRequest request, CancellationToken cancellationToken)
public IActionResult DeleteChats(ChatBulkActionRequest request)
{
var chatIds = request.ChatIds.Distinct().ToArray();
if (chatIds.Length == 0)
@@ -282,30 +282,7 @@ public sealed class ChatsController(
return BadRequest("chatIds are required.");
}
var chats = await LoadChatsWithAttachmentsAsync(chatIds, cancellationToken);
if (chats.Count != chatIds.Length)
{
return NotFound();
}
var now = DateTimeOffset.UtcNow;
var files = AttachmentFiles(chats).ToArray();
foreach (var chat in chats)
{
db.Messages.RemoveRange(chat.Messages);
chat.DeletedAt ??= now;
chat.HistoryClearedAt = now;
chat.LastMessageAt = null;
chat.LastMessagePreview = null;
chat.UnreadCount = 0;
chat.UpdatedAt = now;
QueuePendingMaxAction(chat, ChatPendingMaxAction.DeleteChat, now);
}
await db.SaveChangesAsync(cancellationToken);
DeleteFiles(files);
await hubContext.Clients.All.SendAsync("ChatListInvalidated", cancellationToken);
return NoContent();
return BadRequest("Chat deletion is disabled because MAX does not remove chats from the web client.");
}
[HttpGet("{chatId:guid}/search")]