diff --git a/app.js b/app.js index 64488c5..3668a44 100644 --- a/app.js +++ b/app.js @@ -171,12 +171,8 @@ if (isMaster) { logger.error("Invalid THRESHOLD config."); process.env.THRESHOLD = undefined; } - const dirstat = (await promises.readdir(process.env.TEMPDIR)).map(async (file) => { - return new Promise((resolve) => { - promises.stat(`${process.env.TEMPDIR}/${file}`).then((stats) => { - resolve(stats.size); - }); - }); + const dirstat = (await promises.readdir(process.env.TEMPDIR)).map((file) => { + return promises.stat(`${process.env.TEMPDIR}/${file}`).then((stats) => stats.size); }); const size = await Promise.all(dirstat); process.env.DIRSIZECACHE = size.reduce((a, b)=>{ diff --git a/events/interactionCreate.js b/events/interactionCreate.js index b756fe0..513ce7c 100644 --- a/events/interactionCreate.js +++ b/events/interactionCreate.js @@ -59,24 +59,25 @@ export default async (client, cluster, worker, ipc, interaction) => { process.env.DIRSIZECACHE += result.file.length; if (process.env.DIRSIZECACHE > process.env.THRESHOLD) { const files = (await promises.readdir(process.env.TEMPDIR)).map((file) => { - return new Promise((resolve, reject) => { - promises.stat(`${process.env.TEMPDIR}/${file}`).then((fstats)=>{ - resolve({ - name: file, - size: fstats.size, - ctime: fstats.ctime - }); - }).catch(reject); + return promises.stat(`${process.env.TEMPDIR}/${file}`).then((stats) => { + return { + name: file, + size: stats.size, + ctime: stats.ctime + }; }); }); - Promise.all(files).then((files) => { - process.env.DIRSIZECACHE = files.reduce((a, b)=>{ - return a+b.size; - }, 0); - const oldestFile = files.sort((a, b) => a.ctime - b.ctime)[0].name; - promises.rm(`${process.env.TEMPDIR}/${oldestFile}`); - logger.log(`Removed oldest image file: ${oldestFile}`); - }); + const resolvedFiles = await Promise.all(files); + process.env.DIRSIZECACHE = resolvedFiles.reduce((a, b)=>{ + return a + b.size; + }, 0); + const oldestFiles = resolvedFiles.sort((a, b) => a.ctime - b.ctime); + while (process.env.DIRSIZECACHE > process.env.THRESHOLD) { + await promises.rm(`${process.env.TEMPDIR}/${oldestFiles[0].name}`); + process.env.DIRSIZECACHE -= oldestFiles[0].size; + logger.log(`Removed oldest image file: ${oldestFiles[0].name}`); + oldestFiles.shift(); + } } } } else { diff --git a/events/messageCreate.js b/events/messageCreate.js index e279e56..8c47844 100644 --- a/events/messageCreate.js +++ b/events/messageCreate.js @@ -149,24 +149,25 @@ export default async (client, cluster, worker, ipc, message) => { process.env.DIRSIZECACHE += result.file.length; if (process.env.DIRSIZECACHE > process.env.THRESHOLD) { const files = (await promises.readdir(process.env.TEMPDIR)).map((file) => { - return new Promise((resolve, reject) => { - promises.stat(`${process.env.TEMPDIR}/${file}`).then((fstats)=>{ - resolve({ - name: file, - size: fstats.size, - ctime: fstats.ctime - }); - }).catch(reject); + return promises.stat(`${process.env.TEMPDIR}/${file}`).then((stats) => { + return { + name: file, + size: stats.size, + ctime: stats.ctime + }; }); }); - Promise.all(files).then((files) => { - process.env.DIRSIZECACHE = files.reduce((a, b)=>{ - return a+b.size; - }, 0); - const oldestFile = files.sort((a, b) => a.ctime - b.ctime)[0].name; - promises.rm(`${process.env.TEMPDIR}/${oldestFile}`); - log(`Removed oldest image file: ${oldestFile}`); - }); + const resolvedFiles = await Promise.all(files); + process.env.DIRSIZECACHE = resolvedFiles.reduce((a, b)=>{ + return a + b.size; + }, 0); + const oldestFiles = resolvedFiles.sort((a, b) => a.ctime - b.ctime); + while (process.env.DIRSIZECACHE > process.env.THRESHOLD) { + await promises.rm(`${process.env.TEMPDIR}/${oldestFiles[0].name}`); + process.env.DIRSIZECACHE -= oldestFiles[0].size; + log(`Removed oldest image file: ${oldestFiles[0].name}`); + oldestFiles.shift(); + } } } } else {