chore(control): add settings with screenshot preview settings

This commit is contained in:
E44
2026-01-18 17:34:57 +01:00
parent b251e8951f
commit 83eaf34475
5 changed files with 203 additions and 8 deletions
+10 -3
View File
@@ -13,6 +13,7 @@ import { delete_and_deselect_unique_files_from_display } from './files';
import { db } from '../database';
import { dev } from '$app/environment';
import { remove_display_from_loading_displays } from '../main';
import { preview_settings } from './ui_behavior';
export const local_displays: Writable<DisplayIdGroup[]> = writable<DisplayIdGroup[]>([]);
@@ -117,7 +118,13 @@ export async function get_display_by_id(display_id: string): Promise<Display | n
return (await db.displays.get(display_id)) ?? null;
}
export async function screenshot_loop(display_id: string, initial_retry_count: number = 5) {
export async function screenshot_loop(display_id: string) {
const settings = get(preview_settings);
if (settings.mode === 'never') return;
const initial_retry_count = settings.retry_count.now;
const retry_seconds = get(preview_settings).retry_seconds.now;
const display = await db.displays.get(display_id);
if (!display || display.preview.currently_updating) return;
@@ -128,7 +135,7 @@ export async function screenshot_loop(display_id: string, initial_retry_count: n
let retry_count = initial_retry_count;
while (retry_count > 0) {
retry_count -= 1;
if (settings.mode !== 'always') retry_count -= 1;
const new_blob = await get_screenshot(display.ip);
if (!new_blob) {
@@ -149,7 +156,7 @@ export async function screenshot_loop(display_id: string, initial_retry_count: n
retry_count = initial_retry_count;
}
await new Promise((resolve) => setTimeout(resolve, 2000)); // sleep 2s
await new Promise((resolve) => setTimeout(resolve, retry_seconds * 1000)); // sleep
}
display.preview.currently_updating = false;
@@ -1,4 +1,5 @@
import { writable, type Writable } from 'svelte/store';
import type { NumberSetting } from '../types';
export const dnd_flip_duration_ms = 300;
@@ -23,6 +24,30 @@ export const current_height: Writable<Record<string, number>> = writable<Record<
export const is_group_drag: Writable<boolean> = writable<boolean>(false);
export const is_display_drag: Writable<boolean> = writable<boolean>(false);
export const preview_settings: Writable<{
mode: 'never' | 'normal' | 'always';
retry_seconds: NumberSetting;
retry_count: NumberSetting;
}> = writable<{
mode: 'never' | 'normal' | 'always';
retry_seconds: NumberSetting;
retry_count: NumberSetting;
}>({
mode: 'normal',
retry_seconds: {
max: 10,
min: 0.5,
now: 2,
step: 0.5
},
retry_count: {
max: 10,
min: 1,
now: 5,
step: 1
}
});
export const pinned_display_id: Writable<string | null> = writable<string | null>(null);
export function change_height(key: 'display' | 'file', factor: number) {
+7
View File
@@ -141,6 +141,13 @@ export type PopupContent = {
closable?: boolean;
};
export type NumberSetting = {
max: number,
min: number,
now: number,
step: number
}
export type DisplayStatus = 'host_offline' | 'app_offline' | 'app_online' | null;
export function to_display_status(value: string): DisplayStatus {