Skip to content

Commit

Permalink
add folder duplicate (#6337)
Browse files Browse the repository at this point in the history
  • Loading branch information
jackkav committed Aug 18, 2023
1 parent 97e21a2 commit 88c7277
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 7 deletions.
Expand Up @@ -70,13 +70,15 @@ export const RequestGroupActionsDropdown = forwardRef<RequestGroupActionsDropdow
label: 'New Name',
selectText: true,
onComplete: async (name: string) => {
const newRequestGroup = await models.requestGroup.duplicate(requestGroup, {
name,
});
models.stats.incrementCreatedRequestsForDescendents(newRequestGroup);
requestFetcher.submit({ _id: requestGroup._id, name },
{
action: `/organization/${organizationId}/project/${projectId}/workspace/${workspaceId}/debug/request-group/duplicate`,
method: 'post',
encType: 'application/json',
});
},
});
}, [requestGroup]);
}, [organizationId, projectId, requestFetcher, requestGroup._id, requestGroup.name, workspaceId]);

const createGroup = useCallback(() => showPrompt({
title: 'New Folder',
Expand Down
Expand Up @@ -43,9 +43,9 @@ export const RequestGroupSettingsModal = ({ requestGroup, onHide }: ModalProps &
const requestFetcher = useFetcher();

const duplicateRequestGroup = (r: Partial<RequestGroup>) => {
requestFetcher.submit(JSON.stringify(r),
requestFetcher.submit(r,
{
action: `/organization/${organizationId}/project/${projectId}/workspace/${workspaceId}/debug/request-group/${requestGroup._id}/duplicate`,
action: `/organization/${organizationId}/project/${projectId}/workspace/${workspaceId}/debug/request-group/duplicate`,
method: 'post',
encType: 'application/json',
});
Expand All @@ -63,6 +63,7 @@ export const RequestGroupSettingsModal = ({ requestGroup, onHide }: ModalProps &
const handleCopyToWorkspace = async () => {
invariant(state.activeWorkspaceIdToCopyTo, 'Workspace ID is required');
duplicateRequestGroup({
_id: requestGroup._id,
metaSortKey: -1e9, // Move to top of sort order
name: requestGroup.name, // Because duplicate will add (Copy) suffix if name is not provided in patch
parentId: state.activeWorkspaceIdToCopyTo,
Expand Down
4 changes: 4 additions & 0 deletions packages/insomnia/src/ui/index.tsx
Expand Up @@ -198,6 +198,10 @@ const router = createMemoryRouter(
path: 'request-group/update',
action: async (...args) => (await import('./routes/request-group')).updateRequestGroupAction(...args),
},
{
path: 'request-group/duplicate',
action: async (...args) => (await import('./routes/request-group')).duplicateRequestGroupAction(...args),
},
{
path: 'request-group/:requestGroupId/update-meta',
action: async (...args) => (await import('./routes/request-group')).updateRequestGroupMetaAction(...args),
Expand Down
10 changes: 10 additions & 0 deletions packages/insomnia/src/ui/routes/request-group.tsx
Expand Up @@ -32,6 +32,16 @@ export const deleteRequestGroupAction: ActionFunction = async ({ request }) => {
return null;
};

export const duplicateRequestGroupAction: ActionFunction = async ({ request }) => {
const patch = await request.json() as Partial<RequestGroup>;
invariant(patch._id, 'Patch Id not found');
const requestGroup = await models.requestGroup.getById(patch._id);
invariant(requestGroup, 'Request group not found');
const newRequestGroup = await models.requestGroup.duplicate(requestGroup, { name: patch.name });
models.stats.incrementCreatedRequestsForDescendents(newRequestGroup);
return null;
};

export const updateRequestGroupMetaAction: ActionFunction = async ({ request, params }) => {
const { requestGroupId } = params;
invariant(typeof requestGroupId === 'string', 'Request Group ID is required');
Expand Down

0 comments on commit 88c7277

Please sign in to comment.