Skip to content

Commit 61d7352

Browse files
authored
Add transforms for modules and directories (codesandbox#2624)
1 parent 623b4f3 commit 61d7352

File tree

2 files changed

+59
-34
lines changed

2 files changed

+59
-34
lines changed

packages/app/src/app/overmind/effects/api/index.ts

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ import {
2222
import { client } from 'app/graphql/client';
2323
import { LIST_TEMPLATES } from 'app/pages/Dashboard/queries';
2424

25-
import { transformSandbox } from '../utils/sandbox';
25+
import {
26+
transformSandbox,
27+
transformDirectory,
28+
transformModule,
29+
} from '../utils/sandbox';
2630
import apiFactory, { Api, ApiConfig } from './apiFactory';
2731

2832
let api: Api;
@@ -78,22 +82,26 @@ export default {
7882
return transformSandbox(sandbox);
7983
},
8084
createModule(sandboxId: string, module: Module): Promise<Module> {
81-
return api.post(`/sandboxes/${sandboxId}/modules`, {
82-
module: {
83-
title: module.title,
84-
directoryShortid: module.directoryShortid,
85-
code: module.code,
86-
isBinary: module.isBinary === undefined ? false : module.isBinary,
87-
},
88-
});
85+
return api
86+
.post(`/sandboxes/${sandboxId}/modules`, {
87+
module: {
88+
title: module.title,
89+
directoryShortid: module.directoryShortid,
90+
code: module.code,
91+
isBinary: module.isBinary === undefined ? false : module.isBinary,
92+
},
93+
})
94+
.then(transformModule);
8995
},
9096
deleteModule(sandboxId: string, moduleShortid: string): Promise<void> {
9197
return api.delete(`/sandboxes/${sandboxId}/modules/${moduleShortid}`);
9298
},
9399
saveModuleCode(sandboxId: string, module: Module): Promise<Module> {
94-
return api.put(`/sandboxes/${sandboxId}/modules/${module.shortid}`, {
95-
module: { code: module.code },
96-
});
100+
return api
101+
.put(`/sandboxes/${sandboxId}/modules/${module.shortid}`, {
102+
module: { code: module.code },
103+
})
104+
.then(transformModule);
97105
},
98106
saveModules(sandboxId: string, modules: Module[]) {
99107
return api.put(`/sandboxes/${sandboxId}/modules/mupdate`, {
@@ -193,12 +201,14 @@ export default {
193201
directoryShortid: string,
194202
title: string
195203
): Promise<Directory> {
196-
return api.post(`/sandboxes/${sandboxId}/directories`, {
197-
directory: {
198-
title,
199-
directoryShortid,
200-
},
201-
});
204+
return api
205+
.post(`/sandboxes/${sandboxId}/directories`, {
206+
directory: {
207+
title,
208+
directoryShortid,
209+
},
210+
})
211+
.then(transformDirectory);
202212
},
203213
saveModuleDirectory(
204214
sandboxId: string,
@@ -247,7 +257,7 @@ export default {
247257
name,
248258
});
249259
},
250-
massCreateModules(
260+
async massCreateModules(
251261
sandboxId: string,
252262
directoryShortid: string | null,
253263
modules: Module[],
@@ -256,11 +266,18 @@ export default {
256266
modules: Module[];
257267
directories: Directory[];
258268
}> {
259-
return api.post(`/sandboxes/${sandboxId}/modules/mcreate`, {
269+
const data = (await api.post(`/sandboxes/${sandboxId}/modules/mcreate`, {
260270
directoryShortid,
261271
modules,
262272
directories,
263-
});
273+
})) as {
274+
modules: Module[];
275+
directories: Directory[];
276+
};
277+
278+
data.modules = data.modules.map(transformModule);
279+
data.directories = data.directories.map(transformDirectory);
280+
return data;
264281
},
265282
createGit(
266283
sandboxId: string,
Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,28 @@
1-
import { Sandbox } from '@codesandbox/common/lib/types';
1+
import { Sandbox, Module, Directory } from '@codesandbox/common/lib/types';
2+
3+
export function transformModule(module: Module) {
4+
return {
5+
...module,
6+
savedCode: null,
7+
isNotSynced: false,
8+
errors: [],
9+
corrections: [],
10+
type: 'file' as 'file',
11+
};
12+
}
13+
14+
export function transformDirectory(directory: Directory) {
15+
return {
16+
...directory,
17+
type: 'directory' as 'directory',
18+
};
19+
}
220

321
export function transformSandbox(sandbox: Sandbox) {
422
// We need to add client side properties for tracking
523
return {
624
...sandbox,
7-
modules: sandbox.modules.map(module => ({
8-
...module,
9-
savedCode: null,
10-
isNotSynced: false,
11-
errors: [],
12-
corrections: [],
13-
type: 'file' as 'file',
14-
})),
15-
directories: sandbox.directories.map(directory => ({
16-
...directory,
17-
type: 'directory' as 'directory',
18-
})),
25+
modules: sandbox.modules.map(transformModule),
26+
directories: sandbox.directories.map(transformDirectory),
1927
};
2028
}

0 commit comments

Comments
 (0)