public async Task <PushSubscription> Store([FromBody] PushSubscription subscription) { subscription.CreateDate = DateTimeOffset.UtcNow; subscription.AppUserId = GetUserId(); await DbSession.StoreAsync(subscription, PushSubscription.GetRavenIdFromEndpoint(subscription.Endpoint)); using (logger.BeginKeyValueScope("subscription", subscription)) { logger.LogInformation("New push notification subscriber"); } // Tell the user he's subscribed. var notification = new PushNotification { Title = "You're subscribed 😎", Body = "You'll be notified of new Chavah music, features, news and more.", ClickUrl = "https://blog.messianicradio.com/2019/01/new-feature-alert-me-of-new-music-on.html" }; pushSender.QueueSendNotification(notification, new List <PushSubscription>(1) { subscription }); return(subscription); }
public async Task <PushSubscription?> Delete([FromBody] PushSubscription subscription) { // The supplied PushSubscription is from the browser's PushSubscription type. // Thus, it has no ID. We generate an ID from the subscription's unique endpoint. Use that to delete it. var subscriptionId = PushSubscription.GetRavenIdFromEndpoint(subscription.Endpoint); var existingSub = await DbSession.LoadOptionalAsync <PushSubscription>(subscriptionId); if (existingSub != null) { DbSession.Delete(existingSub); using (logger.BeginKeyValueScope("subscription", subscription)) { logger.LogInformation("Deleted push subscription"); } return(existingSub); } logger.LogWarning("Attempted to deleted push subscription {id}, but no such subscription was found", subscriptionId); return(null); }