🐛 Fix chat notification and listing members

This commit is contained in:
2025-05-30 23:02:55 +08:00
parent 472221302d
commit a0cd779f85
3 changed files with 13 additions and 26 deletions

View File

@ -181,19 +181,12 @@ public class NotificationService
{
if (save)
{
// Create new notification objects for each account instead of reusing
var notifications = accounts.Select(x => new Notification
var notifications = accounts.Select(x =>
{
Topic = notification.Topic,
Title = notification.Title,
Subtitle = notification.Subtitle,
Content = notification.Content,
Meta = notification.Meta != null ? new Dictionary<string, object>(notification.Meta) : null,
Priority = notification.Priority,
Account = x,
AccountId = x.Id
notification.Account = x;
notification.AccountId = x.Id;
return notification;
}).ToList();
await _db.BulkInsertAsync(notifications);
}
@ -201,20 +194,12 @@ public class NotificationService
var subscribers = await _db.NotificationPushSubscriptions
.Where(s => accountsId.Contains(s.AccountId))
.ToListAsync();
var tasks = (from subscriber in subscribers
let notificationCopy = new Notification
{
Id = notification.Id,
Topic = notification.Topic,
Title = notification.Title,
Subtitle = notification.Subtitle,
Content = notification.Content,
Meta = notification.Meta != null ? new Dictionary<string, object>(notification.Meta) : null,
Priority = notification.Priority,
AccountId = subscriber.AccountId
}
select _PushSingleNotification(notificationCopy, subscriber)).ToList();
var tasks = new List<Task>();
foreach (var subscriber in subscribers)
{
notification.AccountId = subscriber.AccountId;
tasks.Add(_PushSingleNotification(notification, subscriber));
}
await Task.WhenAll(tasks);
}