@@ -395,38 +395,58 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
395395 } ,
396396 async open ( tab : string ) {
397397 const current = store . sessionTabs [ sessionKey ] ?? { all : [ ] }
398- if ( tab !== "review" ) {
399- if ( ! current . all . includes ( tab ) ) {
400- if ( ! store . sessionTabs [ sessionKey ] ) {
401- setStore ( "sessionTabs" , sessionKey , { all : [ tab ] , active : tab } )
402- } else {
403- setStore ( "sessionTabs" , sessionKey , "all" , [ ...current . all , tab ] )
404- setStore ( "sessionTabs" , sessionKey , "active" , tab )
405- }
398+
399+ if ( tab === "review" ) {
400+ if ( ! store . sessionTabs [ sessionKey ] ) {
401+ setStore ( "sessionTabs" , sessionKey , { all : [ ] , active : tab } )
406402 return
407403 }
404+ setStore ( "sessionTabs" , sessionKey , "active" , tab )
405+ return
408406 }
409- if ( ! store . sessionTabs [ sessionKey ] ) {
410- setStore ( "sessionTabs" , sessionKey , { all : [ ] , active : tab } )
411- } else {
407+
408+ if ( tab === "context" ) {
409+ const all = [ tab , ...current . all . filter ( ( x ) => x !== tab ) ]
410+ if ( ! store . sessionTabs [ sessionKey ] ) {
411+ setStore ( "sessionTabs" , sessionKey , { all, active : tab } )
412+ return
413+ }
414+ setStore ( "sessionTabs" , sessionKey , "all" , all )
412415 setStore ( "sessionTabs" , sessionKey , "active" , tab )
416+ return
413417 }
418+
419+ if ( ! current . all . includes ( tab ) ) {
420+ if ( ! store . sessionTabs [ sessionKey ] ) {
421+ setStore ( "sessionTabs" , sessionKey , { all : [ tab ] , active : tab } )
422+ return
423+ }
424+ setStore ( "sessionTabs" , sessionKey , "all" , [ ...current . all , tab ] )
425+ setStore ( "sessionTabs" , sessionKey , "active" , tab )
426+ return
427+ }
428+
429+ if ( ! store . sessionTabs [ sessionKey ] ) {
430+ setStore ( "sessionTabs" , sessionKey , { all : current . all , active : tab } )
431+ return
432+ }
433+ setStore ( "sessionTabs" , sessionKey , "active" , tab )
414434 } ,
415435 close ( tab : string ) {
416436 const current = store . sessionTabs [ sessionKey ]
417437 if ( ! current ) return
438+
439+ const all = current . all . filter ( ( x ) => x !== tab )
418440 batch ( ( ) => {
419- setStore (
420- "sessionTabs" ,
421- sessionKey ,
422- "all" ,
423- current . all . filter ( ( x ) => x !== tab ) ,
424- )
425- if ( current . active === tab ) {
426- const index = current . all . findIndex ( ( f ) => f === tab )
427- const previous = current . all [ Math . max ( 0 , index - 1 ) ]
428- setStore ( "sessionTabs" , sessionKey , "active" , previous )
441+ setStore ( "sessionTabs" , sessionKey , "all" , all )
442+ if ( current . active !== tab ) return
443+
444+ const index = current . all . findIndex ( ( f ) => f === tab )
445+ if ( index <= 0 ) {
446+ setStore ( "sessionTabs" , sessionKey , "active" , undefined )
447+ return
429448 }
449+ setStore ( "sessionTabs" , sessionKey , "active" , current . all [ index - 1 ] )
430450 } )
431451 } ,
432452 move ( tab : string , to : number ) {
0 commit comments