feat: add function to pause screen generation for up to 480min

chore: code quality
This commit is contained in:
Benjamin Nussbaum 2025-07-10 17:47:42 +02:00
parent 4fb5f54e18
commit 7e355c2d92
10 changed files with 207 additions and 25 deletions

View file

@ -56,7 +56,11 @@ Route::get('/display', function (Request $request) {
]);
}
if ($device->isSleepModeActive()) {
if ($device->isPauseActive()) {
$image_path = 'images/sleep.png';
$filename = 'sleep.png';
$refreshTimeOverride = (int) now()->diffInSeconds($device->pause_until);
} elseif ($device->isSleepModeActive()) {
$image_path = 'images/sleep.png';
$filename = 'sleep.png';
$refreshTimeOverride = $device->getSleepModeEndsInSeconds() ?? $device->default_refresh_interval;
@ -293,6 +297,11 @@ Route::get('/display/status', function (Request $request) {
'wifi_strength',
'current_screen_image',
'default_refresh_interval',
'sleep_mode_enabled',
'sleep_mode_from',
'sleep_mode_to',
'special_function',
'pause_until',
'updated_at',
]),
);
@ -300,6 +309,48 @@ Route::get('/display/status', function (Request $request) {
->name('display.status')
->middleware('auth:sanctum');
Route::post('/display/status', function (Request $request) {
$request->validate([
'device_id' => 'required|exists:devices,id',
'name' => 'string|max:255',
'default_refresh_interval' => 'integer|min:1',
'sleep_mode_enabled' => 'boolean',
'sleep_mode_from' => 'nullable|date_format:H:i',
'sleep_mode_to' => 'nullable|date_format:H:i',
'pause_until' => 'nullable|date|after:now',
]);
$deviceId = $request['device_id'];
abort_unless($request->user()->devices->contains($deviceId), 403);
$fieldsToUpdate = $request->only(['name', 'default_refresh_interval', 'sleep_mode_enabled', 'sleep_mode_from', 'sleep_mode_to', 'pause_until']);
Device::find($deviceId)->update($fieldsToUpdate);
return response()->json(
Device::find($deviceId)->only([
'id',
'mac_address',
'name',
'friendly_id',
'last_rssi_level',
'last_battery_voltage',
'last_firmware_version',
'battery_percent',
'wifi_strength',
'current_screen_image',
'default_refresh_interval',
'sleep_mode_enabled',
'sleep_mode_from',
'sleep_mode_to',
'special_function',
'pause_until',
'updated_at',
]),
);
})
->name('display.status.post')
->middleware('auth:sanctum');
Route::get('/current_screen', function (Request $request) {
$access_token = $request->header('access-token');
$device = Device::where('api_key', $access_token)->first();