Skip to content

Commit 3799b6b

Browse files
authored
Merge pull request #2315 from lindapaiste/fix/download-deleted-asset
Fix #2314 by ignoring deleted assets in zip download
2 parents 4343418 + e2b2793 commit 3799b6b

File tree

1 file changed

+18
-39
lines changed

1 file changed

+18
-39
lines changed

server/controllers/project.controller.js

Lines changed: 18 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -215,48 +215,27 @@ function bundleExternalLibs(project) {
215215
});
216216
}
217217

218-
function addFileToZip(file, files, zip, path = '') {
219-
return new Promise((resolve, reject) => {
220-
if (file.fileType === 'folder') {
221-
const newPath = file.name === 'root' ? path : `${path}${file.name}/`;
222-
const numChildFiles = file.children.filter((f) => f.fileType !== 'folder')
223-
.length;
224-
let childrenAdded = 0;
225-
if (numChildFiles === 0) {
226-
zip.folder(file.name);
227-
resolve();
228-
}
229-
file.children.forEach(async (fileId) => {
218+
async function addFileToZip(file, files, zip) {
219+
if (file.fileType === 'folder') {
220+
const folderZip = file.name === 'root' ? zip : zip.folder(file.name);
221+
await Promise.all(
222+
file.children.map((fileId) => {
230223
const childFile = files.find((f) => f.id === fileId);
231-
232-
try {
233-
await addFileToZip(childFile, files, zip, newPath);
234-
childrenAdded += 1;
235-
236-
if (childrenAdded === numChildFiles) {
237-
resolve();
238-
}
239-
} catch (err) {
240-
reject(err);
241-
}
224+
return addFileToZip(childFile, files, folderZip);
225+
})
226+
);
227+
} else if (file.url) {
228+
try {
229+
const res = await axios.get(file.url, {
230+
responseType: 'arraybuffer'
242231
});
243-
} else if (file.url) {
244-
axios
245-
.get(file.url, {
246-
responseType: 'arraybuffer'
247-
})
248-
.then(({ data }) => {
249-
zip.file(`${path}${file.name}`, data);
250-
resolve();
251-
})
252-
.catch((err) => {
253-
reject(err);
254-
});
255-
} else {
256-
zip.file(`${path}${file.name}`, file.content);
257-
resolve();
232+
zip.file(file.name, res.data);
233+
} catch (e) {
234+
zip.file(file.name, new ArrayBuffer(0));
258235
}
259-
});
236+
} else {
237+
zip.file(file.name, file.content);
238+
}
260239
}
261240

262241
async function buildZip(project, req, res) {

0 commit comments

Comments
 (0)