From 3e2723b744c71313cef0bdd2e041da08742b2ca5 Mon Sep 17 00:00:00 2001 From: Matthew Raymer Date: Thu, 7 Dec 2023 04:20:41 -0500 Subject: [PATCH] Added auto-control on notification toggle -- be sure to empty browser cache in Storage to assure latest scripts are executing --- src/views/AccountViewView.vue | 36 +++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/views/AccountViewView.vue b/src/views/AccountViewView.vue index 7f1fa52..a121ef2 100644 --- a/src/views/AccountViewView.vue +++ b/src/views/AccountViewView.vue @@ -105,7 +105,12 @@
- +
@@ -136,6 +141,7 @@ type="checkbox" name="toggleMuteNotifications" class="sr-only" + disabled />
@@ -404,6 +410,16 @@ export default class AccountViewView extends Vue { showAdvanced = false; + private isSubscribed = false; + + get toggleNotifications() { + return this.isSubscribed; + } + + set toggleNotifications(value) { + this.isSubscribed = value; + } + public async getIdentity(activeDid: string): Promise { try { // Open the accounts database @@ -486,6 +502,7 @@ export default class AccountViewView extends Vue { * @throws Will display specific messages to the user based on different errors. */ async created() { + console.error("created"); try { await db.open(); @@ -504,6 +521,18 @@ export default class AccountViewView extends Vue { } } + async mounted() { + console.error("mounted()"); + try { + const registration = await navigator.serviceWorker.ready; + const subscription = await registration.pushManager.getSubscription(); + this.toggleNotifications = !!subscription; + } catch (error) { + console.error(error); + this.toggleNotifications = false; + } + } + /** * Initializes component state with values from the database or defaults. * @param {SettingsType} settings - Object containing settings from the database. @@ -711,7 +740,7 @@ export default class AccountViewView extends Vue { }); this.isRegistered = true; } catch (err) { - console.log("Got an error updating settings:", err); + console.error("Got an error updating settings:", err); this.$notify( { group: "alert", @@ -753,10 +782,9 @@ export default class AccountViewView extends Vue { const data = error.response?.data as ErrorResponse; this.limitsMessage = (data?.error?.message as string) || "Bad server response."; - console.log( + console.error( "Got bad response retrieving limits, which usually means user isn't registered. Server says:", this.limitsMessage, - //error, ); } else if ( error instanceof Error &&