Remove webPushEndpoint from indexeddb

Rely directly on getting it from the browser
This commit is contained in:
nimbleghost
2023-05-31 21:08:46 +02:00
parent 7aa3d8f59b
commit 4944e3ae4b
3 changed files with 28 additions and 32 deletions

View File

@@ -68,16 +68,12 @@ class SubscriptionManager {
async add(baseUrl, topic, opts = {}) {
const id = topicUrl(baseUrl, topic);
const webPushFields = opts.notificationType === "background" ? await notifier.subscribeWebPush(baseUrl, topic) : {};
if (opts.notificationType === "background") {
await notifier.subscribeWebPush(baseUrl, topic);
}
const existingSubscription = await this.get(id);
if (existingSubscription) {
if (webPushFields.endpoint) {
await this.db.subscriptions.update(existingSubscription.id, {
webPushEndpoint: webPushFields.endpoint,
});
}
return existingSubscription;
}
@@ -88,7 +84,6 @@ class SubscriptionManager {
mutedUntil: 0,
last: null,
...opts,
webPushEndpoint: webPushFields.endpoint,
};
await this.db.subscriptions.put(subscription);
@@ -139,7 +134,7 @@ class SubscriptionManager {
await this.db.subscriptions.delete(subscription.id);
await this.db.notifications.where({ subscriptionId: subscription.id }).delete();
if (subscription.webPushEndpoint) {
if (subscription.notificationType === NotificationType.BACKGROUND) {
await notifier.unsubscribeWebPush(subscription);
}
}
@@ -240,10 +235,7 @@ class SubscriptionManager {
if (mutedUntil === 1) {
await notifier.unsubscribeWebPush(subscription);
} else {
const webPushFields = await notifier.subscribeWebPush(subscription.baseUrl, subscription.topic);
await this.db.subscriptions.update(subscriptionId, {
webPushEndpoint: webPushFields.endpoint,
});
await notifier.subscribeWebPush(subscription.baseUrl, subscription.topic);
}
}
}
@@ -261,19 +253,14 @@ class SubscriptionManager {
return;
}
let { webPushEndpoint } = subscription;
if (oldNotificationType === "background") {
await notifier.unsubscribeWebPush(subscription);
webPushEndpoint = undefined;
} else if (newNotificationType === "background") {
const webPushFields = await notifier.subscribeWebPush(subscription.baseUrl, subscription.topic);
webPushEndpoint = webPushFields.webPushEndpoint;
await notifier.subscribeWebPush(subscription.baseUrl, subscription.topic);
}
await this.db.subscriptions.update(subscription.id, {
notificationType: newNotificationType,
webPushEndpoint,
});
}