From ee54114a7183aec13ed1f32d9ca44418b106b280 Mon Sep 17 00:00:00 2001 From: NickHackman Date: Fri, 18 Jun 2021 15:12:39 -0500 Subject: [PATCH] refactor(request-group-settings-modal): port to typescript --- .../request-group-actions-dropdown.tsx | 3 +- ...al.js => request-group-settings-modal.tsx} | 143 +++++---- .../sidebar/sidebar-request-group-row.tsx | 42 +-- .../insomnia-app/app/ui/containers/app.tsx | 295 ++++++------------ 4 files changed, 188 insertions(+), 295 deletions(-) rename packages/insomnia-app/app/ui/components/modals/{request-group-settings-modal.js => request-group-settings-modal.tsx} (76%) diff --git a/packages/insomnia-app/app/ui/components/dropdowns/request-group-actions-dropdown.tsx b/packages/insomnia-app/app/ui/components/dropdowns/request-group-actions-dropdown.tsx index ad5377f0b36..d9b8a4e5d5d 100644 --- a/packages/insomnia-app/app/ui/components/dropdowns/request-group-actions-dropdown.tsx +++ b/packages/insomnia-app/app/ui/components/dropdowns/request-group-actions-dropdown.tsx @@ -30,8 +30,7 @@ interface Props { activeEnvironment?: Environment | null; handleCreateRequest: (id: string) => any; handleDuplicateRequestGroup: (requestGroup: RequestGroup) => any; - // TODO: fix type, more explicit - handleShowSettings: Function, + handleShowSettings: (requestGroup: RequestGroup) => any, handleMoveRequestGroup: (requestGroup: RequestGroup) => any; handleCreateRequestGroup: (requestGroup: string) => any; } diff --git a/packages/insomnia-app/app/ui/components/modals/request-group-settings-modal.js b/packages/insomnia-app/app/ui/components/modals/request-group-settings-modal.tsx similarity index 76% rename from packages/insomnia-app/app/ui/components/modals/request-group-settings-modal.js rename to packages/insomnia-app/app/ui/components/modals/request-group-settings-modal.tsx index f38c648c78d..b335efac7ab 100644 --- a/packages/insomnia-app/app/ui/components/modals/request-group-settings-modal.js +++ b/packages/insomnia-app/app/ui/components/modals/request-group-settings-modal.tsx @@ -9,61 +9,60 @@ import HelpTooltip from '../help-tooltip'; import * as models from '../../../models'; import DebouncedInput from '../base/debounced-input'; import MarkdownEditor from '../markdown-editor'; -import * as db from '../../../common/database'; +import { database as db } from '../../../common/database'; import type { Workspace } from '../../../models/workspace'; import type { RequestGroup } from '../../../models/request-group'; +import { HandleGetRenderContext, HandleRender } from '../../../common/render'; + +interface Props { + editorFontSize: number; + editorIndentSize: number; + editorKeyMap: string; + editorLineWrapping: boolean; + nunjucksPowerUserMode: boolean; + isVariableUncovered: boolean; + handleRender: HandleRender; + handleGetRenderContext: HandleGetRenderContext; + workspaces: Workspace[]; +} + +interface State { + requestGroup: RequestGroup | null; + showDescription: boolean; + defaultPreviewMode: boolean; + activeWorkspaceIdToCopyTo: string | null; + workspace?: Workspace; + workspaces: Workspace[]; + justCopied: boolean; + justMoved: boolean; +} -type Props = { - editorFontSize: number, - editorIndentSize: number, - editorKeyMap: string, - editorLineWrapping: boolean, - nunjucksPowerUserMode: boolean, - isVariableUncovered: boolean, - handleRender: Function, - handleGetRenderContext: Function, - workspaces: Array, -}; - -type State = { - requestGroupGroup: RequestGroup | null, - showDescription: boolean, - defaultPreviewMode: boolean, - activeWorkspaceIdToCopyTo: string | null, - workspace: Workspace | null, - justCopied: boolean, - justMoved: boolean, -}; - -type RequestGroupSettingsModalOptions = { - requestGroup: RequestGroup, - forceEditMode: boolean, -}; +interface RequestGroupSettingsModalOptions { + requestGroup: RequestGroup; + forceEditMode: boolean; +} @autoBindMethodsForReact(AUTOBIND_CFG) class RequestGroupSettingsModal extends React.PureComponent { - modal: ?Modal; - _editor: ?MarkdownEditor; - - constructor(props: Props) { - super(props); - this.state = { - requestGroup: null, - showDescription: false, - defaultPreviewMode: false, - activeWorkspaceIdToCopyTo: null, - workspace: null, - workspaces: [], - justCopied: false, - justMoved: false, - }; - } - - _setModalRef(n: ?Modal) { + modal: Modal | null = null; + _editor: MarkdownEditor | null = null; + + state: State = { + requestGroup: null, + showDescription: false, + defaultPreviewMode: false, + activeWorkspaceIdToCopyTo: null, + workspace: undefined, + workspaces: [], + justCopied: false, + justMoved: false, + }; + + _setModalRef(n: Modal) { this.modal = n; } - _setEditorRef(n: ?MarkdownEditor) { + _setEditorRef(n: MarkdownEditor) { this._editor = n; } @@ -75,7 +74,10 @@ class RequestGroupSettingsModal extends React.PureComponent { } const patch = { name }; - const updatedRequestGroup = models.requestGroup.update(originalRequestGroup, patch); + const updatedRequestGroup = await models.requestGroup.update( + originalRequestGroup, + patch, + ); this.setState({ requestGroup: updatedRequestGroup }); } @@ -83,9 +85,12 @@ class RequestGroupSettingsModal extends React.PureComponent { if (!this.state.requestGroup) { return; } - const requestGroup = await models.requestGroup.update(this.state.requestGroup, { - description, - }); + const requestGroup = await models.requestGroup.update( + this.state.requestGroup, + { + description, + }, + ); this.setState({ requestGroup, defaultPreviewMode: false }); } @@ -93,7 +98,7 @@ class RequestGroupSettingsModal extends React.PureComponent { this.setState({ showDescription: true }); } - _handleUpdateMoveCopyWorkspace(e: SyntheticEvent) { + _handleUpdateMoveCopyWorkspace(e: React.SyntheticEvent) { const { value } = e.currentTarget; const workspaceId = value === '__NULL__' ? null : value; this.setState({ activeWorkspaceIdToCopyTo: workspaceId }); @@ -154,16 +159,19 @@ class RequestGroupSettingsModal extends React.PureComponent { models.stats.incrementCreatedRequests(); } - async show({ requestGroup, forceEditMode }: RequestGroupSettingsModalOptions) { + async show({ + requestGroup, + forceEditMode, + }: RequestGroupSettingsModalOptions) { const { workspaces } = this.props; const hasDescription = !!requestGroup.description; // Find workspaces for use with moving workspace const ancestors = await db.withAncestors(requestGroup); - const doc = ancestors.find(doc => doc.type === models.workspace.type); + const doc = ancestors.find((doc) => doc.type === models.workspace.type); const workspaceId = doc ? doc._id : 'should-never-happen'; - const workspace = workspaces.find(w => w._id === workspaceId); + const workspace = workspaces.find((w) => w._id === workspaceId); this.setState( { @@ -189,7 +197,7 @@ class RequestGroupSettingsModal extends React.PureComponent { this.modal && this.modal.hide(); } - _renderDescription(): React.Node { + _renderDescription() { const { editorLineWrapping, editorFontSize, @@ -227,13 +235,14 @@ class RequestGroupSettingsModal extends React.PureComponent { ) : ( ); } - _renderMoveCopy(): React.Node { + _renderMoveCopy() { const { workspaces } = this.props; const { @@ -254,14 +263,15 @@ class RequestGroupSettingsModal extends React.PureComponent {