refactor(control): make run_on_all_selected_displays more generic

This commit is contained in:
2026-01-06 19:18:18 +01:00
parent 4325ffc4aa
commit 427209e518
5 changed files with 16 additions and 12 deletions
@@ -160,7 +160,7 @@
await change_file_path($current_file_path + file.name + '/'); await change_file_path($current_file_path + file.name + '/');
} else { } else {
const path_to_file = $current_file_path + file.name; const path_to_file = $current_file_path + file.name;
await run_on_all_selected_displays(open_file, true, path_to_file); await run_on_all_selected_displays((d) => open_file(d.ip, path_to_file));
} }
} }
@@ -142,15 +142,14 @@ export async function screenshot_loop(display_id: string, initial_retry_count: n
await db.displays.update(display.id, { preview: display.preview }); await db.displays.update(display.id, { preview: display.preview });
} }
export async function run_on_all_selected_displays<T extends unknown[]>( export async function run_on_all_selected_displays(
run_function: (ip: string, ...args: T) => void | Promise<void>, run_function: (display: Display) => void | Promise<void>,
update_screenshot_afterwards: boolean, update_screenshot_afterwards: boolean = true
...args: T
) { ) {
for (const display_id of get(selected_display_ids)) { for (const display_id of get(selected_display_ids)) {
const display = await get_display_by_id(display_id); const display = await get_display_by_id(display_id);
if (!display || !display.ip || display.status !== 'app_online') continue; if (!display || !display.ip || display.status !== 'app_online') continue;
await run_function(display.ip, ...args); await run_function(display);
if (update_screenshot_afterwards) { if (update_screenshot_afterwards) {
await screenshot_loop(display_id); await screenshot_loop(display_id);
} }
@@ -19,6 +19,7 @@
import { get_display_by_id, run_on_all_selected_displays } from '$lib/ts/stores/displays'; import { get_display_by_id, run_on_all_selected_displays } from '$lib/ts/stores/displays';
import { selected_display_ids } from '$lib/ts/stores/select'; import { selected_display_ids } from '$lib/ts/stores/select';
import TipTapInput from './TipTapInput.svelte'; import TipTapInput from './TipTapInput.svelte';
import { db } from '$lib/ts/database';
let popup_content: PopupContent = $state({ let popup_content: PopupContent = $state({
open: false, open: false,
@@ -78,7 +79,11 @@
async function shutdown_action() { async function shutdown_action() {
popup_content.open = false; popup_content.open = false;
await run_on_all_selected_displays((ip) => shutdown(ip), false); await run_on_all_selected_displays((d) => shutdown(d.ip), false); // no await here because we want to be fast
// await run_on_all_selected_displays((d) => {
// shutdown(d.ip); // no await here because we want to be fast
// db.displays.update(d.id, { status: 'app_offline' });
// }, false);
} }
</script> </script>
@@ -121,7 +126,7 @@
className="px-9" className="px-9"
disabled={$selected_display_ids.length === 0} disabled={$selected_display_ids.length === 0}
click_function={async () => { click_function={async () => {
await run_on_all_selected_displays(send_keyboard_input, true, 'VK_LEFT'); await run_on_all_selected_displays((d) => send_keyboard_input(d.ip, 'VK_LEFT'));
}}><ArrowBigLeft /></Button }}><ArrowBigLeft /></Button
> >
<Button <Button
@@ -129,7 +134,7 @@
className="px-9" className="px-9"
disabled={$selected_display_ids.length === 0} disabled={$selected_display_ids.length === 0}
click_function={async () => { click_function={async () => {
await run_on_all_selected_displays(send_keyboard_input, true, 'VK_RIGHT'); await run_on_all_selected_displays((d) => send_keyboard_input(d.ip, 'VK_RIGHT'));
}}><ArrowBigRight /></Button }}><ArrowBigRight /></Button
> >
</div> </div>
@@ -142,7 +147,7 @@
className="px-3 flex gap-3 w-75 justify-normal" className="px-3 flex gap-3 w-75 justify-normal"
disabled={$selected_display_ids.length === 0} disabled={$selected_display_ids.length === 0}
click_function={async () => { click_function={async () => {
await run_on_all_selected_displays(show_blackscreen, true); await run_on_all_selected_displays((d) => show_blackscreen(d.ip));
}}><Presentation />Blackout</Button }}><Presentation />Blackout</Button
> >
<div class="flex flex-row justify-normal"> <div class="flex flex-row justify-normal">
+1 -1
View File
@@ -31,7 +31,7 @@
add_to_last_keys(e.code); add_to_last_keys(e.code);
if (e.repeat) return; if (e.repeat) return;
await run_on_all_selected_displays(send_keyboard_input, true, id); await run_on_all_selected_displays((d) => send_keyboard_input(d.ip, id));
} }
</script> </script>
@@ -117,7 +117,7 @@
const html = const html =
editor_state.editor?.getHTML() + editor_state.editor?.getHTML() +
`<style>:root {--background-color: ${color_states.bg.value} !important;} `<style>:root {--background-color: ${color_states.bg.value} !important;}
</style>`; </style>`;
await run_on_all_selected_displays((d) => show_html(d.ip, html)); await run_on_all_selected_displays((d) => show_html(d.ip, html));
} }