From 79cdb8631aa5c0e7cbd8643b2a2f2fde251f24e4 Mon Sep 17 00:00:00 2001 From: timothycarambat Date: Wed, 6 Dec 2023 11:56:07 -0800 Subject: [PATCH] fix: fix logo fetching raising errors in server --- server/utils/files/logo.js | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/server/utils/files/logo.js b/server/utils/files/logo.js index 434f8d72cb..14e8032f90 100644 --- a/server/utils/files/logo.js +++ b/server/utils/files/logo.js @@ -15,7 +15,9 @@ function getDefaultFilename() { async function determineLogoFilepath(defaultFilename = LOGO_FILENAME) { const currentLogoFilename = await SystemSettings.currentLogoFilename(); - const basePath = path.join(__dirname, "../../storage/assets"); + const basePath = process.env.STORAGE_DIR + ? path.join(process.env.STORAGE_DIR, "assets") + : path.join(__dirname, "../../storage/assets"); const defaultFilepath = path.join(basePath, defaultFilename); if (currentLogoFilename && validFilename(currentLogoFilename)) { @@ -27,6 +29,15 @@ async function determineLogoFilepath(defaultFilename = LOGO_FILENAME) { } function fetchLogo(logoPath) { + if (!fs.existsSync(logoPath)) { + return { + found: false, + buffer: null, + size: 0, + mime: "none/none", + }; + } + const mime = getType(logoPath); const buffer = fs.readFileSync(logoPath); return { @@ -39,14 +50,12 @@ function fetchLogo(logoPath) { async function renameLogoFile(originalFilename = null) { const extname = path.extname(originalFilename) || ".png"; const newFilename = `${v4()}${extname}`; - const originalFilepath = path.join( - __dirname, - `../../storage/assets/${originalFilename}` - ); - const outputFilepath = path.join( - __dirname, - `../../storage/assets/${newFilename}` - ); + const originalFilepath = process.env.STORAGE_DIR + ? path.join(process.env.STORAGE_DIR, "assets", originalFilename) + : path.join(__dirname, `../../storage/assets/${originalFilename}`); + const outputFilepath = process.env.STORAGE_DIR + ? path.join(process.env.STORAGE_DIR, "assets", newFilename) + : path.join(__dirname, `../../storage/assets/${newFilename}`); fs.renameSync(originalFilepath, outputFilepath); return newFilename; @@ -54,7 +63,9 @@ async function renameLogoFile(originalFilename = null) { async function removeCustomLogo(logoFilename = LOGO_FILENAME) { if (!logoFilename || !validFilename(logoFilename)) return false; - const logoPath = path.join(__dirname, `../../storage/assets/${logoFilename}`); + const logoPath = process.env.STORAGE_DIR + ? path.join(process.env.STORAGE_DIR, `assets/${logoFilename}`) + : path.join(__dirname, `../../storage/assets/${logoFilename}`); if (fs.existsSync(logoPath)) fs.unlinkSync(logoPath); return true; }