aboutsummaryrefslogtreecommitdiff
path: root/src/server/DashUploadUtils.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-12-02 15:53:28 -0500
committerbobzel <zzzman@gmail.com>2023-12-02 15:53:28 -0500
commit9c7e055a2cf7ca5bc517edd3a9f44e128ec40ff3 (patch)
tree478af3a38d932bcee56efd455bc371751a6766b6 /src/server/DashUploadUtils.ts
parent6abda9e76cce35272ff73c3911af5aa8c18ce30b (diff)
fixed jimp upload to not hang when error occurs. fied imagebox to show original image if resized images fail.
Diffstat (limited to 'src/server/DashUploadUtils.ts')
-rw-r--r--src/server/DashUploadUtils.ts29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts
index 6cad49033..eb6c080ef 100644
--- a/src/server/DashUploadUtils.ts
+++ b/src/server/DashUploadUtils.ts
@@ -594,18 +594,25 @@ export namespace DashUploadUtils {
* @param outputDirectory the directory to output to, usually Directory.Images
* @returns a map with suffixes as keys and resized filenames as values.
*/
- export function outputResizedImages(sourcePath: string, outputFileName: string, outputDirectory: string) {
+ export async function outputResizedImages(sourcePath: string, outputFileName: string, outputDirectory: string) {
const writtenFiles: { [suffix: string]: string } = {};
- return Jimp.read(sourcePath).then(async img => {
- await Promise.all(
- imageResampleSizes(path.extname(outputFileName)).map(({ width, suffix }) => {
- const outputPath = path.resolve(outputDirectory, (writtenFiles[suffix] = InjectSize(outputFileName, suffix)));
- if (!width) return new Promise<void>(res => createReadStream(sourcePath).pipe(createWriteStream(outputPath)).on('close', res));
- else img = img.resize(width, Jimp.AUTO).write(outputPath);
- }) // prettier-ignore
- );
- return writtenFiles;
- });
+ const sizes = imageResampleSizes(path.extname(outputFileName));
+ const outputPath = (suffix: SizeSuffix) => path.resolve(outputDirectory, (writtenFiles[suffix] = InjectSize(outputFileName, suffix)));
+ await Promise.all(
+ sizes.filter(({ width }) => !width).map(({ suffix }) =>
+ new Promise<void>(res => createReadStream(sourcePath).pipe(createWriteStream(outputPath(suffix))).on('close', res))
+ )); // prettier-ignore
+ return Jimp.read(sourcePath)
+ .then(async img => {
+ await Promise.all( sizes.filter(({ width }) => width) .map(({ width, suffix }) =>
+ img = img.resize(width, Jimp.AUTO).write(outputPath(suffix))
+ )); // prettier-ignore
+ return writtenFiles;
+ })
+ .catch(e => {
+ console.log('ERROR' + e);
+ return writtenFiles;
+ });
}
/**