🐛 Fix send notification api push notification twice
This commit is contained in:
@@ -147,20 +147,21 @@ public class NotificationController(
|
||||
[FromQuery] bool save = false
|
||||
)
|
||||
{
|
||||
await nty.SendNotificationBatch(
|
||||
new SnNotification
|
||||
{
|
||||
CreatedAt = SystemClock.Instance.GetCurrentInstant(),
|
||||
UpdatedAt = SystemClock.Instance.GetCurrentInstant(),
|
||||
Topic = request.Topic,
|
||||
Title = request.Title,
|
||||
Subtitle = request.Subtitle,
|
||||
Content = request.Content,
|
||||
Meta = request.Meta ?? [],
|
||||
},
|
||||
request.AccountId,
|
||||
save
|
||||
);
|
||||
var notification = new SnNotification
|
||||
{
|
||||
CreatedAt = SystemClock.Instance.GetCurrentInstant(),
|
||||
UpdatedAt = SystemClock.Instance.GetCurrentInstant(),
|
||||
Topic = request.Topic,
|
||||
Title = request.Title,
|
||||
Subtitle = request.Subtitle,
|
||||
Content = request.Content,
|
||||
};
|
||||
if (request.Meta != null)
|
||||
{
|
||||
notification.Meta = request.Meta;
|
||||
}
|
||||
|
||||
await nty.SendNotificationBatch(notification, request.AccountId, save);
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
@@ -251,18 +251,29 @@ public class PushService
|
||||
notification.Meta
|
||||
);
|
||||
|
||||
// WS first
|
||||
// Send to each account
|
||||
foreach (var account in accounts)
|
||||
{
|
||||
notification.AccountId = account;
|
||||
|
||||
// WebSocket
|
||||
WebSocketService.SendPacketToAccount(account, new WebSocketPacket
|
||||
{
|
||||
Type = "notifications.new",
|
||||
Data = notification
|
||||
});
|
||||
}
|
||||
|
||||
await DeliverPushNotification(notification);
|
||||
// Push notifications
|
||||
var subscriptions = await _db.PushSubscriptions
|
||||
.Where(s => s.AccountId == account)
|
||||
.ToListAsync();
|
||||
|
||||
if (subscriptions.Count > 0)
|
||||
{
|
||||
var tasks = subscriptions.Select(sub => SendPushNotificationAsync(sub, notification)).ToList();
|
||||
await Task.WhenAll(tasks);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SendPushNotificationAsync(SnNotificationPushSubscription subscription,
|
||||
|
||||
Reference in New Issue
Block a user