forked from extern/bruno
feat: refactored run single request events
This commit is contained in:
parent
cee8073bb7
commit
e6c3a5af4c
@ -26,7 +26,7 @@ const VariablesTable = ({ variables, collectionVariables }) => {
|
|||||||
<div className='variable-value pl-2 whitespace-normal text-left flex-grow'>{variable.value}</div>
|
<div className='variable-value pl-2 whitespace-normal text-left flex-grow'>{variable.value}</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}) : null}
|
}) : <small>No env variables found</small>}
|
||||||
|
|
||||||
<div className='mt-2 font-medium'>Collection Variables</div>
|
<div className='mt-2 font-medium'>Collection Variables</div>
|
||||||
{(collectionVars && collectionVars.length) ? collectionVars.map((variable) => {
|
{(collectionVars && collectionVars.length) ? collectionVars.map((variable) => {
|
||||||
@ -36,7 +36,7 @@ const VariablesTable = ({ variables, collectionVariables }) => {
|
|||||||
<div className='variable-value pl-2 whitespace-normal text-left flex-grow'>{variable.value}</div>
|
<div className='variable-value pl-2 whitespace-normal text-left flex-grow'>{variable.value}</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}) : null}
|
}) : <small>No collection variables found</small>}
|
||||||
</div>
|
</div>
|
||||||
</StyledWrapper>
|
</StyledWrapper>
|
||||||
);
|
);
|
||||||
|
@ -14,6 +14,7 @@ const VariablesView = ({collection}) => {
|
|||||||
const environment = findEnvironmentInCollection(collection, collection.activeEnvironmentUid);
|
const environment = findEnvironmentInCollection(collection, collection.activeEnvironmentUid);
|
||||||
const variables = get(environment, 'variables', []);
|
const variables = get(environment, 'variables', []);
|
||||||
const enabledVariables = filter(variables, (variable) => variable.enabled);
|
const enabledVariables = filter(variables, (variable) => variable.enabled);
|
||||||
|
const showVariablesTable = enabledVariables.length > 0 || (collection.collectionVariables && Object.keys(collection.collectionVariables).length > 0);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledWrapper
|
<StyledWrapper
|
||||||
@ -34,7 +35,12 @@ const VariablesView = ({collection}) => {
|
|||||||
handleClose={() => setPopOverOpen(false)}
|
handleClose={() => setPopOverOpen(false)}
|
||||||
>
|
>
|
||||||
<div className="px-2 py-1">
|
<div className="px-2 py-1">
|
||||||
{(enabledVariables && enabledVariables.length) ? <VariablesTable variables={enabledVariables} collectionVariables={collection.collectionVariables}/> : 'No variables found'}
|
{showVariablesTable ? (
|
||||||
|
<VariablesTable
|
||||||
|
variables={enabledVariables}
|
||||||
|
collectionVariables={collection.collectionVariables}
|
||||||
|
/>
|
||||||
|
) : 'No variables found'}
|
||||||
</div>
|
</div>
|
||||||
</PopOver>
|
</PopOver>
|
||||||
)}
|
)}
|
||||||
|
@ -7,12 +7,9 @@ import {
|
|||||||
collectionUnlinkFileEvent,
|
collectionUnlinkFileEvent,
|
||||||
collectionUnlinkDirectoryEvent,
|
collectionUnlinkDirectoryEvent,
|
||||||
collectionUnlinkEnvFileEvent,
|
collectionUnlinkEnvFileEvent,
|
||||||
requestSentEvent,
|
|
||||||
requestQueuedEvent,
|
|
||||||
testResultsEvent,
|
|
||||||
assertionResultsEvent,
|
|
||||||
scriptEnvironmentUpdateEvent,
|
scriptEnvironmentUpdateEvent,
|
||||||
collectionRenamedEvent,
|
collectionRenamedEvent,
|
||||||
|
runRequestEvent,
|
||||||
runFolderEvent
|
runFolderEvent
|
||||||
} from 'providers/ReduxStore/slices/collections';
|
} from 'providers/ReduxStore/slices/collections';
|
||||||
import toast from 'react-hot-toast';
|
import toast from 'react-hot-toast';
|
||||||
@ -96,26 +93,10 @@ const useCollectionTreeSync = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const _httpRequestSent = (val) => {
|
|
||||||
dispatch(requestSentEvent(val));
|
|
||||||
};
|
|
||||||
|
|
||||||
const _scriptEnvironmentUpdate = (val) => {
|
const _scriptEnvironmentUpdate = (val) => {
|
||||||
dispatch(scriptEnvironmentUpdateEvent(val));
|
dispatch(scriptEnvironmentUpdateEvent(val));
|
||||||
};
|
};
|
||||||
|
|
||||||
const _httpRequestQueued = (val) => {
|
|
||||||
dispatch(requestQueuedEvent(val));
|
|
||||||
};
|
|
||||||
|
|
||||||
const _testResults = (val) => {
|
|
||||||
dispatch(testResultsEvent(val));
|
|
||||||
};
|
|
||||||
|
|
||||||
const _assertionResults = (val) => {
|
|
||||||
dispatch(assertionResultsEvent(val));
|
|
||||||
};
|
|
||||||
|
|
||||||
const _collectionRenamed = (val) => {
|
const _collectionRenamed = (val) => {
|
||||||
dispatch(collectionRenamedEvent(val));
|
dispatch(collectionRenamedEvent(val));
|
||||||
};
|
};
|
||||||
@ -124,19 +105,20 @@ const useCollectionTreeSync = () => {
|
|||||||
dispatch(runFolderEvent(val));
|
dispatch(runFolderEvent(val));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const _runRequestEvent = (val) => {
|
||||||
|
dispatch(runRequestEvent(val));
|
||||||
|
};
|
||||||
|
|
||||||
ipcRenderer.invoke('renderer:ready');
|
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);
|
||||||
const removeListener4 = ipcRenderer.on('main:display-error', _displayError);
|
const removeListener4 = ipcRenderer.on('main:display-error', _displayError);
|
||||||
const removeListener5 = ipcRenderer.on('main:http-request-sent', _httpRequestSent);
|
const removeListener5 = ipcRenderer.on('main:script-environment-update', _scriptEnvironmentUpdate);
|
||||||
const removeListener6 = ipcRenderer.on('main:script-environment-update', _scriptEnvironmentUpdate);
|
const removeListener6 = ipcRenderer.on('main:collection-renamed', _collectionRenamed);
|
||||||
const removeListener7 = ipcRenderer.on('main:http-request-queued', _httpRequestQueued);
|
const removeListener7 = ipcRenderer.on('main:run-folder-event', _runFolderEvent);
|
||||||
const removeListener8 = ipcRenderer.on('main:test-results', _testResults);
|
const removeListener8 = ipcRenderer.on('main:run-request-event', _runRequestEvent);
|
||||||
const removeListener9 = ipcRenderer.on('main:assertion-results', _assertionResults);
|
|
||||||
const removeListener10 = ipcRenderer.on('main:collection-renamed', _collectionRenamed);
|
|
||||||
const removeListener11 = ipcRenderer.on('main:run-folder-event', _runFolderEvent);
|
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
removeListener1();
|
removeListener1();
|
||||||
@ -147,9 +129,6 @@ const useCollectionTreeSync = () => {
|
|||||||
removeListener6();
|
removeListener6();
|
||||||
removeListener7();
|
removeListener7();
|
||||||
removeListener8();
|
removeListener8();
|
||||||
removeListener9();
|
|
||||||
removeListener10();
|
|
||||||
removeListener11();
|
|
||||||
};
|
};
|
||||||
}, [isElectron]);
|
}, [isElectron]);
|
||||||
};
|
};
|
||||||
|
@ -156,32 +156,6 @@ export const collectionsSlice = createSlice({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
requestSentEvent: (state, action) => {
|
|
||||||
const { itemUid, collectionUid, cancelTokenUid, requestSent } = action.payload;
|
|
||||||
const collection = findCollectionByUid(state.collections, collectionUid);
|
|
||||||
|
|
||||||
if (collection) {
|
|
||||||
const item = findItemInCollection(collection, itemUid);
|
|
||||||
if (item) {
|
|
||||||
item.requestSent = requestSent
|
|
||||||
item.response = item.response || {};
|
|
||||||
item.requestState = 'sending';
|
|
||||||
item.cancelTokenUid = cancelTokenUid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
requestQueuedEvent: (state, action) => {
|
|
||||||
const { itemUid, collectionUid, cancelTokenUid } = action.payload;
|
|
||||||
const collection = findCollectionByUid(state.collections, collectionUid);
|
|
||||||
|
|
||||||
if (collection) {
|
|
||||||
const item = findItemInCollection(collection, itemUid);
|
|
||||||
if (item) {
|
|
||||||
item.requestState = 'queued';
|
|
||||||
item.cancelTokenUid = cancelTokenUid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
scriptEnvironmentUpdateEvent: (state, action) => {
|
scriptEnvironmentUpdateEvent: (state, action) => {
|
||||||
const { collectionUid, envVariables, collectionVariables } = action.payload;
|
const { collectionUid, envVariables, collectionVariables } = action.payload;
|
||||||
const collection = findCollectionByUid(state.collections, collectionUid);
|
const collection = findCollectionByUid(state.collections, collectionUid);
|
||||||
@ -1010,31 +984,6 @@ export const collectionsSlice = createSlice({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
testResultsEvent: (state, action) => {
|
|
||||||
const { itemUid, collectionUid, results } = action.payload;
|
|
||||||
const collection = findCollectionByUid(state.collections, collectionUid);
|
|
||||||
|
|
||||||
if (collection) {
|
|
||||||
const item = findItemInCollection(collection, itemUid);
|
|
||||||
|
|
||||||
if (item) {
|
|
||||||
item.testResults = results;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
assertionResultsEvent: (state, action) => {
|
|
||||||
const { itemUid, collectionUid, results } = action.payload;
|
|
||||||
const collection = findCollectionByUid(state.collections, collectionUid);
|
|
||||||
console.log(results);
|
|
||||||
|
|
||||||
if (collection) {
|
|
||||||
const item = findItemInCollection(collection, itemUid);
|
|
||||||
|
|
||||||
if (item) {
|
|
||||||
item.assertionResults = results;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
collectionRenamedEvent: (state, action) => {
|
collectionRenamedEvent: (state, action) => {
|
||||||
const { collectionPathname, newName } = action.payload;
|
const { collectionPathname, newName } = action.payload;
|
||||||
const collection = findCollectionByPathname(state.collections, collectionPathname);
|
const collection = findCollectionByPathname(state.collections, collectionPathname);
|
||||||
@ -1075,6 +1024,45 @@ export const collectionsSlice = createSlice({
|
|||||||
collection.runnerResult = null;
|
collection.runnerResult = null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
runRequestEvent: (state, action) => {
|
||||||
|
const { itemUid, collectionUid, type, requestUid } = action.payload;
|
||||||
|
const collection = findCollectionByUid(state.collections, collectionUid);
|
||||||
|
|
||||||
|
if (collection) {
|
||||||
|
const item = findItemInCollection(collection, itemUid);
|
||||||
|
if (item) {
|
||||||
|
if(type === 'request-queued') {
|
||||||
|
const { cancelTokenUid } = action.payload;
|
||||||
|
item.requestUid = requestUid;
|
||||||
|
item.requestState = 'queued';
|
||||||
|
item.response = null;
|
||||||
|
item.cancelTokenUid = cancelTokenUid;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type === 'request-sent') {
|
||||||
|
const { cancelTokenUid, requestSent } = action.payload;
|
||||||
|
item.requestSent = requestSent;
|
||||||
|
|
||||||
|
// sometimes the response is received before the request-sent event arrives
|
||||||
|
if(item.requestUid === requestUid && item.requestState === 'queued') {
|
||||||
|
item.requestUid = requestUid;
|
||||||
|
item.requestState = 'sending';
|
||||||
|
item.cancelTokenUid = cancelTokenUid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type === 'assertion-results') {
|
||||||
|
const { results } = action.payload;
|
||||||
|
item.assertionResults = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type === 'test-results') {
|
||||||
|
const { results } = action.payload;
|
||||||
|
item.testResults = results;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
runFolderEvent: (state, action) => {
|
runFolderEvent: (state, action) => {
|
||||||
const { collectionUid, folderUid, itemUid, type, isRecursive, error } = action.payload;
|
const { collectionUid, folderUid, itemUid, type, isRecursive, error } = action.payload;
|
||||||
const collection = findCollectionByUid(state.collections, collectionUid);
|
const collection = findCollectionByUid(state.collections, collectionUid);
|
||||||
@ -1162,8 +1150,6 @@ export const {
|
|||||||
deleteItem,
|
deleteItem,
|
||||||
renameItem,
|
renameItem,
|
||||||
cloneItem,
|
cloneItem,
|
||||||
requestSentEvent,
|
|
||||||
requestQueuedEvent,
|
|
||||||
scriptEnvironmentUpdateEvent,
|
scriptEnvironmentUpdateEvent,
|
||||||
requestCancelled,
|
requestCancelled,
|
||||||
responseReceived,
|
responseReceived,
|
||||||
@ -1204,13 +1190,12 @@ export const {
|
|||||||
collectionUnlinkFileEvent,
|
collectionUnlinkFileEvent,
|
||||||
collectionUnlinkDirectoryEvent,
|
collectionUnlinkDirectoryEvent,
|
||||||
collectionAddEnvFileEvent,
|
collectionAddEnvFileEvent,
|
||||||
testResultsEvent,
|
|
||||||
assertionResultsEvent,
|
|
||||||
collectionRenamedEvent,
|
collectionRenamedEvent,
|
||||||
toggleRunnerView,
|
toggleRunnerView,
|
||||||
showRunnerView,
|
showRunnerView,
|
||||||
hideRunnerView,
|
hideRunnerView,
|
||||||
resetRunResults,
|
resetRunResults,
|
||||||
|
runRequestEvent,
|
||||||
runFolderEvent,
|
runFolderEvent,
|
||||||
closeCollectionRunner
|
closeCollectionRunner
|
||||||
} = collectionsSlice.actions;
|
} = collectionsSlice.actions;
|
||||||
|
@ -76,8 +76,11 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
// handler for sending http request
|
// handler for sending http request
|
||||||
ipcMain.handle('send-http-request', async (event, item, collectionUid, collectionPath, environment, collectionVariables) => {
|
ipcMain.handle('send-http-request', async (event, item, collectionUid, collectionPath, environment, collectionVariables) => {
|
||||||
const cancelTokenUid = uuid();
|
const cancelTokenUid = uuid();
|
||||||
|
const requestUid = uuid();
|
||||||
|
|
||||||
mainWindow.webContents.send('main:http-request-queued', {
|
mainWindow.webContents.send('main:run-request-event', {
|
||||||
|
type: 'request-queued',
|
||||||
|
requestUid,
|
||||||
collectionUid,
|
collectionUid,
|
||||||
itemUid: item.uid,
|
itemUid: item.uid,
|
||||||
cancelTokenUid
|
cancelTokenUid
|
||||||
@ -112,6 +115,7 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
mainWindow.webContents.send('main:script-environment-update', {
|
mainWindow.webContents.send('main:script-environment-update', {
|
||||||
envVariables: result.envVariables,
|
envVariables: result.envVariables,
|
||||||
collectionVariables: result.collectionVariables,
|
collectionVariables: result.collectionVariables,
|
||||||
|
requestUid,
|
||||||
collectionUid
|
collectionUid
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -125,6 +129,7 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
mainWindow.webContents.send('main:script-environment-update', {
|
mainWindow.webContents.send('main:script-environment-update', {
|
||||||
envVariables: result.envVariables,
|
envVariables: result.envVariables,
|
||||||
collectionVariables: result.collectionVariables,
|
collectionVariables: result.collectionVariables,
|
||||||
|
requestUid,
|
||||||
collectionUid
|
collectionUid
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -139,7 +144,8 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
// todo:
|
// todo:
|
||||||
// i have no clue why electron can't send the request object
|
// i have no clue why electron can't send the request object
|
||||||
// without safeParseJSON(safeStringifyJSON(request.data))
|
// without safeParseJSON(safeStringifyJSON(request.data))
|
||||||
mainWindow.webContents.send('main:http-request-sent', {
|
mainWindow.webContents.send('main:run-request-event', {
|
||||||
|
type: 'request-sent',
|
||||||
requestSent: {
|
requestSent: {
|
||||||
url: request.url,
|
url: request.url,
|
||||||
method: request.method,
|
method: request.method,
|
||||||
@ -148,6 +154,7 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
},
|
},
|
||||||
collectionUid,
|
collectionUid,
|
||||||
itemUid: item.uid,
|
itemUid: item.uid,
|
||||||
|
requestUid,
|
||||||
cancelTokenUid
|
cancelTokenUid
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -188,6 +195,7 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
mainWindow.webContents.send('main:script-environment-update', {
|
mainWindow.webContents.send('main:script-environment-update', {
|
||||||
envVariables: result.envVariables,
|
envVariables: result.envVariables,
|
||||||
collectionVariables: result.collectionVariables,
|
collectionVariables: result.collectionVariables,
|
||||||
|
requestUid,
|
||||||
collectionUid
|
collectionUid
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -201,6 +209,7 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
mainWindow.webContents.send('main:script-environment-update', {
|
mainWindow.webContents.send('main:script-environment-update', {
|
||||||
envVariables: result.envVariables,
|
envVariables: result.envVariables,
|
||||||
collectionVariables: result.collectionVariables,
|
collectionVariables: result.collectionVariables,
|
||||||
|
requestUid,
|
||||||
collectionUid
|
collectionUid
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -210,9 +219,11 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
const assertRuntime = new AssertRuntime();
|
const assertRuntime = new AssertRuntime();
|
||||||
const results = assertRuntime.runAssertions(assertions, request, response, envVars, collectionVariables, collectionPath);
|
const results = assertRuntime.runAssertions(assertions, request, response, envVars, collectionVariables, collectionPath);
|
||||||
|
|
||||||
mainWindow.webContents.send('main:assertion-results', {
|
mainWindow.webContents.send('main:run-request-event', {
|
||||||
|
type: 'assertion-results',
|
||||||
results: results,
|
results: results,
|
||||||
itemUid: item.uid,
|
itemUid: item.uid,
|
||||||
|
requestUid,
|
||||||
collectionUid
|
collectionUid
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -221,9 +232,11 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
const testRuntime = new TestRuntime();
|
const testRuntime = new TestRuntime();
|
||||||
const testResults = testRuntime.runTests(testFile, request, response, envVars, collectionVariables, collectionPath);
|
const testResults = testRuntime.runTests(testFile, request, response, envVars, collectionVariables, collectionPath);
|
||||||
|
|
||||||
mainWindow.webContents.send('main:test-results', {
|
mainWindow.webContents.send('main:run-request-event', {
|
||||||
|
type: 'test-results',
|
||||||
results: testResults.results,
|
results: testResults.results,
|
||||||
itemUid: item.uid,
|
itemUid: item.uid,
|
||||||
|
requestUid,
|
||||||
collectionUid
|
collectionUid
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -253,9 +266,11 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
const assertRuntime = new AssertRuntime();
|
const assertRuntime = new AssertRuntime();
|
||||||
const results = assertRuntime.runAssertions(assertions, request, error.response, envVars, collectionVariables, collectionPath);
|
const results = assertRuntime.runAssertions(assertions, request, error.response, envVars, collectionVariables, collectionPath);
|
||||||
|
|
||||||
mainWindow.webContents.send('main:assertion-results', {
|
mainWindow.webContents.send('main:run-request-event', {
|
||||||
|
type: 'assertion-results',
|
||||||
results: results,
|
results: results,
|
||||||
itemUid: item.uid,
|
itemUid: item.uid,
|
||||||
|
requestUid,
|
||||||
collectionUid
|
collectionUid
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -264,9 +279,11 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
|
|||||||
const testRuntime = new TestRuntime();
|
const testRuntime = new TestRuntime();
|
||||||
const testResults = testRuntime.runTests(testFile, request, error.response, envVars, collectionVariables, collectionPath);
|
const testResults = testRuntime.runTests(testFile, request, error.response, envVars, collectionVariables, collectionPath);
|
||||||
|
|
||||||
mainWindow.webContents.send('main:test-results', {
|
mainWindow.webContents.send('main:run-request-event', {
|
||||||
|
type: 'test-results',
|
||||||
results: testResults.results,
|
results: testResults.results,
|
||||||
itemUid: item.uid,
|
itemUid: item.uid,
|
||||||
|
requestUid,
|
||||||
collectionUid
|
collectionUid
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user