mirror of
https://github.com/usebruno/bruno.git
synced 2025-06-23 13:31:43 +02:00
feat(#111): Automaticly open a newly created request
This commit is contained in:
parent
90fedc8ec6
commit
51cb930b6a
@ -1,5 +1,5 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { useDispatch } from 'react-redux';
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
import {
|
import {
|
||||||
collectionAddDirectoryEvent,
|
collectionAddDirectoryEvent,
|
||||||
collectionAddFileEvent,
|
collectionAddFileEvent,
|
||||||
@ -17,9 +17,15 @@ import {
|
|||||||
import toast from 'react-hot-toast';
|
import toast from 'react-hot-toast';
|
||||||
import { openCollectionEvent, collectionAddEnvFileEvent } from 'providers/ReduxStore/slices/collections/actions';
|
import { openCollectionEvent, collectionAddEnvFileEvent } from 'providers/ReduxStore/slices/collections/actions';
|
||||||
import { isElectron } from 'utils/common/platform';
|
import { isElectron } from 'utils/common/platform';
|
||||||
|
import { updateNewRequest } from 'providers/ReduxStore/slices/collections/index';
|
||||||
|
import { addTab } from 'providers/ReduxStore/slices/tabs';
|
||||||
|
import { getDefaultRequestPaneTab } from 'utils/collections/index';
|
||||||
|
import { hideHomePage } from 'providers/ReduxStore/slices/app';
|
||||||
|
|
||||||
const useCollectionTreeSync = () => {
|
const useCollectionTreeSync = () => {
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
|
const tabs = useSelector((state) => state.tabs.tabs);
|
||||||
|
const newRequestName = useSelector((state) => state.collections.newRequestName);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!isElectron()) {
|
if (!isElectron()) {
|
||||||
@ -50,6 +56,22 @@ const useCollectionTreeSync = () => {
|
|||||||
file: val
|
file: val
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Remove the newRequestName so no random stuff happens
|
||||||
|
dispatch(
|
||||||
|
updateNewRequest({ newRequestName: null })
|
||||||
|
);
|
||||||
|
// When the request was just created open it in a new tab
|
||||||
|
if (newRequestName === val.data.name) {
|
||||||
|
dispatch(
|
||||||
|
addTab({
|
||||||
|
uid: val.data.uid,
|
||||||
|
collectionUid: val.meta.collectionUid,
|
||||||
|
requestPaneTab: getDefaultRequestPaneTab(val.data)
|
||||||
|
})
|
||||||
|
);
|
||||||
|
dispatch(hideHomePage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (type === 'change') {
|
if (type === 'change') {
|
||||||
dispatch(
|
dispatch(
|
||||||
@ -115,8 +137,6 @@ const useCollectionTreeSync = () => {
|
|||||||
dispatch(runRequestEvent(val));
|
dispatch(runRequestEvent(val));
|
||||||
};
|
};
|
||||||
|
|
||||||
ipcRenderer.invoke('renderer:ready');
|
|
||||||
|
|
||||||
const removeListener1 = ipcRenderer.on('main:collection-opened', _openCollection);
|
const removeListener1 = ipcRenderer.on('main:collection-opened', _openCollection);
|
||||||
const removeListener2 = ipcRenderer.on('main:collection-tree-updated', _collectionTreeUpdated);
|
const removeListener2 = ipcRenderer.on('main:collection-tree-updated', _collectionTreeUpdated);
|
||||||
const removeListener3 = ipcRenderer.on('main:collection-already-opened', _collectionAlreadyOpened);
|
const removeListener3 = ipcRenderer.on('main:collection-already-opened', _collectionAlreadyOpened);
|
||||||
@ -144,7 +164,16 @@ const useCollectionTreeSync = () => {
|
|||||||
removeListener10();
|
removeListener10();
|
||||||
removeListener11();
|
removeListener11();
|
||||||
};
|
};
|
||||||
}, [isElectron]);
|
}, [isElectron, tabs, newRequestName]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!isElectron()) {
|
||||||
|
return () => {};
|
||||||
|
}
|
||||||
|
|
||||||
|
const { ipcRenderer } = window;
|
||||||
|
ipcRenderer.invoke('renderer:ready');
|
||||||
|
}, []);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default useCollectionTreeSync;
|
export default useCollectionTreeSync;
|
||||||
|
@ -39,7 +39,8 @@ import {
|
|||||||
renameCollection as _renameCollection,
|
renameCollection as _renameCollection,
|
||||||
removeCollection as _removeCollection,
|
removeCollection as _removeCollection,
|
||||||
sortCollections as _sortCollections,
|
sortCollections as _sortCollections,
|
||||||
collectionAddEnvFileEvent as _collectionAddEnvFileEvent
|
collectionAddEnvFileEvent as _collectionAddEnvFileEvent,
|
||||||
|
updateNewRequest
|
||||||
} from './index';
|
} from './index';
|
||||||
|
|
||||||
import { closeAllCollectionTabs } from 'providers/ReduxStore/slices/tabs';
|
import { closeAllCollectionTabs } from 'providers/ReduxStore/slices/tabs';
|
||||||
@ -595,6 +596,8 @@ export const newHttpRequest = (params) => (dispatch, getState) => {
|
|||||||
const { ipcRenderer } = window;
|
const { ipcRenderer } = window;
|
||||||
|
|
||||||
ipcRenderer.invoke('renderer:new-request', fullName, item).then(resolve).catch(reject);
|
ipcRenderer.invoke('renderer:new-request', fullName, item).then(resolve).catch(reject);
|
||||||
|
// Add the new request name here so it can be opened in a new tab in useCollectionTreeSync.js
|
||||||
|
dispatch(updateNewRequest({ newRequestName: item.name }))
|
||||||
} else {
|
} else {
|
||||||
return reject(new Error('Duplicate request names are not allowed under the same folder'));
|
return reject(new Error('Duplicate request names are not allowed under the same folder'));
|
||||||
}
|
}
|
||||||
@ -612,6 +615,8 @@ export const newHttpRequest = (params) => (dispatch, getState) => {
|
|||||||
const { ipcRenderer } = window;
|
const { ipcRenderer } = window;
|
||||||
|
|
||||||
ipcRenderer.invoke('renderer:new-request', fullName, item).then(resolve).catch(reject);
|
ipcRenderer.invoke('renderer:new-request', fullName, item).then(resolve).catch(reject);
|
||||||
|
// Add the new request name here so it can be opened in a new tab in useCollectionTreeSync.js
|
||||||
|
dispatch(updateNewRequest({ newRequestName: item.name }))
|
||||||
} else {
|
} else {
|
||||||
return reject(new Error('Duplicate request names are not allowed under the same folder'));
|
return reject(new Error('Duplicate request names are not allowed under the same folder'));
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,8 @@ const PATH_SEPARATOR = path.sep;
|
|||||||
|
|
||||||
const initialState = {
|
const initialState = {
|
||||||
collections: [],
|
collections: [],
|
||||||
collectionSortOrder: 'default'
|
collectionSortOrder: 'default',
|
||||||
|
newRequestName: null
|
||||||
};
|
};
|
||||||
|
|
||||||
export const collectionsSlice = createSlice({
|
export const collectionsSlice = createSlice({
|
||||||
@ -129,6 +130,10 @@ export const collectionsSlice = createSlice({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
updateNewRequest: (state, action) => {
|
||||||
|
const { newRequestName } = action.payload;
|
||||||
|
state.newRequestName = newRequestName;
|
||||||
|
},
|
||||||
newItem: (state, action) => {
|
newItem: (state, action) => {
|
||||||
const collection = findCollectionByUid(state.collections, action.payload.collectionUid);
|
const collection = findCollectionByUid(state.collections, action.payload.collectionUid);
|
||||||
|
|
||||||
@ -1200,6 +1205,7 @@ export const {
|
|||||||
collectionUnlinkEnvFileEvent,
|
collectionUnlinkEnvFileEvent,
|
||||||
saveEnvironment,
|
saveEnvironment,
|
||||||
selectEnvironment,
|
selectEnvironment,
|
||||||
|
updateNewRequest,
|
||||||
newItem,
|
newItem,
|
||||||
deleteItem,
|
deleteItem,
|
||||||
renameItem,
|
renameItem,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user