refactor: optimize agent bot assignment dropdown (#14866)
This commit is contained in:
@@ -26,11 +26,12 @@ const mockNoneAgent = {
|
||||
};
|
||||
|
||||
const mockUseMapGetter = (overrides = {}) => {
|
||||
const getAssignableAgents = vi.fn(() => allAgentsData);
|
||||
const defaultGetters = {
|
||||
getCurrentUser: ref(allAgentsData[0]),
|
||||
getSelectedChat: ref({ inbox_id: 1, meta: { assignee: true } }),
|
||||
getCurrentAccountId: ref(1),
|
||||
'inboxAssignableAgents/getAssignableAgents': ref(() => allAgentsData),
|
||||
'inboxAssignableAgents/getAssignableAgents': ref(getAssignableAgents),
|
||||
};
|
||||
|
||||
const mergedGetters = { ...defaultGetters, ...overrides };
|
||||
@@ -53,6 +54,24 @@ describe('useAgentsList', () => {
|
||||
const { agentsList, assignableAgents } = useAgentsList();
|
||||
|
||||
expect(assignableAgents.value).toEqual(allAgentsData);
|
||||
expect(
|
||||
useMapGetter('inboxAssignableAgents/getAssignableAgents').value
|
||||
).toHaveBeenCalledWith(1, { includeAgentBots: false });
|
||||
expect(agentsList.value[0]).toEqual(mockNoneAgent);
|
||||
expect(agentsList.value.length).toBe(
|
||||
formattedAgentsData.slice(1).length + 1
|
||||
);
|
||||
});
|
||||
|
||||
it('requests agent bots when explicitly included', () => {
|
||||
const { agentsList, assignableAgents } = useAgentsList(true, {
|
||||
includeAgentBots: true,
|
||||
});
|
||||
|
||||
expect(assignableAgents.value).toEqual(allAgentsData);
|
||||
expect(
|
||||
useMapGetter('inboxAssignableAgents/getAssignableAgents').value
|
||||
).toHaveBeenCalledWith(1, { includeAgentBots: true });
|
||||
expect(agentsList.value[0]).toEqual(mockNoneAgent);
|
||||
expect(agentsList.value.length).toBe(
|
||||
formattedAgentsData.slice(1).length + 1
|
||||
|
||||
@@ -10,9 +10,14 @@ import {
|
||||
* A composable function that provides a list of agents for assignment.
|
||||
*
|
||||
* @param {boolean} [includeNoneAgent=true] - Whether to include a 'None' agent option.
|
||||
* @param {Object} [options] - Options for the assignable agents list.
|
||||
* @param {boolean} [options.includeAgentBots=false] - Whether to include AgentBot assignees. Only pass this from surfaces that thread `assignee_type` through the assignment request.
|
||||
* @returns {Object} An object containing the agents list and assignable agents.
|
||||
*/
|
||||
export function useAgentsList(includeNoneAgent = true) {
|
||||
export function useAgentsList(
|
||||
includeNoneAgent = true,
|
||||
{ includeAgentBots = false } = {}
|
||||
) {
|
||||
const { t } = useI18n();
|
||||
const currentUser = useMapGetter('getCurrentUser');
|
||||
const currentChat = useMapGetter('getSelectedChat');
|
||||
@@ -39,7 +44,9 @@ export function useAgentsList(includeNoneAgent = true) {
|
||||
* @type {import('vue').ComputedRef<Array>}
|
||||
*/
|
||||
const assignableAgents = computed(() => {
|
||||
return inboxId.value ? assignable.value(inboxId.value) : [];
|
||||
return inboxId.value
|
||||
? assignable.value(inboxId.value, { includeAgentBots })
|
||||
: [];
|
||||
});
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user