Remove host files and uninstall agent when deleting hosts
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
import Dialog from './primitives/Dialog.svelte';
|
||||
|
||||
let { open = $bindable(false), host, ondeleted }:
|
||||
{ open?: boolean; host: Pick<Host, 'id' | 'name'> | null; ondeleted: () => void | Promise<void> } = $props();
|
||||
{ open?: boolean; host: Pick<Host, 'id' | 'name'> | null; ondeleted: (result: { deleted: boolean; operationId?: string }) => void | Promise<void> } = $props();
|
||||
let deletion = $state<HostDeletion | null>(null);
|
||||
let checking = $state(false); let deleting = $state(false); let error = $state('');
|
||||
|
||||
@@ -36,19 +36,20 @@
|
||||
throw new Error(body.error ?? body.message ?? 'Could not delete this host.');
|
||||
}
|
||||
open = false;
|
||||
await ondeleted();
|
||||
await ondeleted(body);
|
||||
} catch (cause) { error = (cause as Error).message; }
|
||||
finally { deleting = false; }
|
||||
}
|
||||
</script>
|
||||
|
||||
<Dialog bind:open title={`Delete ${host?.name ?? 'host'}?`} busy={deleting}
|
||||
description="Remove this host from Electric Cherry and revoke its agent access and unused installer links.">
|
||||
description="Permanently remove Electric Cherry's files from this host, including its downloaded game files, then uninstall the agent.">
|
||||
<div class="content">
|
||||
<p>The agent and game files stay on the machine. Published game libraries and operation history are kept. Commands that have never been sent to the host will be cancelled.</p>
|
||||
<p>This deletes the host's game-library copies, server files, agent data, credentials, and service installation. Electric Cherry's uploaded libraries on the controller and its operation history are kept.</p>
|
||||
<p>The host remains visible until cleanup is confirmed. Offline hosts wait for reconnection. Unsent commands will be cancelled.</p>
|
||||
{#if checking}<p role="status">Checking servers and unfinished operations…</p>
|
||||
{:else if deletion && !deletion.allowed}<div role="status" class="blocked"><strong>This host still has work to finish:</strong><ul>{#each deletion.blockers as blocker}<li>{blocker}</li>{/each}</ul><p>Open <a href={`/hosts/${host?.id}`} onclick={() => open = false}>host details</a> to review its operations or drain its servers.</p></div>
|
||||
{:else if deletion?.allowed}<p>This host is ready to delete. Adding it again requires a new enrollment.</p>{/if}
|
||||
{:else if deletion?.allowed}<p>Cleanup cannot be undone once it starts. Adding this machine again requires installing and enrolling the agent again.</p>{/if}
|
||||
{#if error}<p role="alert" class="ui-error">{error}</p>{/if}
|
||||
</div>
|
||||
{#snippet actions()}
|
||||
|
||||
Reference in New Issue
Block a user