Skip to content

Commit

Permalink
use action and hack
Browse files Browse the repository at this point in the history
  • Loading branch information
jackkav committed Mar 26, 2024
1 parent 79ed8c2 commit b49ba5e
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ import React, { useState } from 'react';
import { Button } from 'react-aria-components';
import { useNavigate, useParams } from 'react-router-dom';
import {
// useFetcher,
useFetcher,
useRouteLoaderData,
} from 'react-router-dom';

import * as models from '../../../models';
import { invariant } from '../../../utils/invariant';
import { useMockRoutePatcher } from '../../routes/mock-route';
import { RequestLoaderData } from '../../routes/request';
Expand All @@ -26,9 +25,9 @@ export const MockResponseExtractor = () => {
const {
organizationId,
projectId,
// workspaceId,
workspaceId,
} = useParams();
// const fetcher = useFetcher();
const fetcher = useFetcher();
const [selectedMockServer, setSelectedMockServer] = useState('');
const [selectedMockRoute, setSelectedMockRoute] = useState('');
return (
Expand Down Expand Up @@ -68,38 +67,24 @@ export const MockResponseExtractor = () => {
defaultValue: path,
label: 'Name',
onComplete: async name => {
// TODO: prompt for for mock server name and fallback to collection name
const workspace = await models.workspace.create({
name: activeWorkspace.name,
scope: 'mock-server',
parentId: projectId,
});
// create a mock server under the workspace with the same name
const newServer = await models.mockServer.getOrCreateForParentId(workspace._id, { name: activeWorkspace.name });
invariant(activeResponse, 'Active response must be defined');
const body = await fs.readFile(activeResponse.bodyPath);
const newRoute = await models.mockRoute.create({
name: name,
parentId: newServer._id,
body: body.toString(),
mimeType: activeResponse.contentType,
statusCode: activeResponse.statusCode,
headers: activeResponse.headers,
});

setSelectedMockServer(newServer._id);
setSelectedMockRoute(newRoute._id);

// fetcher.submit(
// {
// name,
// scope: 'mock-server',
// },
// {
// action: `/organization/${organizationId}/project/${projectId}/workspace/new`,
// method: 'post',
// }
// );
// TODO: consider setting selected mock server here rather than redirecting
fetcher.submit(
JSON.stringify({
name: name,
body: body.toString(),
mimeType: activeResponse.contentType,
statusCode: activeResponse.statusCode,
headers: activeResponse.headers,
mockServerName: activeWorkspace.name,
}),
{
encType: 'application/json',
method: 'post',
action: `/organization/${organizationId}/project/${projectId}/workspace/${workspaceId}/mock-server/mock-route/new`,
}
);
},
});
return;
Expand All @@ -112,27 +97,24 @@ export const MockResponseExtractor = () => {
onComplete: async name => {
invariant(activeResponse, 'Active response must be defined');
const body = await fs.readFile(activeResponse.bodyPath);
const newRoute = await models.mockRoute.create({
name: name,
parentId: selectedMockServer,
body: body.toString(),
mimeType: activeResponse.contentType,
statusCode: activeResponse.statusCode,
headers: activeResponse.headers,
});
setSelectedMockRoute(newRoute._id);

// fetcher.submit(
// {
// name: name,
// parentId: selectedMockServer,
// },
// {
// encType: 'application/json',
// method: 'post',
// action: `/organization/${organizationId}/project/${projectId}/workspace/${workspaceId}/mock-server/mock-route/new`,
// }
// );
// setSelectedMockRoute(newRoute._id);

fetcher.submit(
JSON.stringify({
name: name,
parentId: selectedMockServer,
body: body.toString(),
mimeType: activeResponse.contentType,
statusCode: activeResponse.statusCode,
headers: activeResponse.headers,
}),
{
encType: 'application/json',
method: 'post',
action: `/organization/${organizationId}/project/${projectId}/workspace/${workspaceId}/mock-server/mock-route/new`,
}
);
},
});
}
Expand Down
21 changes: 19 additions & 2 deletions packages/insomnia/src/ui/routes/actions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1211,9 +1211,26 @@ export const createMockRouteAction: ActionFunction = async ({ request, params })

const patch = await request.json();
invariant(typeof patch.name === 'string', 'Name is required');
invariant(typeof patch.parentId === 'string', 'parentId is required');
// TODO: remove this hack
if (patch.mockServerName) {
const activeWorkspace = await models.workspace.getById(workspaceId);
invariant(activeWorkspace, 'Active workspace not found');
const workspace = await models.workspace.create({
name: activeWorkspace.name,
scope: 'mock-server',
parentId: projectId,
});
invariant(workspace, 'Workspace not found');
// create a mock server under the workspace with the same name
const newServer = await models.mockServer.getOrCreateForParentId(workspace._id, { name: activeWorkspace.name });
// TODO: filterout the mockServerName from the patch, or use an alternate method to create new workspace and server
const mockRoute = await models.mockRoute.create({ ...patch, parentId: newServer._id });
return redirect(`/organization/${organizationId}/project/${projectId}/workspace/${newServer.parentId}/mock-server/mock-route/${mockRoute._id}`);
}
const mockServer = await models.mockServer.getById(patch.parentId);
invariant(mockServer, 'Mock server not found');
const mockRoute = await models.mockRoute.create(patch);
return redirect(`/organization/${organizationId}/project/${projectId}/workspace/${workspaceId}/mock-server/mock-route/${mockRoute._id}`);
return redirect(`/organization/${organizationId}/project/${projectId}/workspace/${mockServer.parentId}/mock-server/mock-route/${mockRoute._id}`);
};
export const updateMockRouteAction: ActionFunction = async ({ request, params }) => {
const { mockRouteId } = params;
Expand Down

0 comments on commit b49ba5e

Please sign in to comment.