fix: keep pending widget conversations visible and searchable
Build and publish Docker images / Build and publish images (push) Successful in 2m25s
Build and publish Docker images / Build and publish images (push) Successful in 2m25s
This commit is contained in:
@@ -50,6 +50,7 @@ import {
|
||||
filterItemsByPermission,
|
||||
} from 'dashboard/helper/permissionsHelper.js';
|
||||
import { matchesFilters } from '../store/modules/conversations/helpers/filterHelpers';
|
||||
import { isConversationUnassigned } from '../store/modules/conversations/helpers';
|
||||
import { CONVERSATION_EVENTS } from '../helper/AnalyticsHelper/events';
|
||||
import { ASSIGNEE_TYPE_TAB_PERMISSIONS } from 'dashboard/constants/permissions.js';
|
||||
|
||||
@@ -305,7 +306,7 @@ function filterByAssigneeTab(conversations) {
|
||||
);
|
||||
}
|
||||
if (activeAssigneeTab.value === wootConstants.ASSIGNEE_TYPE.UNASSIGNED) {
|
||||
return conversations.filter(c => !c.meta?.assignee);
|
||||
return conversations.filter(isConversationUnassigned);
|
||||
}
|
||||
return [...conversations];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import { MESSAGE_TYPE } from 'shared/constants/messages';
|
||||
import { applyPageFilters, applyRoleFilter, sortComparator } from './helpers';
|
||||
import {
|
||||
applyPageFilters,
|
||||
applyRoleFilter,
|
||||
isConversationUnassigned,
|
||||
sortComparator,
|
||||
} from './helpers';
|
||||
import filterQueryGenerator from 'dashboard/helper/filterQueryGenerator';
|
||||
import { matchesFilters } from './helpers/filterHelpers';
|
||||
import {
|
||||
@@ -99,7 +104,7 @@ const getters = {
|
||||
},
|
||||
getUnAssignedChats: _state => activeFilters => {
|
||||
return _state.allConversations.filter(conversation => {
|
||||
const isUnAssigned = !conversation.meta.assignee;
|
||||
const isUnAssigned = isConversationUnassigned(conversation);
|
||||
const shouldFilter = applyPageFilters(conversation, activeFilters);
|
||||
return isUnAssigned && shouldFilter;
|
||||
});
|
||||
|
||||
@@ -11,6 +11,11 @@ export const findPendingMessageIndex = (chat, message) => {
|
||||
);
|
||||
};
|
||||
|
||||
export const isConversationUnassigned = conversation => {
|
||||
const { assignee, assignee_type: assigneeType } = conversation.meta || {};
|
||||
return !assignee || assigneeType === 'AgentBot';
|
||||
};
|
||||
|
||||
export const filterByStatus = (chatStatus, filterStatus) =>
|
||||
filterStatus === 'all' ? true : chatStatus === filterStatus;
|
||||
|
||||
@@ -95,7 +100,7 @@ export const applyRoleFilter = (
|
||||
}
|
||||
|
||||
const conversationAssignee = conversation.meta.assignee;
|
||||
const isUnassigned = !conversationAssignee;
|
||||
const isUnassigned = isConversationUnassigned(conversation);
|
||||
const isAssignedToUser = conversationAssignee?.id === currentUserId;
|
||||
|
||||
// Check unassigned management permission
|
||||
|
||||
@@ -159,6 +159,13 @@ describe('#getters', () => {
|
||||
meta: { team: { id: 5 } },
|
||||
labels: ['sales'],
|
||||
},
|
||||
{
|
||||
id: 33,
|
||||
inbox_id: 4,
|
||||
status: 1,
|
||||
meta: { assignee: { id: 9 }, assignee_type: 'AgentBot' },
|
||||
labels: [],
|
||||
},
|
||||
];
|
||||
|
||||
expect(
|
||||
@@ -180,6 +187,13 @@ describe('#getters', () => {
|
||||
meta: { team: { id: 5 } },
|
||||
labels: ['sales'],
|
||||
},
|
||||
{
|
||||
id: 33,
|
||||
inbox_id: 4,
|
||||
status: 1,
|
||||
meta: { assignee: { id: 9 }, assignee_type: 'AgentBot' },
|
||||
labels: [],
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import {
|
||||
findPendingMessageIndex,
|
||||
isConversationUnassigned,
|
||||
applyPageFilters,
|
||||
filterByInbox,
|
||||
filterByTeam,
|
||||
@@ -56,6 +57,24 @@ describe('#findPendingMessageIndex', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('#isConversationUnassigned', () => {
|
||||
it('treats an agent-bot conversation as unassigned for agent queues', () => {
|
||||
expect(
|
||||
isConversationUnassigned({
|
||||
meta: { assignee: { id: 7 }, assignee_type: 'AgentBot' },
|
||||
})
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('does not treat a human-assigned conversation as unassigned', () => {
|
||||
expect(
|
||||
isConversationUnassigned({
|
||||
meta: { assignee: { id: 7 }, assignee_type: 'User' },
|
||||
})
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#applyPageFilters', () => {
|
||||
describe('#filter-team', () => {
|
||||
it('returns true if conversation has team and team filter is active', () => {
|
||||
|
||||
Reference in New Issue
Block a user