diff --git a/functions/handlers/users.js b/functions/handlers/users.js index ec71b0f..4138134 100644 --- a/functions/handlers/users.js +++ b/functions/handlers/users.js @@ -266,64 +266,121 @@ exports.getAuthenticatedUser = (req, res) => { // Uploads a profile image exports.uploadProfileImage = (req, res) => { - const BusBoy = require("busboy"); - const path = require("path"); - const os = require("os"); - const fs = require("fs"); + // const BusBoy = require("busboy"); + // const path = require("path"); + // const os = require("os"); + // const fs = require("fs"); + + // const busboy = new BusBoy({ headers: req.headers }); + + // let imageFileName; + // let imageToBeUploaded = {}; + // let oldImageFileName = req.userData.imageUrl.split("/o/")[1].split("?alt")[0]; + // console.log(`old file: ${oldImageFileName}`); + + // busboy.on("file", (fieldname, file, filename, encoding, mimetype) => { + // if (mimetype !== 'image/jpeg' && mimetype !== 'image/png') { + // return res.status(400).json({ error: "Wrong filetype submitted" }); + // } + // // console.log(fieldname); + // // console.log(filename); + // // console.log(mimetype); + // const imageExtension = filename.split(".")[filename.split(".").length - 1]; // Get the image file extension + // imageFileName = `${Math.round(Math.random() * 100000000000)}.${imageExtension}`; // Get a random filename + // const filepath = path.join(os.tmpdir(), imageFileName); + // imageToBeUploaded = { filepath, mimetype }; + // file.pipe(fs.createWriteStream(filepath)); + // }); + // busboy.on("finish", () => { + // admin.storage().bucket().upload(imageToBeUploaded.filepath, { + // resumable: false, + // metadata: { + // metadata: { + // contentType: imageToBeUploaded.mimetype + // } + // } + // }) + // .then(() => { + // const imageUrl = `https://firebasestorage.googleapis.com/v0/b/${config.storageBucket}/o/${imageFileName}?alt=media`; + // return db.doc(`/users/${req.user.handle}`).update({ imageUrl }); + // }) + // .then(() => { + // if (oldImageFileName !== "no-img.png") { + // admin.storage().bucket().file(oldImageFileName).delete() + // .then(() => { + // return res.status(201).json({ message: "Image uploaded successfully1"}); + // }) + // .catch((err) => { + // console.log(err); + // return res.status(201).json({ message: "Image uploaded successfully2"}); + // }) + // // return res.status(201).json({ message: "Image uploaded successfully"}); + // } else { + // return res.status(201).json({ message: "Image uploaded successfully3"}); + // } + + // }) + // .catch((err) => { + // console.error(err); + // return res.status(500).json({ error: err.code}) + // }) + // }); + // busboy.end(req.rawBody); + + const BusBoy = require('busboy'); + const path = require('path'); + const os = require('os'); + const fs = require('fs'); const busboy = new BusBoy({ headers: req.headers }); - let imageFileName; let imageToBeUploaded = {}; - let oldImageFileName = req.userData.imageUrl.split("/o/")[1].split("?alt")[0]; - console.log(`old file: ${oldImageFileName}`); + let imageFileName; - busboy.on("file", (fieldname, file, filename, encoding, mimetype) => { + busboy.on('file', (fieldname, file, filename, encoding, mimetype) => { + // console.log(fieldname, file, filename, encoding, mimetype); if (mimetype !== 'image/jpeg' && mimetype !== 'image/png') { - return res.status(400).json({ error: "Wrong filetype submitted" }); + return res.status(400).json({ error: 'Wrong file type submitted' }); } - // console.log(fieldname); - // console.log(filename); - // console.log(mimetype); - const imageExtension = filename.split(".")[filename.split(".").length - 1]; // Get the image file extension - imageFileName = `${Math.round(Math.random() * 100000000000)}.${imageExtension}`; // Get a random filename + // my.image.png => ['my', 'image', 'png'] + const imageExtension = filename.split('.')[filename.split('.').length - 1]; + // 32756238461724837.png + imageFileName = `${Math.round( + Math.random() * 1000000000000 + ).toString()}.${imageExtension}`; const filepath = path.join(os.tmpdir(), imageFileName); imageToBeUploaded = { filepath, mimetype }; file.pipe(fs.createWriteStream(filepath)); }); - busboy.on("finish", () => { - admin.storage().bucket().upload(imageToBeUploaded.filepath, { - resumable: false, - metadata: { + busboy.on('finish', () => { + admin + .storage() + .bucket() + .upload(imageToBeUploaded.filepath, { + resumable: false, metadata: { - contentType: imageToBeUploaded.mimetype + metadata: { + contentType: imageToBeUploaded.mimetype + } } - } - }) - .then(() => { - const imageUrl = `https://firebasestorage.googleapis.com/v0/b/${config.storageBucket}/o/${imageFileName}?alt=media`; - return db.doc(`/users/${req.user.handle}`).update({ imageUrl }); - }) - .then(() => { - if (oldImageFileName !== "no-img.png") { - admin.storage().bucket().file(oldImageFileName).delete() - .then(() => { - return res.status(201).json({ message: "Image uploaded successfully1"}); - }) - .catch((err) => { - console.log(err); - return res.status(201).json({ message: "Image uploaded successfully2"}); - }) - // return res.status(201).json({ message: "Image uploaded successfully"}); - } else { - return res.status(201).json({ message: "Image uploaded successfully3"}); - } - - }) - .catch((err) => { - console.error(err); - return res.status(500).json({ error: err.code}) - }) + }) + .then(() => { + const imageUrl = `https://firebasestorage.googleapis.com/v0/b/${ + config.storageBucket + }/o/${imageFileName}?alt=media`; + return db.doc(`/users/${req.user.handle}`).update({ imageUrl }); + }) + .then(() => { + return res.json({ message: 'image uploaded successfully' }); + }) + .catch((err) => { + console.error(err); + return res.status(500).json({ error: 'something went wrong' }); + }); }); + try { busboy.end(req.rawBody); + } catch (err) { + return res.status(500).json({error: err}); + } }