fix: refactor default tab selection logic for correct tab persistance (#6473)

This commit is contained in:
Abhishek S Lal
2025-12-22 13:40:51 +05:30
committed by GitHub
parent 6f2804ea0f
commit 3552801ca5
2 changed files with 11 additions and 9 deletions

View File

@@ -1,4 +1,4 @@
import React, { useEffect, useRef, useCallback, useMemo } from 'react';
import React, { useRef, useCallback, useMemo } from 'react';
import classnames from 'classnames';
import { useSelector, useDispatch } from 'react-redux';
import { find, get } from 'lodash';
@@ -53,7 +53,6 @@ const HttpRequestPane = ({ item, collection }) => {
const activeTabUid = useSelector((state) => state.tabs.activeTabUid);
const rightContentRef = useRef(null);
const initialAutoSelectDone = useRef(false);
const focusedTab = find(tabs, (t) => t.uid === activeTabUid);
const requestPaneTab = focusedTab?.requestPaneTab;
@@ -117,13 +116,6 @@ const HttpRequestPane = ({ item, collection }) => {
return Component ? <Component item={item} collection={collection} /> : <div className="mt-4">404 | Not found</div>;
}, [requestPaneTab, item, collection]);
useEffect(() => {
if (!initialAutoSelectDone.current && activeCounts.params === 0 && body.mode !== 'none') {
selectTab('body');
}
initialAutoSelectDone.current = true;
}, [activeCounts.params, body.mode, selectTab]);
if (!activeTabUid || !focusedTab?.uid || !requestPaneTab) {
return <div className="pb-4 px-4">An error occurred!</div>;
}

View File

@@ -1060,6 +1060,16 @@ export const hasExampleChanges = (_item, exampleUid) => {
export const getDefaultRequestPaneTab = (item) => {
if (item.type === 'http-request') {
// If no params are enabled and body mode is set, default to 'body' tab
// This provides better UX for POST/PUT requests with a body
const request = item.draft?.request || item.request;
const params = request?.params || [];
const bodyMode = request?.body?.mode;
const hasEnabledParams = params.some((p) => p.enabled);
if (!hasEnabledParams && bodyMode && bodyMode !== 'none') {
return 'body';
}
return 'params';
}