feat: refactored run single request events

This commit is contained in:
Anoop M D 2023-09-13 23:37:21 +05:30
parent cee8073bb7
commit e6c3a5af4c
5 changed files with 81 additions and 94 deletions

View File

@ -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>
); );

View File

@ -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>
)} )}

View File

@ -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]);
}; };

View File

@ -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;

View File

@ -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
}); });