Browse Source

add ability to save avatar on aws3

unknown 2 years ago
parent
commit
072023d0df
2 changed files with 58 additions and 59 deletions
  1. 58 59
      controllers/user.js
  2. BIN
      files/6278f1bd0ea099001df7e428/1656074415audio.mp3

+ 58 - 59
controllers/user.js

@@ -187,20 +187,29 @@ const removeAvatar = async (req, res, next) => {
 		const filteredAvatars = [...avatarsArr].filter(
 			({ avatarUrl }) => avatarUrl !== toDelete.avatarUrl
 		);
-		await fs.unlink(path.join(DIR_STATIC, toDelete.avatarUrl));
 		const avatarUrl = filteredAvatars[0].avatarUrl;
-		await UserModel.updateUser(id, { avatarUrl, avatarsArr: filteredAvatars });
-		await ChatModel.updateCompanionsChat(id, {
-			avatarUrl,
-			avatarsArr: filteredAvatars,
-		});
-		await ContactModel.updateCompanionsContact(number, { avatarUrl });
-		await MessageModel.updateOwnerMessages(
-			{ companionIdFlow: { $eq: id } },
-			{ avatarUrl }
-		);
-		return res.status(200).json({
-			data: {},
+		const params = {
+			Bucket: AWS_BUCKET_NAME,
+			Key: `${toDelete.avatarUrl}`,
+		};
+		s3.deleteObject(params, async function (err, _data) {
+			if (err) throw err;
+			await UserModel.updateUser(id, {
+				avatarUrl,
+				avatarsArr: filteredAvatars,
+			});
+			await ChatModel.updateCompanionsChat(id, {
+				avatarUrl,
+				avatarsArr: filteredAvatars,
+			});
+			await ContactModel.updateCompanionsContact(number, { avatarUrl });
+			await MessageModel.updateOwnerMessages(
+				{ companionIdFlow: { $eq: id } },
+				{ avatarUrl }
+			);
+			return res.status(200).json({
+				data: {},
+			});
 		});
 	} catch (e) {
 		next(e);
@@ -209,61 +218,51 @@ const removeAvatar = async (req, res, next) => {
 
 const updateAvatar = async (req, res, next) => {
 	try {
-		const { token, id } = req.user;
+		const token = req.user.token;
+		const userId = req.user.id;
+		const userNumber = req.user.number;
 		const pathToFile = req.file.path;
 		const originalName = req.file.originalname;
-		// const newFileName = `${Math.round(Date.now() / 1000)}${id}${originalName}`;
-		// await fs.rename(
-		// 	path.join(DIR_UPLOAD, originalName),
-		// 	path.join(DIR_UPLOAD, newFileName)
-		// );
+		const newFileName = `${Math.round(
+			Date.now() / 1000
+		)}${userId}${originalName}`;
+		const cropImg = await Jimp.read(pathToFile);
+		await cropImg
+			.autocrop()
+			.cover(
+				250,
+				250,
+				Jimp.HORIZONTAL_ALIGN_CENTER | Jimp.VERTICAL_ALIGN_MIDDLE
+			)
+			.writeAsync(pathToFile);
 		const fileContent = await fs.readFile(pathToFile);
 		const params = {
 			Bucket: AWS_BUCKET_NAME,
-			Key: `${originalName}`,
+			Key: `${newFileName}`,
 			Body: fileContent,
 		};
-
-		s3.upload(params, (err, data) => {
+		s3.upload(params, async (err, data) => {
 			if (err) throw err;
 			fs.unlink(pathToFile);
-			console.log(`File uploaded successfully. ${data.Location}`);
-		});
-
-		// const userId = req.user.id;
-		// const userNumber = req.user.number;
-		// const pathToFile = req.file.path;
-		// const originalName = req.file.originalname;
-		// const newNameAvatar = `${Math.round(Date.now() / 1000)}${originalName}`;
-		// await createFolderIsExist(path.join(DIR_STATIC, userId));
-		// const img = await Jimp.read(pathToFile);
-		// await img
-		// 	.autocrop()
-		// 	.cover(
-		// 		250,
-		// 		250,
-		// 		Jimp.HORIZONTAL_ALIGN_CENTER | Jimp.VERTICAL_ALIGN_MIDDLE
-		// 	)
-		// 	.writeAsync(pathToFile);
-		// await fs.rename(pathToFile, path.join(DIR_STATIC, userId, newNameAvatar));
-		// const avatarUrl = path.normalize(path.join(userId, newNameAvatar));
-		// const avatarsArr = [
-		// 	{ avatarUrl, updatedAt: new Date() },
-		// 	...req.user.avatarsArr,
-		// ];
-		// await UserModel.updateUser(userId, { avatarUrl, avatarsArr });
-		// await ChatModel.updateCompanionsChat(userId, { avatarUrl, avatarsArr });
-		// await ContactModel.updateCompanionsContact(userNumber, { avatarUrl });
-		// await MessageModel.updateOwnerMessages(
-		// 	{ companionIdFlow: { $eq: userId } },
-		// 	{ avatarUrl }
-		// );
-		return res.status(200).json({
-			status: 'success',
-			code: 200,
-			data: {
-				token,
-			},
+			const avatarUrl = data.Location;
+			const avatarsArr = [
+				{ avatarUrl, updatedAt: new Date() },
+				...req.user.avatarsArr,
+			];
+			await UserModel.updateUser(userId, { avatarUrl, avatarsArr });
+			await ChatModel.updateCompanionsChat(userId, { avatarUrl, avatarsArr });
+			await ContactModel.updateCompanionsContact(userNumber, { avatarUrl });
+			await MessageModel.updateOwnerMessages(
+				{ companionIdFlow: { $eq: userId } },
+				{ avatarUrl }
+			);
+			return res.status(200).json({
+				status: 'success',
+				code: 200,
+				data: {
+					token,
+				},
+			});
 		});
 	} catch (e) {
 		next(e);

BIN
files/6278f1bd0ea099001df7e428/1656074415audio.mp3