Add image caching for playlist items

Move current_image caching to plugins

Remove redundant check

Add test for plugin cache

Skip puppeteer on GH actions
This commit is contained in:
zv0n 2025-05-01 19:06:28 +02:00 committed by Benjamin Nussbaum
parent faaccdc6fc
commit 580a5833a8
7 changed files with 247 additions and 82 deletions

View file

@ -1,6 +1,7 @@
<?php
use App\Jobs\GenerateScreenJob;
use App\Jobs\GeneratePluginJob;
use App\Models\Device;
use App\Models\User;
use Illuminate\Http\Request;
@ -46,28 +47,31 @@ Route::get('/display', function (Request $request) {
// Get current screen image from mirror device or continue if not available
if (! $image_uuid = $device->mirrorDevice?->current_screen_image) {
$refreshTimeOverride = null;
$nextPlaylistItem = $device->getNextPlaylistItem();
// Skip if cloud proxy is enabled for the device
if (! $device->proxy_cloud || $device->getNextPlaylistItem()) {
$playlistItem = $device->getNextPlaylistItem();
if (! $device->proxy_cloud && $nextPlaylistItem) {
$refreshTimeOverride = $nextPlaylistItem->playlist()->first()->refresh_time;
$plugin = $nextPlaylistItem->plugin;
if ($playlistItem) {
$refreshTimeOverride = $playlistItem->playlist()->first()->refresh_time;
// Check and update stale data if needed
if ($plugin->isDataStale() || $plugin->current_image == null) {
$plugin->updateDataPayload();
$plugin = $playlistItem->plugin;
// Check and update stale data if needed
if ($plugin->isDataStale()) {
$plugin->updateDataPayload();
}
$playlistItem->update(['last_displayed_at' => now()]);
if ($plugin->render_markup) {
$markup = Blade::render($plugin->render_markup, ['data' => $plugin->data_payload]);
} elseif ($plugin->render_markup_view) {
$markup = view($plugin->render_markup_view, ['data' => $plugin->data_payload])->render();
}
GenerateScreenJob::dispatchSync($device->id, $markup);
GeneratePluginJob::dispatchSync($plugin->id, $markup);
}
$plugin->refresh();
if ($plugin->current_image != null)
{
$nextPlaylistItem->update(['last_displayed_at' => now()]);
$device->update(['current_screen_image' => $plugin->current_image]);
}
}