From f325b94e735aa25b4b5eebb5c709c762b87733be Mon Sep 17 00:00:00 2001 From: Jack Kavanagh Date: Mon, 12 Sep 2022 16:13:05 +0200 Subject: [PATCH] fix drag and drop and sort (#5168) --- packages/insomnia/src/models/websocket-request.ts | 2 ++ packages/insomnia/src/ui/components/sidebar/dnd.tsx | 10 +++++++--- .../src/ui/components/sidebar/sidebar-filter.tsx | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/insomnia/src/models/websocket-request.ts b/packages/insomnia/src/models/websocket-request.ts index 194dec45cf..7a2cafa46f 100644 --- a/packages/insomnia/src/models/websocket-request.ts +++ b/packages/insomnia/src/models/websocket-request.ts @@ -89,4 +89,6 @@ export async function duplicate(request: WebSocketRequest, patch: Partial database.getWhere(type, { _id }); +export const findByParentId = (parentId: string) => database.find(type, { parentId }); + export const all = () => database.all(type); diff --git a/packages/insomnia/src/ui/components/sidebar/dnd.tsx b/packages/insomnia/src/ui/components/sidebar/dnd.tsx index 348602282e..7f6f57aa00 100644 --- a/packages/insomnia/src/ui/components/sidebar/dnd.tsx +++ b/packages/insomnia/src/ui/components/sidebar/dnd.tsx @@ -5,8 +5,9 @@ import { database } from '../../../common/database'; import { BaseModel } from '../../../models'; import * as models from '../../../models'; import { GrpcRequest } from '../../../models/grpc-request'; +import * as requestOperations from '../../../models/helpers/request-operations'; import { Request } from '../../../models/request'; -import { RequestGroup } from '../../../models/request-group'; +import { isRequestGroup, RequestGroup } from '../../../models/request-group'; import { WebSocketRequest } from '../../../models/websocket-request'; export type DnDDragProps = ReturnType; @@ -103,8 +104,10 @@ const moveDoc = async ({ } function __updateDoc(doc: BaseModel, patch: any) { - // @ts-expect-error -- TSCONVERSION - return models.getModel(docToMove.type).update(doc, patch); + if (isRequestGroup(doc)) { + return models.requestGroup.update(doc, patch); + } + return requestOperations.update(doc, patch); } if (!targetId) { @@ -116,6 +119,7 @@ const moveDoc = async ({ // NOTE: using requestToTarget's parentId so we can switch parents! const docs = [ ...(await models.request.findByParentId(parentId)), + ...(await models.webSocketRequest.findByParentId(parentId)), ...(await models.grpcRequest.findByParentId(parentId)), ...(await models.requestGroup.findByParentId(parentId)), ].sort((a, b) => (a.metaSortKey < b.metaSortKey ? -1 : 1)); diff --git a/packages/insomnia/src/ui/components/sidebar/sidebar-filter.tsx b/packages/insomnia/src/ui/components/sidebar/sidebar-filter.tsx index d77f3e6e99..9f4c37b786 100644 --- a/packages/insomnia/src/ui/components/sidebar/sidebar-filter.tsx +++ b/packages/insomnia/src/ui/components/sidebar/sidebar-filter.tsx @@ -54,6 +54,7 @@ export const SidebarFilter: FC = ({ filter }) => { ...(await models.requestGroup.findByParentId(parentId)), ...(await models.request.findByParentId(parentId)), ...(await models.grpcRequest.findByParentId(parentId)), + ...(await models.webSocketRequest.findByParentId(parentId)), ].sort(sortMethodMap[order]); // @ts-expect-error -- TSCONVERSION the fetched model will only ever be a RequestGroup, Request, or GrpcRequest // Which all have the .update method. How do we better filter types?