diff --git a/control/frontend/src/lib/ts/api_handler.ts b/control/frontend/src/lib/ts/api_handler.ts index d567273..f4a6205 100755 --- a/control/frontend/src/lib/ts/api_handler.ts +++ b/control/frontend/src/lib/ts/api_handler.ts @@ -325,8 +325,12 @@ async function run_shell_command(ip: string, command: string): Promise { - return await run_shell_command(ip, 'xfce4-session-logout --halt'); +export async function shutdown(ip: string): Promise { + const command = 'xfce4-session-logout --halt'; + const raw_response = await run_shell_command(ip, command); + if (!raw_response.ok) return false; + if (handle_shell_error(ip, raw_response, command, true)) return false; + return true; } export async function startup(mac: string): Promise { diff --git a/control/frontend/src/routes/ControlView.svelte b/control/frontend/src/routes/ControlView.svelte index 2ebb172..6fd29ab 100644 --- a/control/frontend/src/routes/ControlView.svelte +++ b/control/frontend/src/routes/ControlView.svelte @@ -114,12 +114,13 @@ async function shutdown_action() { popup_content.open = false; - 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', - preview: { currently_updating: false, url: null } - }); + await run_on_all_selected_displays(async (d) => { + if (await shutdown(d.ip)) { + db.displays.update(d.id, { + status: 'app_offline', + preview: { currently_updating: false, url: null } + }); + } }, false); }