diff --git a/api/server/services/Files/Firebase/crud.js b/api/server/services/Files/Firebase/crud.js index 8319f908ef..35e327148c 100644 --- a/api/server/services/Files/Firebase/crud.js +++ b/api/server/services/Files/Firebase/crud.js @@ -2,10 +2,10 @@ const fs = require('fs'); const path = require('path'); const axios = require('axios'); const fetch = require('node-fetch'); +const { logger } = require('@librechat/data-schemas'); const { ref, uploadBytes, getDownloadURL, deleteObject } = require('firebase/storage'); const { getBufferMetadata } = require('~/server/utils'); const { getFirebaseStorage } = require('./initialize'); -const { logger } = require('~/config'); /** * Deletes a file from Firebase Storage. @@ -145,7 +145,10 @@ function extractFirebaseFilePath(urlString) { } return ''; - } catch (error) { + } catch { + logger.debug( + '[extractFirebaseFilePath] Failed to extract Firebase file path from URL, returning empty string', + ); // If URL parsing fails, return an empty string return ''; } @@ -211,14 +214,24 @@ async function uploadFileToFirebase({ req, file, file_id }) { const inputBuffer = await fs.promises.readFile(inputFilePath); const bytes = Buffer.byteLength(inputBuffer); const userId = req.user.id; - const fileName = `${file_id}__${path.basename(inputFilePath)}`; - - const downloadURL = await saveBufferToFirebase({ userId, buffer: inputBuffer, fileName }); - - await fs.promises.unlink(inputFilePath); - - return { filepath: downloadURL, bytes }; + try { + const downloadURL = await saveBufferToFirebase({ userId, buffer: inputBuffer, fileName }); + return { filepath: downloadURL, bytes }; + } catch (err) { + logger.error('[uploadFileToFirebase] Error saving file buffer to Firebase:', err); + try { + if (file && file.path) { + await fs.promises.unlink(file.path); + } + } catch (unlinkError) { + logger.error( + '[uploadFileToFirebase] Error deleting temporary file, likely already deleted:', + unlinkError.message, + ); + } + throw err; + } } /**