@@ -21,19 +21,30 @@ import {
2121 Label ,
2222} from "@controlkit/ui" ;
2323
24+ import {
25+ E_TabStatus ,
26+ E_TabType ,
27+ type T_Tab ,
28+ } from "@src/stores/request_store/tabbar_slice" ;
29+
2430const styles = stylex . create ( {
2531 row : {
2632 padding : "0.0625rem 0" ,
2733
2834 cursor : "pointer" ,
2935
36+ borderLeft : "0.125rem solid transparent" ,
37+
38+ // transition: "background-color var(--transition-speed) ease",
39+
3040 ":hover" : {
3141 backgroundColor : "#0E0F10" ,
3242 } ,
3343 } ,
3444
3545 rowActive : {
3646 backgroundColor : "#1F252D" ,
47+ borderLeft : "0.125rem solid #2558BC" ,
3748 } ,
3849} ) ;
3950
@@ -98,6 +109,14 @@ export default function RecursiveTree(props: any) {
98109 ( state ) => state . setRequestParameters ,
99110 ) ;
100111
112+ const getTabs = useRequestStore ( ( state ) => state . getTabs ) ;
113+ const setTabs = useRequestStore ( ( state ) => state . setTabs ) ;
114+
115+ const activeTab = useRequestStore ( ( state ) => state . activeTab ) ;
116+ const setActiveTab = useRequestStore ( ( state ) => state . setActiveTab ) ;
117+
118+ // const setTabState = useRequestStore((state) => state.setTabState);
119+
101120 // TODO: remove this when moving the sub comps into their own files
102121 const [ _isHoveredFolder , setIsHoveredFolder ] = useState < boolean > ( false ) ;
103122 const [ _isHoveredOther , setIsHoveredOther ] = useState < boolean > ( false ) ;
@@ -587,7 +606,12 @@ export default function RecursiveTree(props: any) {
587606 return (
588607 // biome-ignore lint/a11y/useKeyWithClickEvents: <explanation>
589608 < div key = { item . id } >
590- < div { ...stylex . props ( styles . row ) } >
609+ < div
610+ { ...stylex . props (
611+ styles . row ,
612+ activeTab === item . id && styles . rowActive ,
613+ ) }
614+ >
591615 < div
592616 style = { {
593617 display : "grid" ,
@@ -615,6 +639,37 @@ export default function RecursiveTree(props: any) {
615639
616640 navigate ( `/http_request/${ item . id } ` ) ;
617641
642+
643+ const tabs = [ ...getTabs ( ) ] ;
644+
645+ const tab = tabs . find ( ( t ) => t . id === item . id ) ;
646+ // const status = tab?.status ?? E_TabStatus.NONE;
647+
648+ if ( tab ) {
649+ // setTabState(item.id, status);
650+ // setTimeout(() => {
651+ // setTabState(item.id, status);
652+ // // setTabState(item.id, E_TabStatus.SAVED);
653+ // }, 100);
654+
655+ const method = methods . find ( ( method ) => method . value === tab . data . method ) ;
656+
657+ setRequestParameters (
658+ tab . data . id ,
659+ tab . data . name ,
660+ tab . data . url ,
661+ method ?? methods [ 0 ] ,
662+ tab . data . autoHeaders ?? autoHeaders , // [], // item.autoHeaders,
663+ tab . data . headers ,
664+ tab . data . body ,
665+ // item.cookies,
666+ ) ;
667+
668+ setActiveTab ( item . id ) ;
669+
670+ // return;
671+ } else {
672+
618673 setRequestParameters (
619674 item . id ,
620675 item . name ,
@@ -626,6 +681,30 @@ export default function RecursiveTree(props: any) {
626681 // item.cookies,
627682 ) ;
628683
684+ const t : T_Tab = {
685+ id : item . id ,
686+ status : E_TabStatus . NONE ,
687+ title : item . name ,
688+ type : E_TabType . HTTP_REQUEST ,
689+ requestType : item . method ,
690+ data : {
691+ id : item . id ,
692+ name : item . name ,
693+ url : item . url ,
694+ method : item . method ,
695+ autoHeaders : item . autoHeaders ,
696+ headers : item . headers ,
697+ body : item . body ,
698+
699+ response : null ,
700+ response_headers : null ,
701+ } ,
702+ } ;
703+ tabs . push ( t ) ;
704+ setTabs ( tabs ) ;
705+
706+ setActiveTab ( item . id ) ;
707+ }
629708 // toggleField(item.id, "open", !item.open);
630709 } }
631710 onMouseEnter = { ( e ) => {
0 commit comments