🐛 Fix message attachment did not marked
This commit is contained in:
parent
b40282e43a
commit
4e794ceb9b
@ -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))
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,6 +73,9 @@
|
||||
"FromName": "Alphabot",
|
||||
"SubjectPrefix": "Solar Network"
|
||||
},
|
||||
"RealtimeChat": {
|
||||
"Provider": "cloudflare"
|
||||
},
|
||||
"GeoIp": {
|
||||
"DatabasePath": "./Keys/GeoLite2-City.mmdb"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user