diff --git a/app/Services/ImageGenerationService.php b/app/Services/ImageGenerationService.php index faa90ba..79f1a37 100644 --- a/app/Services/ImageGenerationService.php +++ b/app/Services/ImageGenerationService.php @@ -115,4 +115,21 @@ class ImageGenerationService } } } + + public static function resetIfNotCacheable(?Plugin $plugin): void + { + if ($plugin?->id) { + if ( + Device::query() + ->where('width', '!=', 800) + ->orWhere('height', '!=', 480) + ->orWhere('rotate', '!=', 0) + ->exists() + ) { + // TODO cache image per device + $plugin->update(['current_image' => null]); + \Log::debug('Skip cache as devices with other dimensions exist'); + } + } + } } diff --git a/routes/api.php b/routes/api.php index 2f23008..8556505 100644 --- a/routes/api.php +++ b/routes/api.php @@ -3,6 +3,7 @@ use App\Jobs\GenerateScreenJob; use App\Models\Device; use App\Models\User; +use App\Services\ImageGenerationService; use Illuminate\Http\Request; use Illuminate\Support\Facades\Blade; use Illuminate\Support\Facades\Route; @@ -53,6 +54,9 @@ Route::get('/display', function (Request $request) { $refreshTimeOverride = $playlistItem->playlist()->first()->refresh_time; $plugin = $playlistItem->plugin; + // Reset cache if Devices with different dimensions exist + ImageGenerationService::resetIfNotCacheable($plugin); + // Check and update stale data if needed if ($plugin->isDataStale() || $plugin->current_image == null) { $plugin->updateDataPayload();