From 5e3a40baf4f5b60f8e2445b62f0557b285218ff7 Mon Sep 17 00:00:00 2001 From: marcobaobao Date: Thu, 12 Jan 2023 23:18:50 +0100 Subject: [PATCH] it just works --- frontend/src/Home.tsx | 11 +++++++---- frontend/src/types.d.ts | 1 + server/process.go | 5 +++-- server/service.go | 7 +++++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/frontend/src/Home.tsx b/frontend/src/Home.tsx index 4b0eb4b..f3cbf4d 100644 --- a/frontend/src/Home.tsx +++ b/frontend/src/Home.tsx @@ -74,9 +74,12 @@ export default function Home({ socket }: Props) { }, []) useEffect(() => { - const interval = setInterval(() => client.running(), 1000) - return () => clearInterval(interval) - }, []) + if (status.connected) { + client.running() + const interval = setInterval(() => client.running(), 1000) + return () => clearInterval(interval) + } + }, [status.connected]) useEffect(() => { client.freeSpace() @@ -89,7 +92,7 @@ export default function Home({ socket }: Props) { switch (typeof res.result) { case 'object': setActiveDownloads( - res.result + (res.result ?? []) .filter((r: RPCResult) => !!r.info.url) .sort((a: RPCResult, b: RPCResult) => a.info.title.localeCompare(b.info.title)) ) diff --git a/frontend/src/types.d.ts b/frontend/src/types.d.ts index ccb8726..71ed726 100644 --- a/frontend/src/types.d.ts +++ b/frontend/src/types.d.ts @@ -1,6 +1,7 @@ export type RPCMethods = | "Service.Exec" | "Service.Kill" + | "Service.Clear" | "Service.Running" | "Service.KillAll" | "Service.FreeSpace" diff --git a/server/process.go b/server/process.go index 4ce0ac3..6c152df 100644 --- a/server/process.go +++ b/server/process.go @@ -167,6 +167,7 @@ func (p *Process) Complete() { // Kill a process and remove it from the memory func (p *Process) Kill() error { + p.mem.Delete(p.id) // yt-dlp uses multiple child process the parent process // has been spawned with setPgid = true. To properly kill // all subprocesses a SIGTERM need to be sent to the correct @@ -176,8 +177,8 @@ func (p *Process) Kill() error { return err } err = syscall.Kill(-pgid, syscall.SIGTERM) - p.mem.Delete(p.id) - log.Printf("Killed process %s\n", p.id) + + log.Println("Killed process", p.id) return err } diff --git a/server/service.go b/server/service.go index 4a3cdb8..fcc0809 100644 --- a/server/service.go +++ b/server/service.go @@ -90,6 +90,13 @@ func (t *Service) KillAll(args NoArgs, killed *string) error { return err } +// Remove a process from the db rendering it unusable if active +func (t *Service) Clear(args string, killed *string) error { + log.Println("Clearing process with id", args) + db.Delete(args) + return nil +} + // FreeSpace gets the available from package sys util func (t *Service) FreeSpace(args NoArgs, free *uint64) error { freeSpace, err := sys.FreeSpace()