diff --git a/app/Console/Commands/VersionChecker.php b/app/Console/Commands/VersionChecker.php new file mode 100644 index 000000000..7b2acc9bb --- /dev/null +++ b/app/Console/Commands/VersionChecker.php @@ -0,0 +1,59 @@ +isOutOfDate()) { + return Command::SUCCESS; + } + + $admins = User::select(['id', 'name', 'email', 'role']) + ->where('role', 'admin') + ->get(); + + foreach ($admins as $user) { + Notification::make() + ->title('Update Available') + ->body("There's a new version of Speedtest Tracker available: {$system->getRemoteVersion()}") + ->info() + ->actions([ + Action::make('view releases') + ->button() + ->color('gray') + ->url('https://github.com/alexjustesen/speedtest-tracker/releases') + ->openUrlInNewTab(), + ]) + ->sendToDatabase($user); + } + + return Command::SUCCESS; + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 5fcf4c79f..6896760f2 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -2,6 +2,7 @@ namespace App\Console; +use App\Console\Commands\VersionChecker; use App\Jobs\ExecSpeedtest; use App\Settings\GeneralSettings; use Cron\CronExpression; @@ -17,6 +18,13 @@ protected function schedule(Schedule $schedule): void { $settings = new GeneralSettings(); + /** + * Checked for new versions weekly on Thursday because + * I usually do releases on Thursday or Friday. + */ + $schedule->command(VersionChecker::class)->weeklyOn(5) + ->timezone($settings->timezone ?? 'UTC'); + /** * Check for speedtests that need to run. */ diff --git a/app/Filament/VersionProviders/SpeedtestTrackerVersionProvider.php b/app/Filament/VersionProviders/SpeedtestTrackerVersionProvider.php index d4b9e1c5d..9c7058fa5 100644 --- a/app/Filament/VersionProviders/SpeedtestTrackerVersionProvider.php +++ b/app/Filament/VersionProviders/SpeedtestTrackerVersionProvider.php @@ -1,5 +1,6 @@ isProduction() - ? config('speedtest.build_version') + ? app(new SystemChecker)->getLocalVersion() : config('app.env'); } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 13d99539a..2b276b8e3 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,8 @@ namespace App\Providers; +use App\Services\SystemChecker; +use Illuminate\Foundation\Console\AboutCommand; use Illuminate\Support\Facades\URL; use Illuminate\Support\ServiceProvider; @@ -28,5 +30,12 @@ public function boot(): void if (config('app.force_https')) { URL::forceScheme('https'); } + + $system = new SystemChecker; + + AboutCommand::add('Speedtest Tracker', fn () => [ + 'Version' => $system->getLocalVersion(), + 'Out of date' => $system->isOutOfDate() ? 'Yes' : 'No', + ]); } } diff --git a/app/Services/SystemChecker.php b/app/Services/SystemChecker.php index e4d83b5f1..c52b8e93f 100644 --- a/app/Services/SystemChecker.php +++ b/app/Services/SystemChecker.php @@ -2,8 +2,6 @@ namespace App\Services; -use Illuminate\Support\Facades\Cache; - /** * 🤔 inspired by: https://github.com/ploi/roadmap/blob/main/app/Services/SystemChecker.php */ @@ -50,9 +48,9 @@ public function isOutOfDate() public function flushVersionData() { try { - Cache::forget($this->cacheKeyLocal); + cache()->forget($this->cacheKeyLocal); - Cache::forget($this->cacheKeyRemote); + cache()->forget($this->cacheKeyRemote); } catch (\Exception $exception) { // fail silently, it's ok } diff --git a/config/speedtest.php b/config/speedtest.php index a0f945134..dcd1362a9 100644 --- a/config/speedtest.php +++ b/config/speedtest.php @@ -3,13 +3,6 @@ use Carbon\Carbon; return [ - /** - * Build information - */ - 'build_date' => Carbon::parse('2023-12-20'), - - 'build_version' => '0.14.1', - /** * General */