🐛 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.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))
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user