🐛 Fix message attachment did not marked

This commit is contained in:
LittleSheep 2025-05-18 12:53:32 +08:00
parent b40282e43a
commit 4e794ceb9b
3 changed files with 11 additions and 2 deletions

View File

@ -1,11 +1,12 @@
using DysonNetwork.Sphere.Account;
using DysonNetwork.Sphere.Connection;
using DysonNetwork.Sphere.Storage;
using Microsoft.EntityFrameworkCore;
using NodaTime;
namespace DysonNetwork.Sphere.Chat;
public class ChatService(AppDatabase db, IServiceScopeFactory scopeFactory)
public class ChatService(AppDatabase db, FileService fs, IServiceScopeFactory scopeFactory)
{
public async Task<Message> SendMessageAsync(Message message, ChatMember sender, ChatRoom room)
{
@ -16,6 +17,9 @@ public class ChatService(AppDatabase db, IServiceScopeFactory scopeFactory)
db.ChatMessages.Add(message);
await db.SaveChangesAsync();
var files = message.Attachments.Distinct().ToList();
if (files.Count != 0) await fs.MarkUsageRangeAsync(files, 1);
// Then start the delivery process
// Using ConfigureAwait(false) is correct here since we don't need context to flow
_ = Task.Run(() => DeliverMessageAsync(message, sender, room))

View File

@ -10,10 +10,12 @@ public class MessageReadReceiptFlushHandler(IServiceProvider serviceProvider) :
{
public async Task FlushAsync(IReadOnlyList<MessageReadReceipt> items)
{
var distinctItems = items.DistinctBy(x => new { x.MessageId, x.SenderId }).ToList();
using var scope = serviceProvider.CreateScope();
var db = scope.ServiceProvider.GetRequiredService<AppDatabase>();
await db.BulkInsertAsync(items);
await db.BulkInsertAsync(distinctItems);
}
}

View File

@ -73,6 +73,9 @@
"FromName": "Alphabot",
"SubjectPrefix": "Solar Network"
},
"RealtimeChat": {
"Provider": "cloudflare"
},
"GeoIp": {
"DatabasePath": "./Keys/GeoLite2-City.mmdb"
}