From ea471aa6a99673f851278f4a9b59beeeb6d4bece Mon Sep 17 00:00:00 2001 From: "Joseph.Rawlings" Date: Wed, 3 Dec 2025 22:31:30 -0500 Subject: [PATCH] fix: add table existence checks in Onboarding components to prevent errors and improve modal behavior --- .../Onboarding/Livewire/Onboarding/Modal.php | 20 +++++++++++++++---- extensions/Others/Onboarding/Onboarding.php | 8 +++++++- .../resources/views/modal.blade.php | 9 +++++---- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/extensions/Others/Onboarding/Livewire/Onboarding/Modal.php b/extensions/Others/Onboarding/Livewire/Onboarding/Modal.php index c37511875..053dabbfc 100644 --- a/extensions/Others/Onboarding/Livewire/Onboarding/Modal.php +++ b/extensions/Others/Onboarding/Livewire/Onboarding/Modal.php @@ -6,6 +6,7 @@ use Livewire\Component; use Paymenter\Extensions\Others\Onboarding\Models\OnboardingSlide; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\Schema; use App\Helpers\ExtensionHelper; class Modal extends Component @@ -16,6 +17,12 @@ class Modal extends Component public function mount() { + // Guard: ensure table exists before querying + if (!Schema::hasTable('ext_onboarding_slides')) { + $this->showModal = false; + return; + } + // Check if test mode and per session mode are enabled $extension = ExtensionHelper::getExtension('other', 'Onboarding'); $testMode = $extension->config('test_mode', false); @@ -35,10 +42,15 @@ class Modal extends Component } // Only show if user hasn't seen it and there are slides - $this->slides = OnboardingSlide::where('enabled', true) - ->orderBy('sort', 'asc') - ->get() - ->toArray(); + try { + $this->slides = OnboardingSlide::where('enabled', true) + ->orderBy('sort', 'asc') + ->get() + ->toArray(); + } catch (\Exception $e) { + // If query fails (e.g., missing columns), don't show modal + $this->slides = []; + } $this->showModal = !$hasSeenOnboarding && count($this->slides) > 0 && $this->currentSlide < count($this->slides); } diff --git a/extensions/Others/Onboarding/Onboarding.php b/extensions/Others/Onboarding/Onboarding.php index fc6bbad62..7c2d0f73d 100644 --- a/extensions/Others/Onboarding/Onboarding.php +++ b/extensions/Others/Onboarding/Onboarding.php @@ -4,6 +4,7 @@ namespace Paymenter\Extensions\Others\Onboarding; use App\Classes\Extension\Extension; use App\Helpers\ExtensionHelper; +use Illuminate\Support\Facades\Schema; class Onboarding extends Extension { @@ -84,6 +85,11 @@ class Onboarding extends Extension }); + // Only register body hook if the table exists + if (!Schema::hasTable('ext_onboarding_slides')) { + return; + } + \Illuminate\Support\Facades\Event::listen('body', function () { if (!request()->is('admin/*') && @@ -96,7 +102,7 @@ class Onboarding extends Extension !request()->is('/') && \Illuminate\Support\Facades\Auth::check()) { return [ - 'view' => view('onboarding::widget'), + 'view' => view('onboarding::widget')->render(), ]; } }); diff --git a/extensions/Others/Onboarding/resources/views/modal.blade.php b/extensions/Others/Onboarding/resources/views/modal.blade.php index 25e3c82f3..9d96d1e0e 100644 --- a/extensions/Others/Onboarding/resources/views/modal.blade.php +++ b/extensions/Others/Onboarding/resources/views/modal.blade.php @@ -11,22 +11,23 @@ document.documentElement.style.overflow = ''; } })" - class="fixed inset-0 z-50 flex items-center justify-center overflow-hidden"> + class="fixed inset-0 z-50 flex items-center justify-center overflow-hidden pointer-events-none"> @if($this->showBackdrop) -
+ x-transition:leave-end="opacity-0" + wire:click="finish"> @endif -