Add try-catch to rename chat endpoint

363b07ab0bcae1e5a5d62979fa6a4659f72c4b2d

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +26 -21Ignore whitespace
src/endpoints/chats.js+26 -21
@@ -69,7 +69,7 @@ function getBackupFunction(handle) {
69 if (!backupFunctions.has(handle)) {69 if (!backupFunctions.has(handle)) {
70 backupFunctions.set(handle, _.throttle(backupChat, throttleInterval, { leading: true, trailing: true }));70 backupFunctions.set(handle, _.throttle(backupChat, throttleInterval, { leading: true, trailing: true }));
71 }71 }
72 return backupFunctions.get(handle) || (() => {});72 return backupFunctions.get(handle) || (() => { });
73}73}
7474
75/**75/**
@@ -487,28 +487,33 @@ router.post('/get', validateAvatarUrlMiddleware, function (request, response) {
487});487});
488488
489router.post('/rename', validateAvatarUrlMiddleware, async function (request, response) {489router.post('/rename', validateAvatarUrlMiddleware, async function (request, response) {
490 if (!request.body || !request.body.original_file || !request.body.renamed_file) {490 try {
491 return response.sendStatus(400);491 if (!request.body || !request.body.original_file || !request.body.renamed_file) {
492 }492 return response.sendStatus(400);
493 }
493494
494 const pathToFolder = request.body.is_group495 const pathToFolder = request.body.is_group
495 ? request.user.directories.groupChats496 ? request.user.directories.groupChats
496 : path.join(request.user.directories.chats, String(request.body.avatar_url).replace('.png', ''));497 : path.join(request.user.directories.chats, String(request.body.avatar_url).replace('.png', ''));
497 const pathToOriginalFile = path.join(pathToFolder, sanitize(request.body.original_file));498 const pathToOriginalFile = path.join(pathToFolder, sanitize(request.body.original_file));
498 const pathToRenamedFile = path.join(pathToFolder, sanitize(request.body.renamed_file));499 const pathToRenamedFile = path.join(pathToFolder, sanitize(request.body.renamed_file));
499 const sanitizedFileName = path.parse(pathToRenamedFile).name;500 const sanitizedFileName = path.parse(pathToRenamedFile).name;
500 console.info('Old chat name', pathToOriginalFile);501 console.debug('Old chat name', pathToOriginalFile);
501 console.info('New chat name', pathToRenamedFile);502 console.debug('New chat name', pathToRenamedFile);
503
504 if (!fs.existsSync(pathToOriginalFile) || fs.existsSync(pathToRenamedFile)) {
505 console.error('Either Source or Destination files are not available');
506 return response.status(400).send({ error: true });
507 }
502508
503 if (!fs.existsSync(pathToOriginalFile) || fs.existsSync(pathToRenamedFile)) {509 fs.copyFileSync(pathToOriginalFile, pathToRenamedFile);
504 console.error('Either Source or Destination files are not available');510 fs.unlinkSync(pathToOriginalFile);
505 return response.status(400).send({ error: true });511 console.info('Successfully renamed chat file.');
512 return response.send({ ok: true, sanitizedFileName });
513 } catch (error) {
514 console.error('Error renaming chat file:', error);
515 return response.status(500).send({ error: true });
506 }516 }
507
508 fs.copyFileSync(pathToOriginalFile, pathToRenamedFile);
509 fs.unlinkSync(pathToOriginalFile);
510 console.info('Successfully renamed.');
511 return response.send({ ok: true, sanitizedFileName });
512});517});
513518
514router.post('/delete', validateAvatarUrlMiddleware, function (request, response) {519router.post('/delete', validateAvatarUrlMiddleware, function (request, response) {
@@ -859,7 +864,7 @@ router.post('/search', validateAvatarUrlMiddleware, function (request, response)
859 // Search through title and messages of the chat864 // Search through title and messages of the chat
860 const fragments = query.trim().toLowerCase().split(/\s+/).filter(x => x);865 const fragments = query.trim().toLowerCase().split(/\s+/).filter(x => x);
861 const text = [path.parse(chatFile.path).name,866 const text = [path.parse(chatFile.path).name,
862 ...messages.map(message => message?.mes)].join('\n').toLowerCase();867 ...messages.map(message => message?.mes)].join('\n').toLowerCase();
863 const hasMatch = fragments.every(fragment => text.includes(fragment));868 const hasMatch = fragments.every(fragment => text.includes(fragment));
864869
865 if (hasMatch) {870 if (hasMatch) {