fix: Disable showing read messages in unread view (#4324)

This commit is contained in:
Muhsin Keloth
2022-03-31 17:35:39 +05:30
committed by GitHub
parent 0477123f92
commit eff3a50316
5 changed files with 47 additions and 26 deletions

View File

@@ -138,7 +138,13 @@ export default {
}
},
registerUnreadEvents() {
bus.$on(ON_AGENT_MESSAGE_RECEIVED, this.setUnreadView);
bus.$on(ON_AGENT_MESSAGE_RECEIVED, () => {
const { name: routeName } = this.$route;
if (this.isWidgetOpen && routeName === 'messages') {
this.$store.dispatch('conversation/setUserLastSeen');
}
this.setUnreadView();
});
bus.$on(ON_UNREAD_MESSAGE_CLICK, () => {
this.replaceRoute('messages').then(() => this.unsetUnreadView());
});
@@ -175,6 +181,7 @@ export default {
},
setUnreadView() {
const { unreadMessageCount } = this;
if (this.isIFrame && unreadMessageCount > 0 && !this.isWidgetOpen) {
this.replaceRoute('unread-messages').then(() => {
this.setIframeHeight(true);

View File

@@ -84,8 +84,12 @@ export const actions = {
fetchOldConversations: async ({ commit }, { before } = {}) => {
try {
commit('setConversationListLoading', true);
const { data } = await getMessagesAPI({ before });
const formattedMessages = getNonDeletedMessages({ messages: data });
const {
data: { payload, meta },
} = await getMessagesAPI({ before });
const { contact_last_seen_at: lastSeen } = meta;
const formattedMessages = getNonDeletedMessages({ messages: payload });
commit('conversation/setMetaUserLastSeenAt', lastSeen, { root: true });
commit('setMessagesInConversation', formattedMessages);
commit('setConversationListLoading', false);
} catch (error) {

View File

@@ -181,22 +181,28 @@ describe('#actions', () => {
describe('#fetchOldConversations', () => {
it('sends correct actions', async () => {
API.get.mockResolvedValue({
data: [
{
id: 1,
text: 'hey',
content_attributes: {},
data: {
payload: [
{
id: 1,
text: 'hey',
content_attributes: {},
},
{
id: 2,
text: 'welcome',
content_attributes: { deleted: true },
},
],
meta: {
contact_last_seen_at: 1466424490,
},
{
id: 2,
text: 'welcome',
content_attributes: { deleted: true },
},
],
},
});
await actions.fetchOldConversations({ commit }, {});
expect(commit.mock.calls).toEqual([
['setConversationListLoading', true],
['conversation/setMetaUserLastSeenAt', 1466424490, { root: true }],
[
'setMessagesInConversation',
[

View File

@@ -1,11 +1,16 @@
json.array! @messages do |message|
json.id message.id
json.content message.content
json.message_type message.message_type_before_type_cast
json.content_type message.content_type
json.content_attributes message.content_attributes
json.created_at message.created_at.to_i
json.conversation_id message.conversation.display_id
json.attachments message.attachments.map(&:push_event_data) if message.attachments.present?
json.sender message.sender.push_event_data if message.sender
json.payload do
json.array! @messages do |message|
json.id message.id
json.content message.content
json.message_type message.message_type_before_type_cast
json.content_type message.content_type
json.content_attributes message.content_attributes
json.created_at message.created_at.to_i
json.conversation_id message.conversation.display_id
json.attachments message.attachments.map(&:push_event_data) if message.attachments.present?
json.sender message.sender.push_event_data if message.sender
end
end
json.meta do
json.contact_last_seen_at @conversation.contact_last_seen_at.to_i
end

View File

@@ -23,9 +23,8 @@ RSpec.describe '/api/v1/widget/messages', type: :request do
expect(response).to have_http_status(:success)
json_response = JSON.parse(response.body)
# 2 messages created + 2 messages by the email hook
expect(json_response.length).to eq(4)
expect(json_response['payload'].length).to eq(4)
end
end
end