feat: expose assignable conversation owners

This commit is contained in:
Sojan Jose
2026-06-26 02:07:41 -07:00
parent 4edf626af2
commit ca9bedfba1
13 changed files with 142 additions and 12 deletions
@@ -31,7 +31,7 @@ const mockUseMapGetter = (overrides = {}) => {
getSelectedChat: ref({ inbox_id: 1, meta: { assignee: true } }),
getCurrentAccountId: ref(1),
'inboxAssignableAgents/getAssignableAgents': ref(() => allAgentsData),
'agentBots/getBots': ref([]),
'inboxAssignableAgents/getAssignableOwners': ref(() => []),
};
const mergedGetters = { ...defaultGetters, ...overrides };
@@ -78,7 +78,16 @@ describe('useAgentsList', () => {
it('includes agent bots when includeAgentBots is true', () => {
mockUseMapGetter({
'agentBots/getBots': ref([{ id: 1, name: 'Bot', thumbnail: '' }]),
'inboxAssignableAgents/getAssignableOwners': ref(() => [
{ id: 2, name: 'Agent', assignee_type: 'User' },
{
id: 1,
name: 'Bot',
thumbnail: '',
assignee_type: 'AgentBot',
icon: 'i-lucide-bot',
},
]),
});
const { agentsList } = useAgentsList(true, true);
@@ -22,7 +22,9 @@ export function useAgentsList(
const currentChat = useMapGetter('getSelectedChat');
const currentAccountId = useMapGetter('getCurrentAccountId');
const assignable = useMapGetter('inboxAssignableAgents/getAssignableAgents');
const agentBots = useMapGetter('agentBots/getBots');
const assignableOwners = useMapGetter(
'inboxAssignableAgents/getAssignableOwners'
);
const inboxId = computed(() => currentChat.value?.inbox_id);
const isAgentSelected = computed(() => currentChat.value?.meta?.assignee);
@@ -47,18 +49,22 @@ export function useAgentsList(
return inboxId.value ? assignable.value(inboxId.value) : [];
});
const owners = computed(() => {
return includeAgentBots && inboxId.value
? assignableOwners.value(inboxId.value)
: [];
});
/**
* @type {import('vue').ComputedRef<Array>}
*/
const agentsList = computed(() => {
const agents = assignableAgents.value || [];
const bots = includeAgentBots
? agentBots.value.map(bot => ({
...bot,
assignee_type: 'AgentBot',
icon: 'i-lucide-bot',
}))
: [];
const agents = includeAgentBots
? owners.value.filter(owner => owner.assignee_type === 'User')
: assignableAgents.value || [];
const bots = owners.value.filter(
owner => owner.assignee_type === 'AgentBot'
);
const agentsByUpdatedPresence = getAgentsByUpdatedPresence(
agents,
currentUser.value,