Notification improvements

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2021-05-12 18:30:02 +02:00
parent cb00f6f6b0
commit 7cb40bd9e2
No known key found for this signature in database
GPG Key ID: A061B9DDE0CA0773
2 changed files with 36 additions and 32 deletions

View File

@ -44,11 +44,6 @@ export async function subscribeUserToPush(): Promise<PushSubscription | null> {
return null;
}
export async function isSubscribed(): Promise<boolean> {
const registration = await navigator.serviceWorker.ready;
return (await registration.pushManager.getSubscription()) !== null;
}
export async function unsubscribeUserToPush(): Promise<string | undefined> {
console.log("performing unsubscribeUserToPush");
const registration = await navigator.serviceWorker.ready;

View File

@ -331,38 +331,46 @@ export default class Notifications extends Vue {
}
async subscribeToWebPush(): Promise<void> {
if (this.canShowWebPush()) {
const subscription = await subscribeUserToPush();
if (subscription) {
const subscriptionJSON = subscription?.toJSON();
console.log("subscription", subscriptionJSON);
const { data } = await this.$apollo.mutate({
mutation: REGISTER_PUSH_MUTATION,
variables: {
endpoint: subscriptionJSON.endpoint,
auth: subscriptionJSON?.keys?.auth,
p256dh: subscriptionJSON?.keys?.p256dh,
},
});
this.subscribed = true;
console.log(data);
try {
if (this.canShowWebPush()) {
const subscription = await subscribeUserToPush();
if (subscription) {
const subscriptionJSON = subscription?.toJSON();
console.log("subscription", subscriptionJSON);
const { data } = await this.$apollo.mutate({
mutation: REGISTER_PUSH_MUTATION,
variables: {
endpoint: subscriptionJSON.endpoint,
auth: subscriptionJSON?.keys?.auth,
p256dh: subscriptionJSON?.keys?.p256dh,
},
});
this.subscribed = true;
console.log(data);
}
} else {
console.log("can't do webpush");
}
} else {
console.log("can't do webpush");
} catch (e) {
console.error(e);
}
}
async unsubscribeToWebPush(): Promise<void> {
const endpoint = await unsubscribeUserToPush();
if (endpoint) {
const { data } = await this.$apollo.mutate({
mutation: UNREGISTER_PUSH_MUTATION,
variables: {
endpoint,
},
});
console.log(data);
this.subscribed = false;
try {
const endpoint = await unsubscribeUserToPush();
if (endpoint) {
const { data } = await this.$apollo.mutate({
mutation: UNREGISTER_PUSH_MUTATION,
variables: {
endpoint,
},
});
console.log(data);
this.subscribed = false;
}
} catch (e) {
console.error(e);
}
}
@ -375,6 +383,7 @@ export default class Notifications extends Vue {
}
private async isSubscribed(): Promise<boolean> {
if (!("serviceWorker" in navigator)) return Promise.resolve(false);
const registration = await navigator.serviceWorker.getRegistration();
return (await registration?.pushManager.getSubscription()) !== null;
}