diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/tabs.js b/packages/bruno-app/src/providers/ReduxStore/slices/tabs.js index 7b9c24e3f..afac7998a 100644 --- a/packages/bruno-app/src/providers/ReduxStore/slices/tabs.js +++ b/packages/bruno-app/src/providers/ReduxStore/slices/tabs.js @@ -104,6 +104,8 @@ export const tabsSlice = createSlice({ requestPaneHeight: null, requestPaneCollapsed: false, responsePaneCollapsed: false, + requestPaneWidthBeforeCollapse: null, + requestPaneHeightBeforeCollapse: null, requestPaneTab: requestPaneTab || defaultRequestPaneTab, responsePaneTab: 'response', responseFormat: null, @@ -133,6 +135,8 @@ export const tabsSlice = createSlice({ requestPaneHeight: null, requestPaneCollapsed: false, responsePaneCollapsed: false, + requestPaneWidthBeforeCollapse: null, + requestPaneHeightBeforeCollapse: null, requestPaneTab: requestPaneTab || defaultRequestPaneTab, responsePaneTab: 'response', responseFormat: null, @@ -379,6 +383,8 @@ export const tabsSlice = createSlice({ if (tab) { tab.requestPaneCollapsed = true; tab.responsePaneCollapsed = false; + tab.requestPaneWidthBeforeCollapse = tab.requestPaneWidth; + tab.requestPaneHeightBeforeCollapse = tab.requestPaneHeight; } }, collapseResponsePane: (state, action) => { @@ -392,18 +398,20 @@ export const tabsSlice = createSlice({ const tab = find(state.tabs, (t) => t.uid === action.payload.uid); if (tab) { tab.requestPaneCollapsed = false; - // reset so the panes return to their default size on expand - tab.requestPaneWidth = null; - tab.requestPaneHeight = null; + if (tab.requestPaneWidthBeforeCollapse != null) { + tab.requestPaneWidth = tab.requestPaneWidthBeforeCollapse; + } + if (tab.requestPaneHeightBeforeCollapse != null) { + tab.requestPaneHeight = tab.requestPaneHeightBeforeCollapse; + } + tab.requestPaneWidthBeforeCollapse = null; + tab.requestPaneHeightBeforeCollapse = null; } }, expandResponsePane: (state, action) => { const tab = find(state.tabs, (t) => t.uid === action.payload.uid); if (tab) { tab.responsePaneCollapsed = false; - // reset so the panes return to their default size on expand - tab.requestPaneWidth = null; - tab.requestPaneHeight = null; } }, reorderTabs: (state, action) => { diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/tabs.spec.js b/packages/bruno-app/src/providers/ReduxStore/slices/tabs.spec.js deleted file mode 100644 index 0979483d5..000000000 --- a/packages/bruno-app/src/providers/ReduxStore/slices/tabs.spec.js +++ /dev/null @@ -1,59 +0,0 @@ -import reducer, { - collapseRequestPane, - collapseResponsePane, - expandRequestPane, - expandResponsePane -} from './tabs'; - -const makeState = (overrides = {}) => ({ - tabs: [{ - uid: 'tab-1', - collectionUid: 'col-1', - type: 'http-request', - requestPaneWidth: 500, - requestPaneHeight: 400, - requestPaneCollapsed: false, - responsePaneCollapsed: false, - ...overrides - }], - activeTabUid: 'tab-1', - recentlyClosedTabs: [] -}); - -describe('tabs slice - collapse/expand reducers', () => { - it('collapseRequestPane flips flags and preserves stored dimensions', () => { - const next = reducer(makeState({ responsePaneCollapsed: true }), collapseRequestPane({ uid: 'tab-1' })); - - expect(next.tabs[0].requestPaneCollapsed).toBe(true); - expect(next.tabs[0].responsePaneCollapsed).toBe(false); - expect(next.tabs[0].requestPaneWidth).toBe(500); - expect(next.tabs[0].requestPaneHeight).toBe(400); - }); - - it('collapseResponsePane flips flags and preserves stored dimensions', () => { - const next = reducer(makeState({ requestPaneCollapsed: true }), collapseResponsePane({ uid: 'tab-1' })); - - expect(next.tabs[0].requestPaneCollapsed).toBe(false); - expect(next.tabs[0].responsePaneCollapsed).toBe(true); - expect(next.tabs[0].requestPaneWidth).toBe(500); - expect(next.tabs[0].requestPaneHeight).toBe(400); - }); - - it('expandRequestPane flips flag and resets stored dimensions to default', () => { - const next = reducer(makeState({ requestPaneCollapsed: true }), expandRequestPane({ uid: 'tab-1' })); - - expect(next.tabs[0].requestPaneCollapsed).toBe(false); - expect(next.tabs[0].responsePaneCollapsed).toBe(false); - expect(next.tabs[0].requestPaneWidth).toBeNull(); - expect(next.tabs[0].requestPaneHeight).toBeNull(); - }); - - it('expandResponsePane flips flag and resets stored dimensions to default', () => { - const next = reducer(makeState({ responsePaneCollapsed: true }), expandResponsePane({ uid: 'tab-1' })); - - expect(next.tabs[0].responsePaneCollapsed).toBe(false); - expect(next.tabs[0].requestPaneCollapsed).toBe(false); - expect(next.tabs[0].requestPaneWidth).toBeNull(); - expect(next.tabs[0].requestPaneHeight).toBeNull(); - }); -});