diff --git a/src/App.vue b/src/App.vue index 585cdcc..3de93c5 100644 --- a/src/App.vue +++ b/src/App.vue @@ -426,16 +426,13 @@ export default class App extends Vue { this.subscribeToPush() .then(() => { console.log("Subscribed successfully."); - // Assuming the subscription object is available return navigator.serviceWorker.ready; }) .then((registration) => { - // Fetch the existing subscription object from the registration return registration.pushManager.getSubscription(); }) .then((subscription) => { if (subscription) { - console.log(subscription); return this.sendSubscriptionToServer(subscription); } else { throw new Error("Subscription object is not available."); @@ -449,15 +446,16 @@ export default class App extends Vue { "Subscription or server communication failed:", error, ); + alert( "Subscription or server communication failed. Try again in a while." ); }); }) .catch((error) => { console.error("An error occurred:", error); - // Handle error appropriately here + alert( "Some error occurred." + error ); }); } - // Function to convert URL base64 to Uint8Array + private urlBase64ToUint8Array(base64String: string): Uint8Array { const padding = "=".repeat((4 - (base64String.length % 4)) % 4); const base64 = (base64String + padding) diff --git a/src/views/AccountViewView.vue b/src/views/AccountViewView.vue index e07f9f4..4c4c2df 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 />
@@ -451,6 +457,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 @@ -533,6 +549,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(); @@ -551,6 +568,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. @@ -760,7 +789,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", @@ -802,10 +831,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 &&