@@ -2,19 +2,27 @@ import {
22 useSimContext ,
33 defaultAggregatedData ,
44} from "@/contexts/SimContext/context" ;
5- import { IScenario } from "@/contexts/SimContext/types" ;
5+ import { EConnectionState , IScenario } from "@/contexts/SimContext/types" ;
66import { ChangeEvent , FC , useCallback , useEffect , useState } from "react" ;
77import { useStreamMessagesHandler } from "../hooks/useStreamMessagesHandler" ;
88import { useLokiWebSocket } from "../hooks/useLokiWebSocket" ;
99import { Button } from "@/components/Button" ;
1010
1111export const Scenario : FC = ( ) => {
1212 const {
13- state : { allScenarios, activeScenario, events, lokiHost, lokiConnected, autoStart } ,
13+ state : {
14+ allScenarios,
15+ activeScenario,
16+ events,
17+ lokiHost,
18+ lokiConnectionState,
19+ autoStart,
20+ } ,
1421 dispatch,
1522 } = useSimContext ( ) ;
1623 const { startStream, streaming, stopStream } = useStreamMessagesHandler ( ) ;
17- const { connect : connectLoki , disconnect : disconnectLoki , connecting : lokiConnecting } = useLokiWebSocket ( ) ;
24+ const { connect : connectLoki , disconnect : disconnectLoki } =
25+ useLokiWebSocket ( ) ;
1826 const [ includeTransactions , setIncludeTransactions ] = useState ( true ) ;
1927
2028 const isLokiMode = ! ! lokiHost ;
@@ -29,7 +37,9 @@ export const Scenario: FC = () => {
2937 scenario . topology ,
3038 window . location . toString ( ) ,
3139 ) . toString ( ) ,
32- trace : scenario . trace ? new URL ( scenario . trace , window . location . toString ( ) ) . toString ( ) : undefined ,
40+ trace : scenario . trace
41+ ? new URL ( scenario . trace , window . location . toString ( ) ) . toString ( )
42+ : undefined ,
3343 } ) ) ;
3444 dispatch ( { type : "SET_SCENARIOS" , payload : scenarios } ) ;
3545
@@ -40,7 +50,11 @@ export const Scenario: FC = () => {
4050 const scenarioIndex = parseInt ( scenarioParam , 10 ) ;
4151 if ( scenarioIndex >= 0 && scenarioIndex < scenarios . length ) {
4252 const targetScenario = scenarios [ scenarioIndex ] ;
43- dispatch ( { type : "SET_SCENARIO" , payload : targetScenario . name , autoStart : true } ) ;
53+ dispatch ( {
54+ type : "SET_SCENARIO" ,
55+ payload : targetScenario . name ,
56+ autoStart : true ,
57+ } ) ;
4458 }
4559 }
4660 } ) ( ) ;
@@ -55,9 +69,20 @@ export const Scenario: FC = () => {
5569 startStream ( true ) ; // Include transactions by default for auto-load
5670 }
5771 // Reset autoStart flag after triggering
58- dispatch ( { type : "SET_SCENARIO" , payload : activeScenario , autoStart : false } ) ;
72+ dispatch ( {
73+ type : "SET_SCENARIO" ,
74+ payload : activeScenario ,
75+ autoStart : false ,
76+ } ) ;
5977 }
60- } , [ autoStart , activeScenario , isLokiMode , connectLoki , startStream , dispatch ] ) ;
78+ } , [
79+ autoStart ,
80+ activeScenario ,
81+ isLokiMode ,
82+ connectLoki ,
83+ startStream ,
84+ dispatch ,
85+ ] ) ;
6186
6287 const chooseScenario = useCallback (
6388 ( event : ChangeEvent < HTMLSelectElement > ) => {
@@ -89,8 +114,9 @@ export const Scenario: FC = () => {
89114 }
90115 } , [ isLokiMode , connectLoki , startStream , includeTransactions ] ) ;
91116
92- const isLoaded = events . length > 0 || streaming || lokiConnected ;
93- const isConnecting = streaming || lokiConnecting ;
117+ const isConnected = lokiConnectionState == EConnectionState . Connected ;
118+ const isConnecting = lokiConnectionState == EConnectionState . Connecting ;
119+ const isLoaded = events . length > 0 || streaming || isConnected ;
94120
95121 return (
96122 < div className = "flex items-center justify-start gap-4 border-2 rounded-md p-4 border-gray-200 bg-white/80 backdrop-blur-xs" >
@@ -130,10 +156,17 @@ export const Scenario: FC = () => {
130156 onClick = { handleStartStream }
131157 disabled = { isConnecting || isLoaded }
132158 >
133- { isLokiMode
134- ? ( lokiConnecting ? "Connecting..." : lokiConnected ? "Connected" : "Connect" )
135- : ( streaming ? "Loading..." : isLoaded ? "Loaded" : "Load Scenario" )
136- }
159+ { isLokiMode
160+ ? isConnecting
161+ ? "Connecting..."
162+ : isConnected
163+ ? "Connected"
164+ : "Connect"
165+ : streaming
166+ ? "Loading..."
167+ : isLoaded
168+ ? "Loaded"
169+ : "Load" }
137170 </ Button >
138171 { isLoaded && (
139172 < Button
0 commit comments