|
@@ -1,5 +1,6 @@
|
|
|
const UserModel = require('../model/user');
|
|
|
const ChatModel = require('../model/chat');
|
|
|
+const MessageModel = require('../model/message');
|
|
|
const fs = require('fs').promises;
|
|
|
const path = require('path');
|
|
|
const Jimp = require('jimp');
|
|
@@ -54,7 +55,7 @@ const logIn = async (req, res, next) => {
|
|
|
if (!user.name || !user.lastName || !user.avatarUrl) registered = false;
|
|
|
const online = true;
|
|
|
await UserModel.updateUser(id, { token, code: '', online });
|
|
|
- await ChatModel.updateCompanionsChat(id, online);
|
|
|
+ await ChatModel.updateCompanionsChat(id, { online });
|
|
|
return res.status(200).json({
|
|
|
status: 'success',
|
|
|
code: 200,
|
|
@@ -81,7 +82,7 @@ const logOut = async (req, res, next) => {
|
|
|
message: 'Invalid credentials',
|
|
|
});
|
|
|
await UserModel.updateUser(id, { token: null, online });
|
|
|
- await ChatModel.updateCompanionsChat(id, online);
|
|
|
+ await ChatModel.updateCompanionsChat(id, { online });
|
|
|
return res.status(204).json({});
|
|
|
} catch (e) {
|
|
|
next(e);
|
|
@@ -100,7 +101,7 @@ const online = async (req, res, next) => {
|
|
|
data: 'UNAUTHORIZED',
|
|
|
message: 'Invalid credentials',
|
|
|
});
|
|
|
- await ChatModel.updateCompanionsChat(id, online);
|
|
|
+ await ChatModel.updateCompanionsChat(id, { online });
|
|
|
await UserModel.updateUser(id, { online });
|
|
|
return res.status(204).json({});
|
|
|
} catch (e) {
|
|
@@ -121,7 +122,7 @@ const getCurrent = async (req, res, next) => {
|
|
|
const id = req.user.id;
|
|
|
const online = true;
|
|
|
await UserModel.updateUser(id, { online });
|
|
|
- await ChatModel.updateCompanionsChat(id, online);
|
|
|
+ await ChatModel.updateCompanionsChat(id, { online });
|
|
|
const updatedUser = await UserModel.findById(id);
|
|
|
return res.status(200).json({
|
|
|
status: 'success',
|
|
@@ -136,7 +137,56 @@ const getCurrent = async (req, res, next) => {
|
|
|
const updateCredentials = async (req, res, next) => {
|
|
|
try {
|
|
|
const { id } = req.user;
|
|
|
+ const { name, lastName, originalName, originalLastName } = req.body;
|
|
|
await UserModel.updateUser(id, req.body);
|
|
|
+ await ChatModel.updateCompanionsChat(id, {
|
|
|
+ originalName,
|
|
|
+ originalLastName,
|
|
|
+ });
|
|
|
+ await MessageModel.updateOwnerMessages(
|
|
|
+ { companionIdFlow: { $eq: id }, owner: id },
|
|
|
+ { name, lastName }
|
|
|
+ );
|
|
|
+ return res.status(200).json({
|
|
|
+ data: {},
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ next(e);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const updateUser = async (req, res, next) => {
|
|
|
+ try {
|
|
|
+ const { id } = req.user;
|
|
|
+ await UserModel.updateUser(id, req.body);
|
|
|
+ return res.status(200).json({
|
|
|
+ data: {},
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ next(e);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const removeAvatar = async (req, res, next) => {
|
|
|
+ try {
|
|
|
+ const { id, avatarsArr } = req.user;
|
|
|
+ const index = req.params.index;
|
|
|
+ const toDelete = avatarsArr[index];
|
|
|
+ const filteredAvatars = [...avatarsArr].filter(
|
|
|
+ ({ avatarUrl }) => avatarUrl !== toDelete.avatarUrl
|
|
|
+ );
|
|
|
+ const DIR_IMAGES = process.env.DIR_IMAGES;
|
|
|
+ await fs.unlink(path.join(DIR_IMAGES, toDelete.avatarUrl));
|
|
|
+ const avatarUrl = filteredAvatars[0].avatarUrl;
|
|
|
+ await UserModel.updateUser(id, { avatarUrl, avatarsArr: filteredAvatars });
|
|
|
+ await ChatModel.updateCompanionsChat(id, {
|
|
|
+ avatarUrl,
|
|
|
+ avatarsArr: filteredAvatars,
|
|
|
+ });
|
|
|
+ await MessageModel.updateOwnerMessages(
|
|
|
+ { companionIdFlow: { $eq: id } },
|
|
|
+ { avatarUrl }
|
|
|
+ );
|
|
|
return res.status(200).json({
|
|
|
data: {},
|
|
|
});
|
|
@@ -170,6 +220,11 @@ const updateAvatar = async (req, res, next) => {
|
|
|
...req.user.avatarsArr,
|
|
|
];
|
|
|
await UserModel.updateUser(userId, { avatarUrl, avatarsArr });
|
|
|
+ await ChatModel.updateCompanionsChat(userId, { avatarUrl, avatarsArr });
|
|
|
+ await MessageModel.updateOwnerMessages(
|
|
|
+ { companionIdFlow: { $eq: userId } },
|
|
|
+ { avatarUrl }
|
|
|
+ );
|
|
|
return res.status(200).json({
|
|
|
status: 'success',
|
|
|
code: 200,
|
|
@@ -189,5 +244,7 @@ module.exports = {
|
|
|
online,
|
|
|
getCurrent,
|
|
|
updateCredentials,
|
|
|
+ updateUser,
|
|
|
+ removeAvatar,
|
|
|
updateAvatar,
|
|
|
};
|