diff --git a/packages/contact-center/cc-components/src/components/task/TaskList/task-list.utils.ts b/packages/contact-center/cc-components/src/components/task/TaskList/task-list.utils.ts index f902c1b1d..cb2bf046e 100644 --- a/packages/contact-center/cc-components/src/components/task/TaskList/task-list.utils.ts +++ b/packages/contact-center/cc-components/src/components/task/TaskList/task-list.utils.ts @@ -20,7 +20,7 @@ export const extractTaskListItemData = (task: ITask, isBrowser: boolean): TaskLi const taskState = task.data.interaction.state; const startTimeStamp = task.data.interaction.createdTimestamp; - const isIncomingTask = taskState === 'new' || taskState === 'consult'; + const isIncomingTask = !task?.data.wrapUpRequired && (taskState === 'new' || taskState === 'consult'); const mediaType = task.data.interaction.mediaType; const mediaChannel = task.data.interaction.mediaChannel; diff --git a/packages/contact-center/cc-components/tests/components/task/TaskList/task-list.utils.tsx b/packages/contact-center/cc-components/tests/components/task/TaskList/task-list.utils.tsx index f4ddc2905..f9e4f858f 100644 --- a/packages/contact-center/cc-components/tests/components/task/TaskList/task-list.utils.tsx +++ b/packages/contact-center/cc-components/tests/components/task/TaskList/task-list.utils.tsx @@ -126,6 +126,40 @@ describe('task-list.utils', () => { mockTask.data.interaction.mediaType = originalMediaType; }); + it('should extract correct data for incoming telephony task on browser if wrapUpRequired', () => { + const originalState = mockTask.data.interaction.state; + const originalCallAssociatedDetails = mockTask.data.interaction.callAssociatedDetails; + const originalWrapUpRequired = mockTask.data.wrapUpRequired; + const originalMediaType = mockTask.data.interaction.mediaType; + + mockTask.data.interaction.state = 'new'; + mockTask.data.interaction.callAssociatedDetails = { + ani: '9876543210', + customerName: 'Jane Smith', + virtualTeamName: 'Sales Team', + ronaTimeout: '60', + }; + mockTask.data.wrapUpRequired = true; + mockTask.data.interaction.mediaType = MEDIA_CHANNEL.TELEPHONY; + + const result = extractTaskListItemData(mockTask, true); + + expect(result.ani).toBe('9876543210'); + expect(result.ronaTimeout).toBeNull(); // Active tasks don't show RONA timeout + expect(result.taskState).toBe('new'); + expect(result.isIncomingTask).toBe(false); + expect(result.acceptText).toBeUndefined(); + expect(result.declineText).toBeUndefined(); + expect(result.disableAccept).toBe(false); + expect(result.displayState).toBe('new'); + + // Restore original values + mockTask.data.interaction.state = originalState; + mockTask.data.interaction.callAssociatedDetails = originalCallAssociatedDetails; + mockTask.data.wrapUpRequired = originalWrapUpRequired; + mockTask.data.interaction.mediaType = originalMediaType; + }); + it('should extract correct data for incoming telephony task on non-browser', () => { const originalState = mockTask.data.interaction.state; const originalCallAssociatedDetails = mockTask.data.interaction.callAssociatedDetails; diff --git a/packages/contact-center/store/src/storeEventsWrapper.ts b/packages/contact-center/store/src/storeEventsWrapper.ts index 859563be8..1d39d6391 100644 --- a/packages/contact-center/store/src/storeEventsWrapper.ts +++ b/packages/contact-center/store/src/storeEventsWrapper.ts @@ -203,7 +203,11 @@ class StoreWrapper implements IStoreWrapper { setCurrentTask = (task: ITask | null, isClicked: boolean = false): void => { // Don't assign the task as current task if the interaction state is 'new' or 'consult' - if (task?.data.interaction.state === 'new' || task?.data.interaction.state === 'consult') return; + if ( + !task?.data.wrapUpRequired && + (task?.data.interaction.state === 'new' || task?.data.interaction.state === 'consult') + ) + return; runInAction(() => { // Determine if the new task is the same as the current task