Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5761120fa8 | ||
|
|
7066f66fa7 |
@@ -30,7 +30,7 @@ class ConversationFinder
|
||||
def perform
|
||||
set_up
|
||||
|
||||
mine_count, unassigned_count, all_count, = set_count_for_all_conversations
|
||||
mine_count, unassigned_count, all_count, unread_count = set_count_for_all_conversations
|
||||
assigned_count = all_count - unassigned_count
|
||||
|
||||
filter_by_assignee_type
|
||||
@@ -41,7 +41,8 @@ class ConversationFinder
|
||||
mine_count: mine_count,
|
||||
assigned_count: assigned_count,
|
||||
unassigned_count: unassigned_count,
|
||||
all_count: all_count
|
||||
all_count: all_count,
|
||||
unread_count: unread_count
|
||||
}
|
||||
}
|
||||
end
|
||||
@@ -147,7 +148,10 @@ class ConversationFinder
|
||||
[
|
||||
@conversations.assigned_to(current_user).count,
|
||||
@conversations.unassigned.count,
|
||||
@conversations.count
|
||||
@conversations.count,
|
||||
@conversations.joins(:messages)
|
||||
.where('conversations.agent_last_seen_at IS NULL OR messages.created_at > conversations.agent_last_seen_at')
|
||||
.distinct.count
|
||||
]
|
||||
end
|
||||
|
||||
|
||||
@@ -111,6 +111,7 @@ class ActionCableConnector extends BaseActionCableConnector {
|
||||
} = data;
|
||||
DashboardAudioNotificationHelper.onNewMessage(data);
|
||||
this.app.$store.dispatch('addMessage', data);
|
||||
this.app.$store.dispatch('updateUnreadCount');
|
||||
this.app.$store.dispatch('updateConversationLastActivity', {
|
||||
lastActivityAt,
|
||||
conversationId,
|
||||
|
||||
@@ -289,6 +289,17 @@ const actions = {
|
||||
}
|
||||
},
|
||||
|
||||
updateUnreadCount({ getters }) {
|
||||
const { installationName } = window.chatwootConfig;
|
||||
const unreadCount = getters.getUnreadConversationsCount;
|
||||
|
||||
if (unreadCount === 0) {
|
||||
document.title = installationName;
|
||||
} else {
|
||||
document.title = `${installationName} (${getters.getUnreadConversationsCount})`;
|
||||
}
|
||||
},
|
||||
|
||||
updateMessage({ commit }, message) {
|
||||
commit(types.ADD_MESSAGE, message);
|
||||
},
|
||||
|
||||
@@ -10,6 +10,15 @@ export const getSelectedChatConversation = ({
|
||||
}) =>
|
||||
allConversations.filter(conversation => conversation.id === selectedChatId);
|
||||
|
||||
export const getUnreadCountForChat = chat => {
|
||||
return chat.messages.filter(
|
||||
chatMessage =>
|
||||
chatMessage.created_at * 1000 > chat.agent_last_seen_at * 1000 &&
|
||||
chatMessage.message_type === 0 &&
|
||||
chatMessage.private !== true
|
||||
).length;
|
||||
};
|
||||
|
||||
const sortComparator = {
|
||||
latest: (a, b) => b.last_activity_at - a.last_activity_at,
|
||||
sort_on_created_at: (a, b) => a.created_at - b.created_at,
|
||||
@@ -107,15 +116,15 @@ const getters = {
|
||||
? false
|
||||
: chat.allMessagesLoaded;
|
||||
},
|
||||
getUnreadConversationsCount({ allConversations }) {
|
||||
return allConversations.filter(chat => {
|
||||
return getUnreadCountForChat(chat) > 0;
|
||||
}).length;
|
||||
},
|
||||
getUnreadCount(_state) {
|
||||
const [chat] = getSelectedChatConversation(_state);
|
||||
if (!chat) return [];
|
||||
return chat.messages.filter(
|
||||
chatMessage =>
|
||||
chatMessage.created_at * 1000 > chat.agent_last_seen_at * 1000 &&
|
||||
chatMessage.message_type === 0 &&
|
||||
chatMessage.private !== true
|
||||
).length;
|
||||
return getUnreadCountForChat(chat);
|
||||
},
|
||||
getChatStatusFilter: ({ chatStatusFilter }) => chatStatusFilter,
|
||||
getChatSortFilter: ({ chatSortFilter }) => chatSortFilter,
|
||||
|
||||
@@ -4,6 +4,7 @@ json.data do
|
||||
json.assigned_count @conversations_count[:assigned_count]
|
||||
json.unassigned_count @conversations_count[:unassigned_count]
|
||||
json.all_count @conversations_count[:all_count]
|
||||
json.unread_count @conversations_count[:unread_count]
|
||||
end
|
||||
json.payload do
|
||||
json.array! @conversations do |conversation|
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
<%= csrf_meta_tags %>
|
||||
<script>
|
||||
window.chatwootConfig = {
|
||||
installationName: '<%= @global_config['INSTALLATION_NAME'] %>',
|
||||
hostURL: '<%= ENV.fetch('FRONTEND_URL', '') %>',
|
||||
helpCenterURL: '<%= ENV.fetch('HELPCENTER_URL', '') %>',
|
||||
fbAppId: '<%= ENV.fetch('FB_APP_ID', nil) %>',
|
||||
|
||||
Reference in New Issue
Block a user