using CommunityToolkit.Mvvm.Messaging; using salesbook.Shared.Core.Entity; using salesbook.Shared.Core.Interface.IntegryApi; using salesbook.Shared.Core.Messages.Notification; using Shiny.Push; 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 pushNotification = new WtbNotification { Title = notification.Notification.Title, Body = notification.Notification.Message }; 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; } }