From c77094600d9cc183ffee4df6edc35ecc7925833d Mon Sep 17 00:00:00 2001 From: Ricky Chandra Date: Mon, 21 Jan 2019 23:29:30 +0700 Subject: [PATCH] Add clear active workspace's all responses (#1317) --- .../modals/workspace-settings-modal.js | 12 +++++ .../insomnia-app/app/ui/components/wrapper.js | 50 ++++++++++++------- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/packages/insomnia-app/app/ui/components/modals/workspace-settings-modal.js b/packages/insomnia-app/app/ui/components/modals/workspace-settings-modal.js index c0c5c64a3d..72e873c22a 100644 --- a/packages/insomnia-app/app/ui/components/modals/workspace-settings-modal.js +++ b/packages/insomnia-app/app/ui/components/modals/workspace-settings-modal.js @@ -27,6 +27,7 @@ type Props = { handleGetRenderContext: Function, handleRemoveWorkspace: Function, handleDuplicateWorkspace: Function, + handleClearAllResponses: Function, }; type State = { @@ -78,6 +79,11 @@ class WorkspaceSettingsModal extends React.PureComponent { this.hide(); } + _handleClearAllResponses() { + this.props.handleClearAllResponses(); + this.hide(); + } + _handleDuplicateWorkspace() { this.props.handleDuplicateWorkspace(() => { this.hide(); @@ -331,6 +337,12 @@ class WorkspaceSettingsModal extends React.PureComponent { className="width-auto btn btn--clicky inline-block space-left"> Duplicate + + Clear All Responses + diff --git a/packages/insomnia-app/app/ui/components/wrapper.js b/packages/insomnia-app/app/ui/components/wrapper.js index c77a5c2738..ee82539892 100644 --- a/packages/insomnia-app/app/ui/components/wrapper.js +++ b/packages/insomnia-app/app/ui/components/wrapper.js @@ -43,6 +43,7 @@ import WorkspaceEnvironmentsEditModal from './modals/workspace-environments-edit import WorkspaceSettingsModal from './modals/workspace-settings-modal'; import WorkspaceShareSettingsModal from './modals/workspace-share-settings-modal'; import CodePromptModal from './modals/code-prompt-modal'; +import * as db from '../../common/database'; import * as models from '../../models/index'; import * as importers from 'insomnia-importers'; import type { CookieJar } from '../../models/cookie-jar'; @@ -304,6 +305,14 @@ class Wrapper extends React.PureComponent { await models.workspace.remove(activeWorkspace); } + async _handleActiveWorkspaceClearAllResponses(): Promise { + const docs = await db.withDescendants(this.props.activeWorkspace, models.request.type); + const requests = docs.filter(doc => doc.type === models.request.type); + for (const req of requests) { + await models.response.removeForRequest(req._id); + } + } + _handleSendRequestWithActiveEnvironment(): void { const { activeRequest, activeEnvironment, handleSendRequestWithEnvironment } = this.props; const activeRequestId = activeRequest ? activeRequest._id : 'n/a'; @@ -320,7 +329,11 @@ class Wrapper extends React.PureComponent { const activeRequestId = activeRequest ? activeRequest._id : 'n/a'; const activeEnvironmentId = activeEnvironment ? activeEnvironment._id : 'n/a'; - await handleSendAndDownloadRequestWithEnvironment(activeRequestId, activeEnvironmentId, filename); + await handleSendAndDownloadRequestWithEnvironment( + activeRequestId, + activeEnvironmentId, + filename, + ); } _handleSetPreviewMode(previewMode: string): void { @@ -400,24 +413,24 @@ class Wrapper extends React.PureComponent { const realSidebarWidth = sidebarHidden ? 0 : sidebarWidth; const columns = `${realSidebarWidth}rem 0 minmax(0, ${paneWidth}fr) 0 minmax(0, ${1 - - paneWidth}fr)`; + paneWidth}fr)`; const rows = `minmax(0, ${paneHeight}fr) 0 minmax(0, ${1 - paneHeight}fr)`; return [
- - - + + + - - - - - - - - + + + + + + + + { workspace={activeWorkspace} /> - + { nunjucksPowerUserMode={settings.nunjucksPowerUserMode} handleRemoveWorkspace={this._handleRemoveActiveWorkspace} handleDuplicateWorkspace={handleDuplicateWorkspace} + handleClearAllResponses={this._handleActiveWorkspaceClearAllResponses} isVariableUncovered={isVariableUncovered} /> - + { settings={settings} /> - + { isVariableUncovered={isVariableUncovered} /> - + {
-
+