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,6 +331,7 @@ export default class Notifications extends Vue {
}
async subscribeToWebPush(): Promise<void> {
try {
if (this.canShowWebPush()) {
const subscription = await subscribeUserToPush();
if (subscription) {
@ -350,9 +351,13 @@ export default class Notifications extends Vue {
} else {
console.log("can't do webpush");
}
} catch (e) {
console.error(e);
}
}
async unsubscribeToWebPush(): Promise<void> {
try {
const endpoint = await unsubscribeUserToPush();
if (endpoint) {
const { data } = await this.$apollo.mutate({
@ -364,6 +369,9 @@ export default class Notifications extends Vue {
console.log(data);
this.subscribed = false;
}
} catch (e) {
console.error(e);
}
}
canShowWebPush(): boolean {
@ -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;
}