From d77d07cb52f8a4e98ec339b456e8765c3ac4f1b5 Mon Sep 17 00:00:00 2001 From: mbecker20 Date: Mon, 2 Jan 2023 09:43:40 +0000 Subject: [PATCH] attach id of deleted item to delete update --- core/src/actions/build.rs | 2 +- core/src/actions/deployment.rs | 2 +- core/src/actions/group.rs | 2 +- core/src/actions/procedure.rs | 2 +- core/src/actions/server.rs | 2 +- frontend/src/components/build/Build.tsx | 15 ++++++++------- frontend/src/state/ws.ts | 2 +- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/core/src/actions/build.rs b/core/src/actions/build.rs index c98259a41..447f343be 100644 --- a/core/src/actions/build.rs +++ b/core/src/actions/build.rs @@ -123,7 +123,7 @@ impl State { .context("failed at deleting repo")?; self.db.builds.delete_one(build_id).await?; let update = Update { - target: UpdateTarget::System, + target: UpdateTarget::Build(build_id.to_string()), operation: Operation::DeleteBuild, start_ts, end_ts: Some(monitor_timestamp()), diff --git a/core/src/actions/deployment.rs b/core/src/actions/deployment.rs index e7bb3c19d..7a76a02f2 100644 --- a/core/src/actions/deployment.rs +++ b/core/src/actions/deployment.rs @@ -131,7 +131,7 @@ impl State { "failed at deleting deployment at {deployment_id} from mongo" ))?; let update = Update { - target: UpdateTarget::System, + target: UpdateTarget::Deployment(deployment_id.to_string()), operation: Operation::DeleteDeployment, start_ts, end_ts: Some(monitor_timestamp()), diff --git a/core/src/actions/group.rs b/core/src/actions/group.rs index f118e40d4..57af996a0 100644 --- a/core/src/actions/group.rs +++ b/core/src/actions/group.rs @@ -79,7 +79,7 @@ impl State { .await .context(format!("failed at deleting group at {id} from mongo"))?; let update = Update { - target: UpdateTarget::System, + target: UpdateTarget::Group(id.to_string()), operation: Operation::DeleteGroup, start_ts, end_ts: Some(monitor_timestamp()), diff --git a/core/src/actions/procedure.rs b/core/src/actions/procedure.rs index 23fb61393..e3e61b7f6 100644 --- a/core/src/actions/procedure.rs +++ b/core/src/actions/procedure.rs @@ -87,7 +87,7 @@ impl State { .await .context(format!("failed at deleting procedure at {id} from mongo"))?; let update = Update { - target: UpdateTarget::System, + target: UpdateTarget::Procedure(id.to_string()), operation: Operation::DeleteProcedure, start_ts, end_ts: Some(monitor_timestamp()), diff --git a/core/src/actions/server.rs b/core/src/actions/server.rs index eedf56c35..0f21f8dec 100644 --- a/core/src/actions/server.rs +++ b/core/src/actions/server.rs @@ -104,7 +104,7 @@ impl State { let start_ts = monitor_timestamp(); self.db.servers.delete_one(&server_id).await?; let update = Update { - target: UpdateTarget::System, + target: UpdateTarget::Server(server_id.to_string()), operation: Operation::DeleteServer, start_ts, end_ts: Some(monitor_timestamp()), diff --git a/frontend/src/components/build/Build.tsx b/frontend/src/components/build/Build.tsx index f1c2ce857..3d056aa01 100644 --- a/frontend/src/components/build/Build.tsx +++ b/frontend/src/components/build/Build.tsx @@ -23,14 +23,15 @@ const Build: Component<{}> = (p) => { const userCanUpdate = () => user().admin || build().permissions[getId(user())] === PermissionLevel.Update; + let unsub = () => {}; createEffect(() => { - onCleanup( - ws.subscribe([Operation.DeleteBuild], (update) => { - if (update.target.id === params.id) { - navigate("/"); - } - }) - ); + unsub(); + unsub = ws.subscribe([Operation.DeleteBuild], (update) => { + if (update.target.id === params.id) { + navigate("/"); + } + }); + onCleanup(unsub); }); return ( }> diff --git a/frontend/src/state/ws.ts b/frontend/src/state/ws.ts index 5d56ff9fd..b4083cb7f 100644 --- a/frontend/src/state/ws.ts +++ b/frontend/src/state/ws.ts @@ -43,7 +43,7 @@ function connectToWs(state: State) { subscribe: (operations: Operation[], callback: (update: Update) => void) => { const listener = ({ data }: { data: string }) => { if (data === "PONG") return; - if (data = "LOGGED_IN") return; + if (data === "LOGGED_IN") return; const update = JSON.parse(data) as Update; if (operations.length === 0 || operations.includes(update.operation)) { callback(update);