push was updated

This commit is contained in:
Artemy
2026-03-07 21:36:27 +07:00
parent 08270e0350
commit bc95cb5331
5 changed files with 29 additions and 10 deletions
@@ -54,8 +54,18 @@ public class ChatNotificationService : IChatNotificationService
var profile = await _profileService.GetUserProfileAsync(message.SenderId);
var title = profile.Username;
Dictionary<string, string> data = new Dictionary<string, string>();
await _notificationService.SendToUserAsync(userId, title,text, "chat_messages");
data["chatId"] = message.RecipientId.ToString();
data["isGroup"] = message.RecipientType == RecipientType.Group ? "true" : "false";
await _notificationService.SendToUserAsync(
userId,
title,
text,
"chat_messages",
$"private_chat_{message.RecipientId}",
data);
}
public async Task NotifyMessageRemovedAsync(MessageRemovedResponse response)
@@ -2,9 +2,9 @@ namespace Govor.Application.Interfaces.PushNotifications;
public interface IPushNotificationService
{
Task SendToUserAsync(Guid userId, string title, string body, string channelId, Dictionary<string, string>? data = null);
Task SendToUserAsync(Guid userId, string title, string body, string channelId, string tag = "", Dictionary<string, string>? data = null);
Task SendToUsersAsync(IEnumerable<Guid> userIds, string title, string body, string channelId, Dictionary<string, string>? data = null);
Task SendToUsersAsync(IEnumerable<Guid> userIds, string title, string body, string channelId, string tag = "", Dictionary<string, string>? data = null);
Task SendToSessionAsync(Guid sessionId, string title, string body, string channelId, Dictionary<string, string>? data = null);
Task SendToSessionAsync(Guid sessionId, string title, string body, string channelId, string tag = "", Dictionary<string, string>? data = null);
}
@@ -4,6 +4,7 @@ public class PushMessage
{
public string Title { get; set; } = string.Empty;
public string Body { get; set; } = string.Empty;
public string Tag { get; set; } = string.Empty;
public Dictionary<string, string> Data { get; set; } = new();
public string? ChannelId { get; set; } = "chat_messages"; //for Android
}
@@ -47,7 +47,8 @@ public class FirebasePushProvider : IPushNotificationProvider
Priority = Priority.High,
Notification = new AndroidNotification
{
ChannelId = message.ChannelId ?? "chat_messages"
ChannelId = message.ChannelId ?? "chat_messages",
Tag = message.Tag,
}
} : null
};
@@ -96,7 +97,11 @@ public class FirebasePushProvider : IPushNotificationProvider
msg.Android = new AndroidConfig
{
Priority = Priority.High,
Notification = new AndroidNotification { ChannelId = pm.ChannelId }
Notification = new AndroidNotification
{
ChannelId = pm.ChannelId,
Tag = pm.Tag,
}
};
}
@@ -22,7 +22,7 @@ public class PushNotificationService : IPushNotificationService
_logger = logger;
}
public async Task SendToUserAsync(Guid userId, string title, string body, string channelId, Dictionary<string, string>? data = null)
public async Task SendToUserAsync(Guid userId, string title, string body, string channelId, string tag = "", Dictionary<string, string>? data = null)
{
var tokens = await _tokenRepo.GetActiveTokensAsync(userId);
if (tokens.Count == 0)
@@ -36,6 +36,7 @@ public class PushNotificationService : IPushNotificationService
Title = title,
Body = body,
Data = data ?? new(),
Tag = tag,
ChannelId = channelId
};
@@ -48,7 +49,7 @@ public class PushNotificationService : IPushNotificationService
}
}
public async Task SendToUsersAsync(IEnumerable<Guid> userIds, string title, string body, string channelId, Dictionary<string, string>? data = null)
public async Task SendToUsersAsync(IEnumerable<Guid> userIds, string title, string body, string channelId, string tag = "", Dictionary<string, string>? data = null)
{
if (userIds is null)
throw new ArgumentNullException(nameof(userIds));
@@ -62,6 +63,7 @@ public class PushNotificationService : IPushNotificationService
Title = title,
Body = body,
Data = data ?? new(),
Tag = tag,
ChannelId = channelId
});
@@ -72,7 +74,7 @@ public class PushNotificationService : IPushNotificationService
}
}
public async Task SendToSessionAsync(Guid sessionId, string title, string body, string channelId, Dictionary<string, string>? data = null)
public async Task SendToSessionAsync(Guid sessionId, string title, string body, string channelId, string tag = "", Dictionary<string, string>? data = null)
{
var token = await _tokenRepo.GetActiveTokenBySessionAsync(sessionId);
if(string.IsNullOrEmpty(token))
@@ -83,6 +85,7 @@ public class PushNotificationService : IPushNotificationService
Title = title,
Body = body,
Data = data ?? new(),
Tag = tag,
ChannelId = channelId
});