🐛 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.Account;
using DysonNetwork.Sphere.Connection; using DysonNetwork.Sphere.Connection;
using DysonNetwork.Sphere.Storage;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using NodaTime; using NodaTime;
namespace DysonNetwork.Sphere.Chat; 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) 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); db.ChatMessages.Add(message);
await db.SaveChangesAsync(); await db.SaveChangesAsync();
var files = message.Attachments.Distinct().ToList();
if (files.Count != 0) await fs.MarkUsageRangeAsync(files, 1);
// Then start the delivery process // Then start the delivery process
// Using ConfigureAwait(false) is correct here since we don't need context to flow // Using ConfigureAwait(false) is correct here since we don't need context to flow
_ = Task.Run(() => DeliverMessageAsync(message, sender, room)) _ = Task.Run(() => DeliverMessageAsync(message, sender, room))

View File

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

View File

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