forked from webex/widgets
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtask-list.tsx
More file actions
78 lines (75 loc) · 3.38 KB
/
Copy pathtask-list.tsx
File metadata and controls
78 lines (75 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import React from 'react';
import {TaskListComponentProps, MEDIA_CHANNEL} from '../task.types';
import Task from '../Task';
import './styles.scss';
const TaskListComponent: React.FunctionComponent<TaskListComponentProps> = (props) => {
const {currentTask, taskList, acceptTask, declineTask, isBrowser, onTaskSelect, logger} = props;
if (!taskList || Object.keys(taskList).length === 0) {
return <></>; // hidden component
}
return (
<ul className="task-list" data-testid="task-list">
{Object.values(taskList)?.map((task, index) => {
//@ts-expect-error To be fixed in SDK - https://jira-eng-sjc12.cisco.com/jira/browse/CAI-6762IT
const callAssociationDetails = task?.data?.interaction?.callAssociatedDetails;
const ani = callAssociationDetails?.ani;
const customerName = callAssociationDetails?.customerName;
const virtualTeamName = callAssociationDetails?.virtualTeamName;
// rona timeout is not always available in the callAssociatedDetails object
const ronaTimeout = callAssociationDetails?.ronaTimeout ? Number(callAssociationDetails?.ronaTimeout) : null;
const taskState = task.data.interaction.state;
const startTimeStamp = task.data.interaction.createdTimestamp;
const isIncomingTask = taskState === 'new' || taskState === 'consult';
const mediaType = task.data.interaction.mediaType;
const mediaChannel = task.data.interaction.mediaChannel;
const isTelephony = mediaType === MEDIA_CHANNEL.TELEPHONY;
const isSocial = mediaType === MEDIA_CHANNEL.SOCIAL;
const acceptText =
isIncomingTask && !task.data.wrapUpRequired
? isTelephony && !isBrowser
? 'Ringing...'
: 'Accept'
: undefined;
const declineText =
isIncomingTask && !task.data.wrapUpRequired && isTelephony && isBrowser ? 'Decline' : undefined;
logger.info('CC-Widgets: TaskList: rendering task list', {
module: 'task-list.tsx',
method: 'renderItem',
});
return (
<Task
interactionId={task.data.interactionId}
title={isSocial ? customerName : ani}
state={!isIncomingTask ? taskState : ''}
startTimeStamp={startTimeStamp}
selected={currentTask?.data.interactionId === task.data.interactionId}
key={index}
isIncomingTask={isIncomingTask}
queue={virtualTeamName}
acceptTask={() => acceptTask(task)}
declineTask={() => declineTask(task)}
ronaTimeout={isIncomingTask ? ronaTimeout : null}
onTaskSelect={() => {
logger.log(`CC-Widgets: TaskList: select task clicked for interactionId: ${task.data.interactionId}`, {
module: 'task-list.tsx',
method: 'onTaskSelect',
});
if (
currentTask?.data.interactionId !== task.data.interactionId &&
!(isIncomingTask && !task.data.wrapUpRequired)
) {
onTaskSelect(task);
}
}}
acceptText={acceptText}
disableAccept={isIncomingTask && isTelephony && !isBrowser}
declineText={declineText}
mediaType={mediaType}
mediaChannel={mediaChannel}
/>
);
})}
</ul>
);
};
export default TaskListComponent;