generated from Integry/Template_NetMauiBlazorHybrid
63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using CommunityToolkit.Mvvm.Messaging;
|
|
using salesbook.Shared.Core.Dto;
|
|
using salesbook.Shared.Core.Entity;
|
|
using salesbook.Shared.Core.Helpers;
|
|
using salesbook.Shared.Core.Interface.IntegryApi;
|
|
using salesbook.Shared.Core.Messages.Notification.NewPush;
|
|
using Shiny.Push;
|
|
using System.Text.Json;
|
|
|
|
namespace salesbook.Maui.Core.System.Notification.Push;
|
|
|
|
public class PushNotificationDelegate(
|
|
IIntegryRegisterNotificationRestClient integryRegisterNotificationRestClient,
|
|
IMessenger messenger
|
|
) : IPushDelegate
|
|
{
|
|
public Task OnEntry(PushNotification notification)
|
|
{
|
|
// fires when the user taps on a push notification
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public Task OnReceived(PushNotification notification)
|
|
{
|
|
if (notification.Notification is null) return Task.CompletedTask;
|
|
var data = notification.Data;
|
|
|
|
NotificationDataDTO? notificationDataDto = null;
|
|
|
|
if (!data.IsNullOrEmpty())
|
|
{
|
|
var json = JsonSerializer.Serialize(data);
|
|
notificationDataDto = JsonSerializer.Deserialize<NotificationDataDTO>(json);
|
|
}
|
|
|
|
if (notificationDataDto?.NotificationId == null) return Task.CompletedTask;
|
|
var notificationId = long.Parse(notificationDataDto.NotificationId);
|
|
|
|
var pushNotification = new WtbNotification
|
|
{
|
|
Id = notificationId,
|
|
Title = notification.Notification.Title,
|
|
Body = notification.Notification.Message,
|
|
NotificationData = notificationDataDto
|
|
};
|
|
|
|
messenger.Send(new NewPushNotificationMessage(pushNotification));
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public Task OnNewToken(string token)
|
|
{
|
|
integryRegisterNotificationRestClient.Register(token);
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public Task OnUnRegistered(string token)
|
|
{
|
|
// fires when a push notification change is set by the operating system or provider
|
|
return Task.CompletedTask;
|
|
}
|
|
} |