From 7a79fd18f08a69f96ae5fbe74a6be3731ce7746b Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 20 May 2025 11:40:44 -0700 Subject: [PATCH 1/4] Bind the selected webhook and avoid clearing from database --- app/Livewire/SlackSettingsForm.php | 1 - .../livewire/slack-settings-form.blade.php | 20 +------------------ 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/app/Livewire/SlackSettingsForm.php b/app/Livewire/SlackSettingsForm.php index 8bc775a27a..694de89a82 100644 --- a/app/Livewire/SlackSettingsForm.php +++ b/app/Livewire/SlackSettingsForm.php @@ -191,7 +191,6 @@ class SlackSettingsForm extends Component $this->setting->webhook_endpoint = ''; $this->setting->webhook_channel = ''; $this->setting->webhook_botname = ''; - $this->setting->webhook_selected = ''; $this->setting->save(); diff --git a/resources/views/livewire/slack-settings-form.blade.php b/resources/views/livewire/slack-settings-form.blade.php index 849dfabdfa..abb776bcea 100644 --- a/resources/views/livewire/slack-settings-form.blade.php +++ b/resources/views/livewire/slack-settings-form.blade.php @@ -72,6 +72,7 @@ :options="['slack' => trans('admin/settings/general.slack'), 'general' => trans('admin/settings/general.general_webhook'),'google' => trans('admin/settings/general.google_workspaces'), 'microsoft' => trans('admin/settings/general.ms_teams')]" :selected="old('webhook_selected', $webhook_selected)" :disabled="Helper::isDemoMode()" + :for-livewire="true" data-minimum-results-for-search="-1" class="form-control" style="width:100%" @@ -174,22 +175,3 @@ - - - - -@section('moar_scripts') - -@endsection - - From d6b69c8cc22f1c0c22c3aa5a1c6b1089fd065e35 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 20 May 2025 12:00:58 -0700 Subject: [PATCH 2/4] Fix webhook selected value in mount method --- app/Livewire/SlackSettingsForm.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Livewire/SlackSettingsForm.php b/app/Livewire/SlackSettingsForm.php index 694de89a82..535a83413f 100644 --- a/app/Livewire/SlackSettingsForm.php +++ b/app/Livewire/SlackSettingsForm.php @@ -71,7 +71,7 @@ class SlackSettingsForm extends Component $this->setting = Setting::getSettings(); $this->save_button = trans('general.save'); - $this->webhook_selected = $this->setting->webhook_selected ?? 'slack'; + $this->webhook_selected = ($this->setting->webhook_selected !== '') ? $this->setting->webhook_selected : 'slack'; $this->webhook_name = $this->webhook_text[$this->setting->webhook_selected]["name"] ?? $this->webhook_text['slack']["name"]; $this->webhook_icon = $this->webhook_text[$this->setting->webhook_selected]["icon"] ?? $this->webhook_text['slack']["icon"]; $this->webhook_placeholder = $this->webhook_text[$this->setting->webhook_selected]["placeholder"] ?? $this->webhook_text['slack']["placeholder"]; From 13956254ce2fc23ad3ad0a139bef63132049024a Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 20 May 2025 12:27:19 -0700 Subject: [PATCH 3/4] Add migration to fix webhook settings --- ...17_repopulate_webhook_selected_setting.php | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 database/migrations/2025_05_20_190317_repopulate_webhook_selected_setting.php diff --git a/database/migrations/2025_05_20_190317_repopulate_webhook_selected_setting.php b/database/migrations/2025_05_20_190317_repopulate_webhook_selected_setting.php new file mode 100644 index 0000000000..e552bbe113 --- /dev/null +++ b/database/migrations/2025_05_20_190317_repopulate_webhook_selected_setting.php @@ -0,0 +1,39 @@ +first(); + + /** If webhook settings were cleared via the integration settings page, + * the webhook_selected was cleared as well when it should have reset to "slack". + */ + if ( + empty($settings->webhook_selected) && + (empty($settings->webhook_botname) && empty($settings->webhook_channel) && empty($settings->webhook_endpoint)) + ) { + DB::table('settings')->update(['webhook_selected' => 'slack']); + } + + /** If webhook settings were cleared via the integration settings page, + * then slack settings were re-added; then webhook_selected was not being set to "slack" as needed. + */ + if (str_contains($settings->webhook_endpoint, 'slack.com')) { + DB::table('settings')->update(['webhook_selected' => 'slack']); + } + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; From 5739393f8d0339e9783e85c8c6832d33236c4756 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 20 May 2025 12:45:23 -0700 Subject: [PATCH 4/4] Check to make sure settings exist before attempting to update them --- ...17_repopulate_webhook_selected_setting.php | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/database/migrations/2025_05_20_190317_repopulate_webhook_selected_setting.php b/database/migrations/2025_05_20_190317_repopulate_webhook_selected_setting.php index e552bbe113..be14ea04ea 100644 --- a/database/migrations/2025_05_20_190317_repopulate_webhook_selected_setting.php +++ b/database/migrations/2025_05_20_190317_repopulate_webhook_selected_setting.php @@ -11,21 +11,23 @@ return new class extends Migration { { $settings = DB::table('settings')->first(); - /** If webhook settings were cleared via the integration settings page, - * the webhook_selected was cleared as well when it should have reset to "slack". - */ - if ( - empty($settings->webhook_selected) && - (empty($settings->webhook_botname) && empty($settings->webhook_channel) && empty($settings->webhook_endpoint)) - ) { - DB::table('settings')->update(['webhook_selected' => 'slack']); - } + if ($settings) { + /** If webhook settings were cleared via the integration settings page, + * the webhook_selected was cleared as well when it should have reset to "slack". + */ + if ( + empty($settings->webhook_selected) && + (empty($settings->webhook_botname) && empty($settings->webhook_channel) && empty($settings->webhook_endpoint)) + ) { + DB::table('settings')->update(['webhook_selected' => 'slack']); + } - /** If webhook settings were cleared via the integration settings page, - * then slack settings were re-added; then webhook_selected was not being set to "slack" as needed. - */ - if (str_contains($settings->webhook_endpoint, 'slack.com')) { - DB::table('settings')->update(['webhook_selected' => 'slack']); + /** If webhook settings were cleared via the integration settings page, + * then slack settings were re-added; then webhook_selected was not being set to "slack" as needed. + */ + if (str_contains($settings->webhook_endpoint, 'slack.com')) { + DB::table('settings')->update(['webhook_selected' => 'slack']); + } } }