From b1fcb49e7cc406dddc3e36e26fbdf942362e68f1 Mon Sep 17 00:00:00 2001 From: Jose Olarte III Date: Thu, 18 Sep 2025 21:42:15 +0800 Subject: [PATCH] fix: initialize notification helpers in lifecycle methods - Fix 't is not a function' error during image upload by properly initializing notification helpers - Move notification helper initialization from class-level to lifecycle methods (created/mounted) - Affected components: ImageMethodDialog, SeedBackupView, QuickActionBvcBeginView, HelpNotificationsView - Ensures $notify is available when createNotifyHelpers() is called - Resolves notification errors in image upload functionality --- src/components/ImageMethodDialog.vue | 5 ++++- src/views/HelpNotificationsView.vue | 5 ++++- src/views/QuickActionBvcBeginView.vue | 5 ++++- src/views/SeedBackupView.vue | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/components/ImageMethodDialog.vue b/src/components/ImageMethodDialog.vue index 5cb99094..74c822a8 100644 --- a/src/components/ImageMethodDialog.vue +++ b/src/components/ImageMethodDialog.vue @@ -293,7 +293,7 @@ const inputImageFileNameRef = ref(); export default class ImageMethodDialog extends Vue { $notify!: NotifyFunction; $router!: Router; - notify = createNotifyHelpers(this.$notify); + notify!: ReturnType; /** Active DID for user authentication */ activeDid = ""; @@ -498,6 +498,9 @@ export default class ImageMethodDialog extends Vue { * @throws {Error} When settings retrieval fails */ async mounted() { + // Initialize notification helpers + this.notify = createNotifyHelpers(this.$notify); + try { // Get activeDid from active_identity table (single source of truth) // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/src/views/HelpNotificationsView.vue b/src/views/HelpNotificationsView.vue index 81f45f1f..e768c870 100644 --- a/src/views/HelpNotificationsView.vue +++ b/src/views/HelpNotificationsView.vue @@ -394,7 +394,7 @@ export default class HelpNotificationsView extends Vue { notifyingReminderTime = ""; // Notification helper system - notify = createNotifyHelpers(this.$notify); + notify!: ReturnType; /** * Computed property for consistent button styling @@ -430,6 +430,9 @@ export default class HelpNotificationsView extends Vue { * Handles errors gracefully with proper logging without exposing sensitive data. */ async mounted() { + // Initialize notification helpers + this.notify = createNotifyHelpers(this.$notify); + try { const registration = await navigator.serviceWorker?.ready; const fullSub = await registration?.pushManager.getSubscription(); diff --git a/src/views/QuickActionBvcBeginView.vue b/src/views/QuickActionBvcBeginView.vue index 4293cc1c..578f33fb 100644 --- a/src/views/QuickActionBvcBeginView.vue +++ b/src/views/QuickActionBvcBeginView.vue @@ -99,7 +99,7 @@ export default class QuickActionBvcBeginView extends Vue { $router!: Router; // Notification helper system - private notify = createNotifyHelpers(this.$notify); + private notify!: ReturnType; attended = true; gaveTime = true; @@ -111,6 +111,9 @@ export default class QuickActionBvcBeginView extends Vue { * Uses America/Denver timezone for Bountiful location */ async mounted() { + // Initialize notification helpers + this.notify = createNotifyHelpers(this.$notify); + logger.debug( "[QuickActionBvcBeginView] Mounted - calculating meeting date", ); diff --git a/src/views/SeedBackupView.vue b/src/views/SeedBackupView.vue index 8fb4e0a6..bdbe3545 100644 --- a/src/views/SeedBackupView.vue +++ b/src/views/SeedBackupView.vue @@ -162,7 +162,7 @@ export default class SeedBackupView extends Vue { showSeed = false; // Notification helper system - notify = createNotifyHelpers(this.$notify); + notify!: ReturnType; /** * Computed property for consistent copy feedback styling @@ -204,6 +204,9 @@ export default class SeedBackupView extends Vue { * Handles errors gracefully with user notifications. */ async created() { + // Initialize notification helpers + this.notify = createNotifyHelpers(this.$notify); + try { let activeDid = "";