|
@@ -63,6 +63,32 @@ const updateMessageEmoji = async (req, res, next) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+const updateMessagePin = async (req, res, next) => {
|
|
|
+ try {
|
|
|
+ const id = req.params.id;
|
|
|
+ const userId = req.user.id;
|
|
|
+ const { pinned } = req.body;
|
|
|
+ const userMessage = await MessageModel.updateMessage(id, userId, {
|
|
|
+ pinned,
|
|
|
+ });
|
|
|
+ await MessageModel.findByFieldsAndUpdate(
|
|
|
+ userId,
|
|
|
+ userMessage.idTime,
|
|
|
+ userMessage.companionId,
|
|
|
+ {
|
|
|
+ pinned,
|
|
|
+ }
|
|
|
+ );
|
|
|
+ return res.status(200).json({
|
|
|
+ status: 'success',
|
|
|
+ code: 200,
|
|
|
+ data: {},
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ next(e);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
const removeMessage = async (req, res, next) => {
|
|
|
try {
|
|
|
const id = req.params.id;
|
|
@@ -116,6 +142,62 @@ const removeMessage = async (req, res, next) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+const removeSelected = async (req, res, next) => {
|
|
|
+ try {
|
|
|
+ const userId = req.user.id;
|
|
|
+ const { selectedArr, companionId } = req.body;
|
|
|
+ const totalDeleted = selectedArr.length;
|
|
|
+ const toDeleteMessage = async (id) => {
|
|
|
+ const userMessage = await MessageModel.remove(id, userId);
|
|
|
+ await MessageModel.removeByFields(
|
|
|
+ userId,
|
|
|
+ userMessage.idTime,
|
|
|
+ companionId
|
|
|
+ );
|
|
|
+ if (userMessage.type !== 'text') {
|
|
|
+ const params = {
|
|
|
+ Bucket: AWS_BUCKET_NAME,
|
|
|
+ Key: `${userMessage.message}`,
|
|
|
+ };
|
|
|
+ s3.deleteObject(params, async function (err, _data) {
|
|
|
+ if (err) throw err;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
+ await selectedArr.forEach(async (id) => await toDeleteMessage(id));
|
|
|
+ const isChat = await ChatModel.getByField(companionId, userId);
|
|
|
+ const isCompanionChat = await ChatModel.getByField(userId, companionId);
|
|
|
+ const { total } = await MessageModel.getList(
|
|
|
+ { owner: userId, companionId },
|
|
|
+ {}
|
|
|
+ );
|
|
|
+ const { total: Total } = await MessageModel.getList(
|
|
|
+ { owner: companionId, companionId: userId },
|
|
|
+ {}
|
|
|
+ );
|
|
|
+ await ChatModel.update(isChat._id, userId, {
|
|
|
+ total: total,
|
|
|
+ seen: isChat.seen - totalDeleted > 0 ? isChat.seen - totalDeleted : 0,
|
|
|
+ watched: false,
|
|
|
+ });
|
|
|
+ await ChatModel.update(isCompanionChat._id, companionId, {
|
|
|
+ total: Total,
|
|
|
+ seen:
|
|
|
+ isCompanionChat.seen - totalDeleted > 0
|
|
|
+ ? isCompanionChat.seen - totalDeleted
|
|
|
+ : 0,
|
|
|
+ watched: true,
|
|
|
+ });
|
|
|
+ return res.json({
|
|
|
+ status: 'success',
|
|
|
+ code: 200,
|
|
|
+ data: {},
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ next(e);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
const sentMessage = async (req, res, next) => {
|
|
|
try {
|
|
|
const { id, message, caption } = req.body;
|
|
@@ -546,7 +628,9 @@ const fileMessage = async (req, res, next) => {
|
|
|
module.exports = {
|
|
|
listMessages,
|
|
|
removeMessage,
|
|
|
+ removeSelected,
|
|
|
updateMessageEmoji,
|
|
|
+ updateMessagePin,
|
|
|
listMessagesById,
|
|
|
sentMessage,
|
|
|
imageMessage,
|