Skip to content
Snippets Groups Projects
Unverified Commit 11493a66 authored by Anton Georgiev's avatar Anton Georgiev Committed by GitHub
Browse files

Merge pull request #12010 from ramonlsouza/chat-cleanup

Fix previous messages chat alerts and remove unused code
parents 02270d45 c3a3bf18
No related branches found
No related tags found
No related merge requests found
......@@ -73,7 +73,7 @@ class ChatAlert extends PureComponent {
// Avoid alerting messages received before enabling alerts
if (prevProps.pushAlertDisabled && !pushAlertDisabled) {
const newAlertEnabledTimestamp = Service.getLastMessageTimestampFromChatList(activeChats);
const newAlertEnabledTimestamp = Service.getLastMessageTimestampFromChatList(activeChats, messages);
this.setAlertEnabledTimestamp(newAlertEnabledTimestamp);
return;
}
......@@ -93,6 +93,7 @@ class ChatAlert extends PureComponent {
&& msg.timestamp > alertEnabledTimestamp
&& msg.timestamp > joinTimestamp
&& msg.timestamp > (lastAlertTimestampByChat[chatId] || 0)
&& !pushAlertDisabled
);
return retorno;
});
......
import Users from '/imports/api/users';
import Meetings from '/imports/api/meetings';
import { GroupChatMsg } from '/imports/api/group-chat-msg';
import GroupChat from '/imports/api/group-chat';
import Auth from '/imports/ui/services/auth';
import UnreadMessages from '/imports/ui/services/unread-messages';
......@@ -17,7 +16,6 @@ const SYSTEM_CHAT_TYPE = CHAT_CONFIG.type_system;
const PUBLIC_CHAT_ID = CHAT_CONFIG.public_id;
const PUBLIC_GROUP_CHAT_ID = CHAT_CONFIG.public_group_id;
const PRIVATE_CHAT_TYPE = CHAT_CONFIG.type_private;
const ROLE_MODERATOR = Meteor.settings.public.user.role_moderator;
......@@ -109,77 +107,12 @@ const reduceGroupMessages = (previous, current) => {
return previous.concat(currentMessage);
};
const getChatMessages = (chatId) => {
return []
if (chatId === PUBLIC_CHAT_ID) {
return GroupChatMsg.find({
meetingId: Auth.meetingID,
chatId: PUBLIC_GROUP_CHAT_ID,
}, { sort: ['timestamp'] }).fetch();
}
const senderId = Auth.userID;
const privateChat = GroupChat.findOne({
meetingId: Auth.meetingID,
users: { $all: [chatId, senderId] },
access: PRIVATE_CHAT_TYPE,
});
if (privateChat) {
const {
chatId: id,
} = privateChat;
return GroupChatMsg.find({
meetingId: Auth.meetingID,
chatId: id,
}, { sort: ['timestamp'] }).fetch();
}
};
const reduceAndMapGroupMessages = messages => (messages
.reduce(reduceGroupMessages, []).map(mapGroupMessage));
const reduceAndDontMapGroupMessages = messages => (messages
.reduce(reduceGroupMessages, []));
const getPublicGroupMessages = () => {
return [];
const publicGroupMessages = GroupChatMsg.find({
meetingId: Auth.meetingID,
chatId: PUBLIC_GROUP_CHAT_ID,
}, { sort: ['timestamp'] }).fetch();
return publicGroupMessages;
};
const getPrivateGroupMessages = () => {
return [];
const chatID = Session.get('idChatOpen');
const senderId = Auth.userID;
const privateChat = GroupChat.findOne({
meetingId: Auth.meetingID,
users: { $all: [chatID, senderId] },
access: PRIVATE_CHAT_TYPE,
});
let messages = [];
if (privateChat) {
const {
chatId,
} = privateChat;
messages = GroupChatMsg.find({
meetingId: Auth.meetingID,
chatId,
}, { sort: ['timestamp'] }).fetch();
}
return reduceAndDontMapGroupMessages(messages, []);
};
const isChatLocked = (receiverID) => {
const isPublic = receiverID === PUBLIC_CHAT_ID;
const meeting = Meetings.findOne({ meetingId: Auth.meetingID },
......@@ -331,35 +264,23 @@ const exportChat = (timeWindowList, users, intl) => {
return messageList.join('\n');
}
const getAllMessages = (chatID) => {
return [];
const filter = {
'sender.id': { $ne: Auth.userID },
};
if (chatID === PUBLIC_GROUP_CHAT_ID) {
filter.chatId = { $eq: chatID };
} else {
const privateChat = GroupChat.findOne({ users: { $all: [chatID, Auth.userID] } });
filter.chatId = { $ne: PUBLIC_GROUP_CHAT_ID };
if (privateChat) {
filter.chatId = privateChat.chatId;
}
const getAllMessages = (chatID, messages) => {
if(!messages[chatID]){
return [];
}
const messages = GroupChatMsg.find(filter).fetch();
return messages;
return (chatID === PUBLIC_GROUP_CHAT_ID)
? Object.values(messages[chatID].posJoinMessages)
: Object.values(messages[chatID].messageGroups)
};
const maxTimestampReducer = (max, el) => ((el.timestamp > max) ? el.timestamp : max);
const maxNumberReducer = (max, el) => ((el > max) ? el : max);
const getLastMessageTimestampFromChatList = activeChats => activeChats
.map(chat => ((chat.userId === 'public') ? 'MAIN-PUBLIC-GROUP-CHAT' : chat.userId))
.map(chatId => getAllMessages(chatId).reduce(maxTimestampReducer, 0))
const getLastMessageTimestampFromChatList = (activeChats, messages) => activeChats
.map((chat) => ((chat.userId === 'public') ? 'MAIN-PUBLIC-GROUP-CHAT' : chat.chatId))
.map((chatId) => getAllMessages(chatId, messages).reduce(maxTimestampReducer, 0))
.reduce(maxNumberReducer, 0);
const removePackagedClassAttribute = (classnames, attribute) => {
......@@ -378,9 +299,6 @@ export default {
mapGroupMessage,
reduceAndMapGroupMessages,
reduceAndDontMapGroupMessages,
getChatMessages,
getPublicGroupMessages,
getPrivateGroupMessages,
getUser,
getPrivateChatByUsers,
getWelcomeProp,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment