🐛 Fix message attachment did not marked
This commit is contained in:
		| @@ -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" | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user