Skip to content

Commit 1ffea34

Browse files
committed
Added feedback for trace deletions.
If you are on the page for a trace that got deleted, you will be redirected to the langing page.
1 parent 29c71d9 commit 1ffea34

File tree

4 files changed

+17
-0
lines changed

4 files changed

+17
-0
lines changed

codepulse/src/main/resources/toserve/pages/traces/trace-recording-controls.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,9 @@
537537
endTraceButton.overlay('ready')
538538
traceRunningBus.push(false)
539539
break
540+
case 'deleted':
541+
alert('This trace has been deleted. You will be redirected to the home screen')
542+
window.location.href = '/'
540543
}
541544
})
542545

codepulse/src/main/scala/com/secdec/codepulse/tracer/AkkaTracingTarget.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,16 @@ import reactive.EventSource
3232
import reactive.EventStream
3333
import com.secdec.codepulse.data.trace.TraceId
3434
import com.secdec.codepulse.data.trace.TraceData
35+
import akka.actor.PoisonPill
3536

3637
sealed trait TracingTargetEvent
3738
object TracingTargetEvent {
3839
case object Connecting extends TracingTargetEvent
3940
case object Connected extends TracingTargetEvent
4041
case class Started(traceId: TraceId) extends TracingTargetEvent
4142
case class Finished(reason: TraceEndReason) extends TracingTargetEvent
43+
44+
case object Deleted extends TracingTargetEvent
4245
}
4346

4447
sealed trait TracingTargetState
@@ -70,6 +73,8 @@ trait TracingTarget {
7073

7174
def traceData: TraceData
7275
def transientData: TransientTraceData
76+
77+
def requestDeletion(): Unit
7378
}
7479

7580
object AkkaTracingTarget {
@@ -86,6 +91,8 @@ object AkkaTracingTarget {
8691
private case class TraceConnected(trace: Trace)
8792
private case class TraceEnded(reason: TraceEndReason)
8893

94+
private case object RequestDeletion
95+
8996
// implicit Timeout used for the Akka ask (?) method in getState
9097
private implicit val timeout = new Timeout(5000)
9198

@@ -97,6 +104,7 @@ object AkkaTracingTarget {
97104
val reply = actor ? RequestState
98105
reply.mapTo[TracingTargetState]
99106
}
107+
def requestDeletion() = actor ! RequestDeletion
100108
}
101109

102110
def apply(actorSystem: ActorSystem, traceId: TraceId, traceData: TraceData, transientTraceData: TransientTraceData): TracingTarget = {
@@ -152,6 +160,9 @@ class AkkaTracingTarget(traceId: TraceId, traceData: TraceData, transientTraceDa
152160
body orElse {
153161
case sub: Subscribe => sub.f(events)
154162
case RequestState => sender ! s
163+
case RequestDeletion =>
164+
events.fire(TracingTargetEvent.Deleted)
165+
self ! PoisonPill
155166
}
156167
}
157168

codepulse/src/main/scala/com/secdec/codepulse/tracer/TraceManager.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class TraceManager(val actorSystem: ActorSystem) extends Observing {
9090
for (trace <- traces remove traceId) yield {
9191
dataProvider.removeTrace(traceId)
9292
traceListUpdates fire ()
93+
trace.requestDeletion()
9394
trace
9495
}
9596
}

codepulse/src/main/scala/com/secdec/codepulse/tracer/snippet/CometTracerUI.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ class CometTracerUI extends CometWidget[TracingTarget, CometTracerUI]
6666
case TraceEndReason.Halted => "halted"
6767
}
6868
sendStatusUpdate { Map("state" -> "finished", "reason" -> s) }
69+
case TracingTargetEvent.Deleted =>
70+
sendStatusUpdate { Map("state" -> "deleted") }
6971
}
7072
}
7173
}

0 commit comments

Comments
 (0)