From 5a82395bb7c7c9869767d650b4bb38063164900f Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 7 Aug 2024 11:55:16 +0200 Subject: [PATCH] feat: Update auto update and update check frequencies in settings --- app/Console/Kernel.php | 4 +- app/Livewire/Settings/Index.php | 49 ++++------------ ...5_142659_add_update_frequency_settings.php | 4 +- .../views/livewire/settings/index.blade.php | 58 ++++++++++--------- 4 files changed, 44 insertions(+), 71 deletions(-) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index bdf1ab042..e8f213b16 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -76,11 +76,11 @@ class Kernel extends ConsoleKernel { $settings = InstanceSettings::get(); - $updateCheckFrequency = $settings->update_check_frequency ?? '0 0 * * *'; + $updateCheckFrequency = $settings->update_check_frequency; $schedule->job(new CheckForUpdatesJob)->cron($updateCheckFrequency)->onOneServer(); if ($settings->is_auto_update_enabled) { - $autoUpdateFrequency = $settings->auto_update_frequency ?? '0 11,23 * * *'; + $autoUpdateFrequency = $settings->auto_update_frequency; $schedule->job(new UpdateCoolifyJob)->cron($autoUpdateFrequency)->onOneServer(); } } diff --git a/app/Livewire/Settings/Index.php b/app/Livewire/Settings/Index.php index b1df8679e..f593fb78b 100644 --- a/app/Livewire/Settings/Index.php +++ b/app/Livewire/Settings/Index.php @@ -5,7 +5,6 @@ namespace App\Livewire\Settings; use App\Jobs\CheckForUpdatesJob; use App\Models\InstanceSettings; use App\Models\Server; -use Cron\CronExpression; use Livewire\Component; class Index extends Component @@ -39,8 +38,8 @@ class Index extends Component 'settings.instance_name' => 'nullable', 'settings.allowed_ips' => 'nullable', 'settings.is_auto_update_enabled' => 'boolean', - 'auto_update_frequency' => 'nullable|string', - 'update_check_frequency' => 'nullable|string', + 'auto_update_frequency' => 'string', + 'update_check_frequency' => 'string', ]; protected $validationAttributes = [ @@ -97,14 +96,20 @@ class Index extends Component } $this->validate(); - if ($this->is_auto_update_enabled && ! $this->validateCronExpression($this->auto_update_frequency)) { + if ($this->is_auto_update_enabled && ! validate_cron_expression($this->auto_update_frequency)) { $this->dispatch('error', 'Invalid Cron / Human expression for Auto Update Frequency.'); + if (empty($this->auto_update_frequency)) { + $this->auto_update_frequency = '0 0 * * *'; + } return; } - if (! $this->validateCronExpression($this->update_check_frequency)) { + if (! validate_cron_expression($this->update_check_frequency)) { $this->dispatch('error', 'Invalid Cron / Human expression for Update Check Frequency.'); + if (empty($this->update_check_frequency)) { + $this->update_check_frequency = '0 * * * *'; + } return; } @@ -149,40 +154,6 @@ class Index extends Component } } - private function validateCronExpression($expression): bool - { - if (empty($expression)) { - return true; - } - $isValid = false; - try { - $cronExpression = new CronExpression($expression); - $isValid = $cronExpression->getNextRunDate() !== false; - } catch (\Exception $e) { - $isValid = false; - } - - if (isset(VALID_CRON_STRINGS[$expression])) { - $isValid = true; - } - - return $isValid; - } - - public function updatedAutoUpdateFrequency() - { - if (! $this->validateCronExpression($this->auto_update_frequency)) { - $this->dispatch('error', 'Invalid Cron / Human expression for Auto Update Frequency.'); - } - } - - public function updatedUpdateCheckFrequency() - { - if (! $this->validateCronExpression($this->update_check_frequency)) { - $this->dispatch('error', 'Invalid Cron / Human expression for Update Check Frequency.'); - } - } - public function checkManually() { CheckForUpdatesJob::dispatchSync(); diff --git a/database/migrations/2024_08_05_142659_add_update_frequency_settings.php b/database/migrations/2024_08_05_142659_add_update_frequency_settings.php index ad680fc03..0060b8d1d 100644 --- a/database/migrations/2024_08_05_142659_add_update_frequency_settings.php +++ b/database/migrations/2024_08_05_142659_add_update_frequency_settings.php @@ -12,8 +12,8 @@ return new class extends Migration public function up(): void { Schema::table('instance_settings', function (Blueprint $table) { - $table->string('auto_update_frequency')->default('0 0 * * *')->nullable(); - $table->string('update_check_frequency')->default('0 * * * *')->nullable(); + $table->string('auto_update_frequency')->default('0 0 * * *'); + $table->string('update_check_frequency')->default('0 * * * *'); $table->boolean('new_version_available')->default(false); }); } diff --git a/resources/views/livewire/settings/index.blade.php b/resources/views/livewire/settings/index.blade.php index 212e055c5..906ac1aad 100644 --- a/resources/views/livewire/settings/index.blade.php +++ b/resources/views/livewire/settings/index.blade.php @@ -39,34 +39,36 @@ + +

Advanced

+
+ + +
+
Update
+
+ @if (!is_null(env('AUTOUPDATE', null))) +
+ +
+ @else + + @endif +
+
+
+ + Check Manually +
+ + @if (is_null(env('AUTOUPDATE', null)) && $is_auto_update_enabled) + + @endif +
-

Advanced

-
- - -
-
Update
-
- @if (!is_null(env('AUTOUPDATE', null))) -
- -
- @else - - @endif -
-
-
- - Check Manually -
- - @if (is_null(env('AUTOUPDATE', null)) && $is_auto_update_enabled) - - @endif -