feat: snapshot issues with global tabs (#7942)

* chore: fix for sidebar state

* fix: global and sidebar state sync

* fix: re-priroritise how tab uid is synced
This commit is contained in:
Sid
2026-05-07 19:03:02 +05:30
committed by GitHub
parent f8bf1460bd
commit 415b75decb
9 changed files with 290 additions and 14 deletions

View File

@@ -64,7 +64,7 @@ const RequestTabPanel = () => {
const isVerticalLayout = preferences?.layout?.responsePaneOrientation === 'vertical';
const isConsoleOpen = useSelector((state) => state.logs.isConsoleOpen);
const isRequestTab = focusedTab && ['http-request', 'grpc-request', 'ws-request', 'graphql-request'].includes(focusedTab.type);
const isRequestTab = focusedTab && ['request', 'http-request', 'grpc-request', 'ws-request', 'graphql-request'].includes(focusedTab.type);
useKeybinding('sendRequest', (e) => {
e?.preventDefault?.();
e?.stopPropagation?.();

View File

@@ -45,7 +45,11 @@ import CollectionItemIcon from './CollectionItemIcon';
import ExampleItem from './ExampleItem';
import ExampleIcon from 'components/Icons/ExampleIcon';
import { scrollToTheActiveTab } from 'utils/tabs';
import { isTabForItemActive as isTabForItemActiveSelector, isTabForItemPresent as isTabForItemPresentSelector } from 'src/selectors/tab';
import {
getTabUidForItem as getTabUidForItemSelector,
isTabForItemActive as isTabForItemActiveSelector,
isTabForItemPresent as isTabForItemPresentSelector
} from 'src/selectors/tab';
import { isEqual } from 'lodash';
import { createEmptyStateMenuItems } from 'utils/collections/emptyStateRequest';
import { calculateDraggedItemNewPathname, getInitialExampleName, findParentItemInCollection } from 'utils/collections/index';
@@ -60,12 +64,21 @@ import useKeybinding from 'hooks/useKeybinding';
const CollectionItem = ({ item, collectionUid, collectionPathname, searchText }) => {
const { dropdownContainerRef } = useSidebarAccordion();
const _isTabForItemActiveSelector = isTabForItemActiveSelector({ itemUid: item.uid });
const selectorInput = {
itemUid: item.uid,
itemPathname: item.pathname,
collectionUid
};
const _isTabForItemActiveSelector = isTabForItemActiveSelector(selectorInput);
const isTabForItemActive = useSelector(_isTabForItemActiveSelector, isEqual);
const _isTabForItemPresentSelector = isTabForItemPresentSelector({ itemUid: item.uid });
const _isTabForItemPresentSelector = isTabForItemPresentSelector(selectorInput);
const isTabForItemPresent = useSelector(_isTabForItemPresentSelector, isEqual);
const _tabUidForItemSelector = getTabUidForItemSelector(selectorInput);
const tabUidForItem = useSelector(_tabUidForItemSelector, isEqual);
const isSidebarDragging = useSelector((state) => state.app.isDragging);
const collection = useSelector((state) => state.collections.collections?.find((c) => c.uid === collectionUid));
const { hasCopiedItems } = useSelector((state) => state.app.clipboard);
@@ -242,7 +255,7 @@ const CollectionItem = ({ item, collectionUid, collectionPathname, searchText })
if (isTabForItemPresent) {
dispatch(
focusTab({
uid: item.uid
uid: tabUidForItem || item.uid
})
);
return;
@@ -468,7 +481,7 @@ const CollectionItem = ({ item, collectionUid, collectionPathname, searchText })
}
const handleDoubleClick = (event) => {
dispatch(makeTabPermanent({ uid: item.uid }));
dispatch(makeTabPermanent({ uid: tabUidForItem || item.uid }));
};
// Sort items by their "seq" property.
@@ -547,7 +560,7 @@ const CollectionItem = ({ item, collectionUid, collectionPathname, searchText })
const viewFolderSettings = () => {
if (isItemAFolder(item)) {
if (isTabForItemPresent) {
dispatch(focusTab({ uid: item.uid }));
dispatch(focusTab({ uid: tabUidForItem || item.uid }));
return;
}
dispatch(