Skip to content

Commit

Permalink
fix: removing filetree callback hell
Browse files Browse the repository at this point in the history
  • Loading branch information
markhughes committed Feb 21, 2025
1 parent 4285744 commit fba2d3d
Show file tree
Hide file tree
Showing 11 changed files with 435 additions and 281 deletions.
12 changes: 10 additions & 2 deletions packages/server/lib/commands/clipboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,17 @@ export default {
const src = msg.data.src;
const dst = msg.data.dst;
const type = msg.data.type;

log.info(ws, null, `Clipboard ${type}: ${src} -> ${dst}`);
if (config.readOnly) return sendError(sid, vId, "Files are read-only");
if (!validatePaths([src, dst], msg.type, ws, sid, vId)) return;

if (config.readOnly) {
return sendError(sid, vId, "Files are read-only");
}

if (!validatePaths([src, dst], msg.type, ws, sid, vId)) {
return;
}

if (new RegExp(`^${escRe(msg.data.src)}/`).test(msg.data.dst)) {
return sendError(sid, vId, "Can't copy directory into itself");
}
Expand Down
10 changes: 7 additions & 3 deletions packages/server/lib/commands/createFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@ export default {
if (!validatePaths(msg.data, msg.type, ws, sid, vId)) {
return;
}
filetree.mk(msg.data, (err) => {
if (err) sendError(sid, vId, `Error creating file: ${err.message}`);
});

try {
await filetree.mk(msg.data);
} catch (err) {
log.error(ws, null, err);
sendError(sid, vId, `Error creating file: ${err.message}`);
}
},
};
22 changes: 9 additions & 13 deletions packages/server/lib/commands/createFiles.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,14 @@ export default {
return;
}

await Promise.all(
msg.data.files.map((file) => {
return new Promise((resolve) => {
filetree.mkdir(utils.addFilesPath(path.dirname(file)), (err) => {
if (err) log.error(ws, null, err);
filetree.mk(utils.addFilesPath(file), (err) => {
if (err) log.error(ws, null, err);
resolve();
});
});
});
})
);
for (const file of msg.data.files) {
try {
await filetree.mkdir(utils.addFilesPath(path.dirname(file)));
await filetree.mk(utils.addFilesPath(file));
} catch (err) {
log.error(ws, null, err);
sendError(sid, vId, `Error creating file`);
}
}
},
};
10 changes: 7 additions & 3 deletions packages/server/lib/commands/createFolder.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import filetree from "../services/filetree.js";
import log from "../services/log.js";

export default {
handler: async ({ validatePaths, sid, config, msg, ws, vId, sendError }) => {
Expand All @@ -9,8 +10,11 @@ export default {
return;
}

filetree.mkdir(msg.data, (err) => {
if (err) sendError(sid, vId, `Error creating folder: ${err.message}`);
});
try {
await filetree.mkdir(msg.data);
} catch (err) {
log.error(ws, null, err);
sendError(sid, vId, `Error creating folder: ${err.message}`);
}
},
};
20 changes: 8 additions & 12 deletions packages/server/lib/commands/createFolders.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,13 @@ export default {
return;
}

await Promise.all(
msg.data.folders.map((folder) => {
return new Promise((resolve) => {
filetree.mkdir(utils.addFilesPath(folder), (err) => {
if (err) {
log.error(ws, null, err);
}
resolve();
});
});
})
);
for (const folder of msg.data.folders) {
try {
await filetree.mkdir(utils.addFilesPath(folder));
} catch (err) {
log.error(ws, null, err);
sendError(sid, vId, `Error creating folder ${folder}`);
}
}
},
};
9 changes: 8 additions & 1 deletion packages/server/lib/commands/deleteFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ export default {
return;
}
log.info(ws, null, `Deleting: ${msg.data}`);
filetree.del(msg.data);

try {
await filetree.del(msg.data);
} catch (err) {
log.info(ws, null, `Error deleting file: ${msg.data}`);
log.error(err);
return sendError(sid, vId, "Error deleting file");
}
},
};
9 changes: 8 additions & 1 deletion packages/server/lib/commands/rename.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,14 @@ export default {
sendError(sid, vId, "Invalid rename request");
return;
}
filetree.move(rSrc, rDst);

try {
await filetree.move(rSrc, rDst);
} catch (err) {
log.error(ws, null, err);
sendError(sid, vId, `Error renaming ${rSrc} to ${rDst}`);
return;
}

// update sharelinks to new destination
const links = db.get("links");
Expand Down
16 changes: 10 additions & 6 deletions packages/server/lib/commands/saveFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,15 @@ export default {

log.info(ws, null, `Saving: ${msg.data.to}`);

filetree.save(msg.data.to, msg.data.value, (err) => {
if (err) {
sendError(sid, vId, `Error saving: ${err.message}`);
log.error(err);
} else sendObj(sid, { type: "SAVE_STATUS", vId, status: err ? 1 : 0 });
});
try {
await filetree.save(msg.data.to, msg.data.value);
} catch (err) {
sendObj(sid, { type: "SAVE_STATUS", vId, status: 1 });
sendError(sid, vId, `Error saving: ${err.message}`);
log.error(err);
return;
}

sendObj(sid, { type: "SAVE_STATUS", vId, status: 0 });
},
};
Loading

0 comments on commit fba2d3d

Please sign in to comment.