@@ -59,50 +59,53 @@ export function DynamicForm() {
5959 return value . valid ? value . value : "" ;
6060 }
6161
62- const handleTestdataChange = ( value : string ) => {
62+ const handleConfigChange = ( type : 'testdata' | 'user' | 'plan' , value : string ) => {
6363 reset ( { } ) ;
6464 setPrevValues ( { } ) ;
6565 setResponse ( null ) ;
6666 setCurrentId ( 0 ) ;
6767
6868 const params = new URLSearchParams ( window . location . search ) ;
69- params . set ( 'testdata' , value ) ;
69+
70+ if ( type === 'testdata' ) {
71+ params . set ( 'testdata' , value ) ;
72+ setUrlTestdata ( value ) ;
73+ // Clear user and plan when testdata changes
74+ setPlan ( "" ) ;
75+ setUser ( "" ) ;
76+ params . delete ( 'user' ) ;
77+ params . delete ( 'plan' ) ;
78+ } else if ( type === 'user' ) {
79+ if ( value ) {
80+ params . set ( 'user' , value ) ;
81+ setUser ( value ) ;
82+ } else {
83+ params . delete ( 'user' ) ;
84+ setUser ( "" ) ;
85+ }
86+ } else if ( type === 'plan' ) {
87+ if ( value ) {
88+ params . set ( 'plan' , value ) ;
89+ setPlan ( value ) ;
90+ } else {
91+ params . delete ( 'plan' ) ;
92+ setPlan ( "" ) ;
93+ }
94+ }
95+
7096 const newUrl = `${ window . location . pathname } ?${ params . toString ( ) } ` ;
7197 window . history . replaceState ( { } , '' , newUrl ) ;
72- setUrlTestdata ( value ) ;
73- setPlan ( "" ) ;
74- setUser ( "" ) ;
7598 } ;
7699
77100 const {
78101 users,
79102 isLoading : usersLoading ,
80103 fetchError : usersFetchError
81104 } = useUsers ( serverAddress , urlTestdata ) ;
82-
83- // Update URL when user or usePlan changes
84- useEffect ( ( ) => {
85- const params = new URLSearchParams ( window . location . search ) ;
86-
87- if ( plan ) {
88- params . set ( 'plan' , plan ) ;
89- } else {
90- params . delete ( 'plan' ) ;
91- }
92-
93- if ( user ) {
94- params . set ( 'user' , user ) ;
95- } else {
96- params . delete ( 'user' ) ;
97- }
98-
99- const newUrl = `${ window . location . pathname } ?${ params . toString ( ) } ` ;
100- window . history . replaceState ( { } , '' , newUrl ) ;
101- } , [ user , plan ] ) ;
102105
103106 const wsUrl = `ws://${ serverAddress } /ws/${ encodeURIComponent ( urlTestdata ) } ?${ plan ? `plan=${ encodeURIComponent ( plan ) } &` : '' } ${ user ? `user=${ encodeURIComponent ( user ) } ` : '' } ` ;
104107
105- const { message : serverResponse , sendMessage, connectionStatus } = useWebSocket < Response > ( wsUrl , urlTestdata ) ;
108+ const { message : serverResponse , sendMessage, connectionStatus } = useWebSocket < Response > ( wsUrl , urlTestdata , user , plan ) ;
106109
107110 const [ response , setResponse ] = useState < Response | null > ( null ) ;
108111 const [ currentId , setCurrentId ] = useState < number > ( 0 ) ;
@@ -418,7 +421,7 @@ export function DynamicForm() {
418421
419422 return (
420423 < div key = { param . name } className = "flex flex-col gap-2 text-left" >
421- < p style = { { color : "red" } } > form_type is required</ p >
424+ { /* <p style={{ color: "red" }}>form_type is required</p> */ }
422425 { renderDiagnostics ( param . diagnostics ) }
423426 </ div >
424427 ) ;
@@ -469,7 +472,7 @@ export function DynamicForm() {
469472 { testcontrols &&
470473 < div className = "flex flex-row gap-4 mb-12" >
471474 < Select
472- onValueChange = { handleTestdataChange }
475+ onValueChange = { ( value ) => handleConfigChange ( 'testdata' , value ) }
473476 value = { urlTestdata }
474477 >
475478 < SelectTrigger className = "w-fit" >
@@ -488,9 +491,7 @@ export function DynamicForm() {
488491
489492 { Object . keys ( users ) . length > 0 && (
490493 < Select
491- onValueChange = { ( value ) => {
492- setUser ( value ) ;
493- } }
494+ onValueChange = { ( value ) => handleConfigChange ( 'user' , value ) }
494495 value = { user }
495496 >
496497 < SelectTrigger className = "w-fit" >
@@ -512,7 +513,7 @@ export function DynamicForm() {
512513 Use Plan
513514 < Switch
514515 checked = { plan !== "" }
515- onCheckedChange = { ( ) => setPlan ( plan !== "" ? "" : "plan.json " ) }
516+ onCheckedChange = { ( checked ) => handleConfigChange ( ' plan' , checked ? "plan.json " : "" ) }
516517 />
517518 </ span >
518519 </ div >
0 commit comments