From e04ee3de29c5e19c74b4780a6c93c4be9fcf6858 Mon Sep 17 00:00:00 2001 From: Timo Notheisen Date: Tue, 28 Jan 2025 13:17:49 +0100 Subject: [PATCH] chore: restore original order of members of PushService --- .../PushNotifications/PushService.cs | 100 +++++++++--------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs index 094058113d..563f80c875 100644 --- a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs +++ b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs @@ -15,11 +15,11 @@ namespace Backbone.Modules.Devices.Infrastructure.PushNotifications; public class PushService : IPushNotificationRegistrationService, IPushNotificationSender { - private readonly IIdentitiesRepository _identitiesRepository; + private readonly IPnsRegistrationsRepository _pnsRegistrationsRepository; private readonly ILogger _logger; - private readonly IPushNotificationTextProvider _notificationTextProvider; private readonly PnsConnectorFactory _pnsConnectorFactory; - private readonly IPnsRegistrationsRepository _pnsRegistrationsRepository; + private readonly IPushNotificationTextProvider _notificationTextProvider; + private readonly IIdentitiesRepository _identitiesRepository; public PushService(IPnsRegistrationsRepository pnsRegistrationsRepository, PnsConnectorFactory pnsConnectorFactory, ILogger logger, IPushNotificationTextProvider notificationTextProvider, IIdentitiesRepository identitiesRepository) @@ -31,48 +31,6 @@ public PushService(IPnsRegistrationsRepository pnsRegistrationsRepository, PnsCo _identitiesRepository = identitiesRepository; } - public async Task UpdateRegistration(IdentityAddress address, DeviceId deviceId, PnsHandle handle, string appId, PushEnvironment environment, - CancellationToken cancellationToken) - { - var registration = await _pnsRegistrationsRepository.FindByDeviceId(deviceId, cancellationToken, track: true); - var pnsConnector = _pnsConnectorFactory.CreateFor(handle.Platform); - - if (registration != null) - { - registration.Update(handle, appId, environment); - pnsConnector.ValidateRegistration(registration); - - await _pnsRegistrationsRepository.Update(registration, cancellationToken); - - _logger.LogTrace("Device successfully updated."); - } - else - { - registration = new PnsRegistration(address, deviceId, handle, appId, environment); - pnsConnector.ValidateRegistration(registration); - - try - { - await _pnsRegistrationsRepository.Add(registration, cancellationToken); - _logger.LogTrace("New device successfully registered."); - } - catch (InfrastructureException exception) when (exception.Code == InfrastructureErrors.UniqueKeyViolation().Code) - { - _logger.LogInformation(exception, "This exception can be ignored. It is only thrown in case of a concurrent registration request from multiple devices."); - } - } - - return registration.DevicePushIdentifier; - } - - public async Task DeleteRegistration(DeviceId deviceId, CancellationToken cancellationToken) - { - var numberOfDeletedDevices = await _pnsRegistrationsRepository.Delete([deviceId], cancellationToken); - - if (numberOfDeletedDevices == 1) - _logger.UnregisteredDevice(); - } - public async Task SendNotification(IPushNotification notification, SendPushNotificationFilter filter, CancellationToken cancellationToken) { var devices = await FindDevices(filter, cancellationToken); @@ -82,6 +40,11 @@ public async Task SendNotification(IPushNotification notification, SendPushNotif await SendNotificationInternal(notification, devices, notificationTexts, cancellationToken); } + private static List GetDistinctCommunicationLanguages(IEnumerable devices) + { + return devices.Select(d => d.CommunicationLanguage).Distinct().ToList(); + } + public async Task SendNotification(IPushNotification notification, SendPushNotificationFilter filter, Dictionary notificationTexts, CancellationToken cancellationToken) { var devices = await FindDevices(filter, cancellationToken); @@ -90,11 +53,6 @@ public async Task SendNotification(IPushNotification notification, SendPushNotif await SendNotificationInternal(notification, devices, mappedNotificationTexts, cancellationToken); } - private static List GetDistinctCommunicationLanguages(IEnumerable devices) - { - return devices.Select(d => d.CommunicationLanguage).Distinct().ToList(); - } - private async Task FindDevices(SendPushNotificationFilter filter, CancellationToken cancellationToken) { var result = await _identitiesRepository.FindDevices( @@ -161,6 +119,48 @@ private async Task HandleSendNotificationResponses(SendResults sendResults) _logger.LogTrace("Successfully sent push notifications."); } + public async Task UpdateRegistration(IdentityAddress address, DeviceId deviceId, PnsHandle handle, string appId, PushEnvironment environment, + CancellationToken cancellationToken) + { + var registration = await _pnsRegistrationsRepository.FindByDeviceId(deviceId, cancellationToken, track: true); + var pnsConnector = _pnsConnectorFactory.CreateFor(handle.Platform); + + if (registration != null) + { + registration.Update(handle, appId, environment); + pnsConnector.ValidateRegistration(registration); + + await _pnsRegistrationsRepository.Update(registration, cancellationToken); + + _logger.LogTrace("Device successfully updated."); + } + else + { + registration = new PnsRegistration(address, deviceId, handle, appId, environment); + pnsConnector.ValidateRegistration(registration); + + try + { + await _pnsRegistrationsRepository.Add(registration, cancellationToken); + _logger.LogTrace("New device successfully registered."); + } + catch (InfrastructureException exception) when (exception.Code == InfrastructureErrors.UniqueKeyViolation().Code) + { + _logger.LogInformation(exception, "This exception can be ignored. It is only thrown in case of a concurrent registration request from multiple devices."); + } + } + + return registration.DevicePushIdentifier; + } + + public async Task DeleteRegistration(DeviceId deviceId, CancellationToken cancellationToken) + { + var numberOfDeletedDevices = await _pnsRegistrationsRepository.Delete([deviceId], cancellationToken); + + if (numberOfDeletedDevices == 1) + _logger.UnregisteredDevice(); + } + public class DeviceWithOnlyIdAndCommunicationLanguage { public required DeviceId Id { get; init; }