@webex/cc-store 1.28.0-ccwidgets.52 → 1.28.0-ccwidgets.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -12346,7 +12346,7 @@ eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ?
|
|
|
12346
12346
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
12347
12347
|
|
|
12348
12348
|
"use strict";
|
|
12349
|
-
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst mobx_1 = __webpack_require__(/*! mobx */ \"../../../node_modules/mobx/dist/mobx.esm.js\");\nconst contact_center_1 = __importDefault(__webpack_require__(/*! webex/contact-center */ \"./node_modules/webex/dist/contact-center.js\"));\nconst util_1 = __webpack_require__(/*! ./util */ \"./src/util.ts\");\nclass Store {\n constructor() {\n this.teams = [];\n this.loginOptions = [];\n this.idleCodes = [];\n this.agentId = '';\n this.currentTheme = 'LIGHT';\n this.wrapupCodes = [];\n this.
|
|
12349
|
+
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst mobx_1 = __webpack_require__(/*! mobx */ \"../../../node_modules/mobx/dist/mobx.esm.js\");\nconst contact_center_1 = __importDefault(__webpack_require__(/*! webex/contact-center */ \"./node_modules/webex/dist/contact-center.js\"));\nconst util_1 = __webpack_require__(/*! ./util */ \"./src/util.ts\");\nclass Store {\n constructor() {\n this.teams = [];\n this.loginOptions = [];\n this.idleCodes = [];\n this.agentId = '';\n this.currentTheme = 'LIGHT';\n this.wrapupCodes = [];\n this.currentTask = null;\n this.isAgentLoggedIn = false;\n this.deviceType = '';\n this.taskList = {};\n this.dialNumber = '';\n this.currentState = '';\n this.customState = null;\n this.consultCompleted = false;\n this.consultInitiated = false;\n this.consultAccepted = false;\n this.isQueueConsultInProgress = false;\n this.currentConsultQueueId = '';\n this.consultStartTimeStamp = undefined;\n this.showMultipleLoginAlert = false;\n this.callControlAudio = null;\n this.consultOfferReceived = false;\n this.featureFlags = {};\n this.isEndConsultEnabled = false;\n this.allowConsultToQueue = false;\n this.taskMetaData = {};\n (0, mobx_1.makeAutoObservable)(this, {\n cc: mobx_1.observable.ref,\n });\n }\n static getInstance() {\n if (!Store.instance) {\n console.log('Creating new store instance');\n Store.instance = new Store();\n }\n console.log('Returning store instance');\n return Store.instance;\n }\n registerCC(webex) {\n if (webex) {\n this.cc = webex.cc;\n }\n if (typeof webex === 'undefined' && typeof this.cc === 'undefined') {\n throw new Error('Webex SDK not initialized');\n }\n this.logger = this.cc.LoggerProxy;\n return this.cc\n .register()\n .then((response) => {\n var _a;\n this.featureFlags = (0, util_1.getFeatureFlags)(response);\n this.teams = response.teams;\n this.loginOptions = response.webRtcEnabled\n ? response.loginVoiceOptions\n : response.loginVoiceOptions.filter((option) => option !== 'BROWSER');\n this.idleCodes = response.idleCodes;\n this.agentId = response.agentId;\n this.wrapupCodes = response.wrapupCodes;\n this.isAgentLoggedIn = response.isAgentLoggedIn;\n this.deviceType = (_a = response.deviceType) !== null && _a !== void 0 ? _a : 'AGENT_DN';\n this.dialNumber = response.defaultDn;\n this.currentState = response.lastStateAuxCodeId;\n this.lastStateChangeTimestamp = response.lastStateChangeTimestamp;\n this.lastIdleCodeChangeTimestamp = response.lastIdleCodeChangeTimestamp;\n this.isEndConsultEnabled = response.isEndConsultEnabled;\n this.allowConsultToQueue = response.allowConsultToQueue;\n })\n .catch((error) => {\n this.logger.error(`Error registering contact center: ${error}`, {\n module: 'cc-store#store.ts',\n method: 'registerCC',\n });\n return Promise.reject(error);\n });\n }\n init(options, setupEventListeners) {\n if ('webex' in options) {\n // If devs decide to go with webex, they will have to listen to the ready event before calling init\n // This has to be documented\n setupEventListeners(options.webex.cc);\n return this.registerCC(options.webex);\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error('Webex SDK failed to initialize'));\n }, 6000);\n const webex = contact_center_1.default.init({\n config: options.webexConfig,\n credentials: {\n access_token: options.access_token,\n },\n });\n webex.once('ready', () => {\n setupEventListeners(webex.cc);\n clearTimeout(timer);\n this.registerCC(webex)\n .then(() => {\n resolve();\n })\n .catch((error) => {\n reject(error);\n });\n });\n });\n }\n}\nexports[\"default\"] = Store;\n\n\n//# sourceURL=webpack://@webex/cc-store/./src/store.ts?");
|
|
12350
12350
|
|
|
12351
12351
|
/***/ }),
|
|
12352
12352
|
|
|
@@ -12368,7 +12368,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexpo
|
|
|
12368
12368
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
12369
12369
|
|
|
12370
12370
|
"use strict";
|
|
12371
|
-
eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst store_types_1 = __webpack_require__(/*! ./store.types */ \"./src/store.types.ts\");\nconst store_1 = __importDefault(__webpack_require__(/*! ./store */ \"./src/store.ts\"));\nconst mobx_1 = __webpack_require__(/*! mobx */ \"../../../node_modules/mobx/dist/mobx.esm.js\");\nclass StoreWrapper {\n constructor() {\n this.setTaskMetaData = (taskId, data) => {\n this.store.taskMetaData[taskId] = data;\n };\n this.setCurrentTheme = (theme) => {\n this.store.currentTheme = theme;\n };\n this.setShowMultipleLoginAlert = (value) => {\n this.store.showMultipleLoginAlert = value;\n };\n this.setDeviceType = (option) => {\n this.store.deviceType = option;\n };\n this.setDialNumber = (input) => {\n this.store.dialNumber = input;\n };\n this.setCurrentState = (state) => {\n (0, mobx_1.runInAction)(() => {\n this.store.currentState = state;\n this.store.customState = null;\n });\n };\n this.setLastStateChangeTimestamp = (timestamp) => {\n (0, mobx_1.runInAction)(() => {\n this.store.lastStateChangeTimestamp = timestamp;\n });\n };\n this.setLastIdleCodeChangeTimestamp = (timestamp) => {\n (0, mobx_1.runInAction)(() => {\n this.store.lastIdleCodeChangeTimestamp = timestamp;\n });\n };\n this.setIsAgentLoggedIn = (value) => {\n this.store.isAgentLoggedIn = value;\n };\n this.setCurrentTask = (task) => {\n (0, mobx_1.runInAction)(() => {\n var _a, _b, _c;\n // Save data from the current task if it exists\n if (this.currentTask) {\n const interactionId = (_b = (_a = this.currentTask) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.interactionId;\n this.setTaskMetaData(interactionId, {\n consultCompleted: this.store.consultCompleted,\n consultInitiated: this.store.consultInitiated,\n consultAccepted: this.store.consultAccepted,\n isQueueConsultInProgress: this.store.isQueueConsultInProgress,\n currentConsultQueueId: this.store.currentConsultQueueId,\n consultStartTimeStamp: this.store.consultStartTimeStamp,\n consultOfferReceived: this.store.consultOfferReceived,\n });\n }\n // Update the current task\n this.store.currentTask = task ? Object.assign(Object.create(Object.getPrototypeOf(task)), task) : null;\n // Restore data for the new task if available\n const currentTaskMetaData = this.store.taskMetaData[(_c = task === null || task === void 0 ? void 0 : task.data) === null || _c === void 0 ? void 0 : _c.interactionId];\n if (currentTaskMetaData) {\n const { consultAccepted = false, consultInitiated = false, consultCompleted = false, isQueueConsultInProgress = false, currentConsultQueueId = null, consultStartTimeStamp = null, consultOfferReceived = false, } = currentTaskMetaData;\n this.setConsultAccepted(consultAccepted);\n this.setConsultInitiated(consultInitiated);\n this.setConsultCompleted(consultCompleted);\n this.setIsQueueConsultInProgress(isQueueConsultInProgress);\n this.setCurrentConsultQueueId(currentConsultQueueId);\n this.setConsultStartTimeStamp(consultStartTimeStamp);\n this.setConsultOfferReceived(consultOfferReceived);\n }\n });\n };\n this.setIncomingTask = (task) => {\n this.store.incomingTask = task;\n };\n this.refreshTaskList = () => {\n var _a, _b;\n (0, mobx_1.runInAction)(() => {\n this.store.taskList = this.store.cc.taskManager.getAllTasks();\n });\n if (this.currentTask) {\n this.setCurrentTask(this.taskList[(_b = (_a = this.currentTask) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.interactionId]);\n }\n else if (this.store.taskList.length > 0) {\n this.setCurrentTask(this.store.taskList[Object.keys(this.store.taskList)[0]]);\n }\n };\n this.setWrapupCodes = (wrapupCodes) => {\n this.store.wrapupCodes = wrapupCodes;\n };\n this.setConsultCompleted = (value) => {\n this.store.consultCompleted = value;\n };\n this.setConsultInitiated = (value) => {\n this.store.consultInitiated = value;\n };\n this.setConsultAccepted = (value) => {\n this.store.consultAccepted = value;\n };\n this.setConsultOfferReceived = (value) => {\n this.store.consultOfferReceived = value;\n };\n this.setConsultStartTimeStamp = (timestamp) => {\n this.store.consultStartTimeStamp = timestamp;\n };\n this.setCallControlAudio = (audio) => {\n this.store.callControlAudio = audio;\n };\n this.setIsQueueConsultInProgress = (value) => {\n (0, mobx_1.runInAction)(() => {\n this.store.isQueueConsultInProgress = value;\n });\n };\n this.setCurrentConsultQueueId = (queueId) => {\n (0, mobx_1.runInAction)(() => {\n this.store.currentConsultQueueId = queueId;\n });\n };\n this.setState = (state) => {\n if ('reset' in state) {\n (0, mobx_1.runInAction)(() => {\n this.store.customState = null;\n });\n return;\n }\n if ('id' in state) {\n (0, mobx_1.runInAction)(() => {\n this.setCurrentState(state.id);\n this.store.customState = null;\n });\n }\n else {\n (0, mobx_1.runInAction)(() => {\n this.store.customState = state;\n });\n }\n };\n this.setTaskRejected = (callback) => {\n this.onTaskRejected = callback;\n };\n this.setTaskAssigned = (callback) => {\n this.onTaskAssigned = callback;\n };\n this.setCCCallback = (event, callback) => {\n if (!callback)\n return;\n this.store.cc.on(event, callback);\n };\n this.setTaskCallback = (event, callback, taskId) => {\n if (!callback)\n return;\n const task = this.store.taskList[taskId];\n if (!task)\n return;\n task.on(event, callback);\n };\n this.removeCCCallback = (event) => {\n this.store.cc.off(event);\n };\n this.removeTaskCallback = (event, callback, taskId) => {\n if (!callback)\n return;\n const task = this.store.taskList[taskId];\n if (!task)\n return;\n task.off(event, callback);\n };\n this.registerCC = (webex) => {\n return this.store.registerCC(webex);\n };\n this.handleTaskRemove = (taskId) => {\n const taskToRemove = this.store.taskList[taskId];\n if (taskToRemove) {\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_ASSIGNED, this.handleTaskAssigned);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_END, this.handleTaskEnd);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_REJECT, (reason) => this.handleTaskReject(taskToRemove, reason));\n taskToRemove.off(store_types_1.TASK_EVENTS.AGENT_WRAPPEDUP, this.handleTaskWrapUp);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_CONSULTING, this.handleConsulting);\n taskToRemove.off(store_types_1.CC_EVENTS.AGENT_OFFER_CONSULT, this.handleConsultOffer);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_CONSULT_END, this.handleConsultEnd);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_CONSULT_ACCEPTED, this.handleConsultAccepted);\n taskToRemove.off(store_types_1.TASK_EVENTS.AGENT_CONSULT_CREATED, this.handleConsultCreated);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_CONSULT_QUEUE_CANCELLED, this.handleConsultQueueCancelled);\n taskToRemove.off(store_types_1.TASK_EVENTS.AGENT_OFFER_CONTACT, this.refreshTaskList);\n if (this.deviceType === 'BROWSER') {\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_MEDIA, this.handleTaskMedia);\n this.setCallControlAudio(null);\n }\n }\n (0, mobx_1.runInAction)(() => {\n var _a, _b, _c;\n this.setConsultAccepted(false);\n this.setConsultInitiated(false);\n this.setConsultCompleted(false);\n delete this.taskMetaData[taskId];\n if (((_a = this.store.currentTask) === null || _a === void 0 ? void 0 : _a.data.interactionId) === taskId) {\n this.setCurrentTask(null);\n }\n if (((_c = (_b = this.store.incomingTask) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.interactionId) === taskId) {\n this.setIncomingTask(null);\n }\n this.setState({\n reset: true,\n });\n this.refreshTaskList();\n });\n };\n this.handleTaskEnd = () => {\n this.refreshTaskList();\n };\n this.handleTaskAssigned = (event) => {\n const task = event;\n if (this.onTaskAssigned) {\n this.onTaskAssigned(task);\n }\n (0, mobx_1.runInAction)(() => {\n var _a;\n if (this.currentTask) {\n this.setTaskMetaData(this.currentTask.data.interactionId, {\n consultCompleted: this.store.consultCompleted,\n consultInitiated: this.store.consultInitiated,\n consultAccepted: this.store.consultAccepted,\n isQueueConsultInProgress: this.store.isQueueConsultInProgress,\n currentConsultQueueId: this.store.currentConsultQueueId,\n consultStartTimeStamp: this.store.consultStartTimeStamp,\n consultOfferReceived: this.store.consultOfferReceived,\n });\n }\n else {\n this.setTaskMetaData((_a = task === null || task === void 0 ? void 0 : task.data) === null || _a === void 0 ? void 0 : _a.interactionId, {\n consultCompleted: false,\n consultInitiated: false,\n consultAccepted: false,\n isQueueConsultInProgress: false,\n currentConsultQueueId: '',\n consultStartTimeStamp: null,\n consultOfferReceived: false,\n });\n }\n if (this.consultAccepted) {\n this.setConsultAccepted(false);\n this.setConsultInitiated(false);\n this.setConsultCompleted(false);\n this.setConsultOfferReceived(false);\n }\n this.setCurrentTask(task);\n this.setIncomingTask(null);\n this.setState({\n developerName: store_types_1.ENGAGED_LABEL,\n name: store_types_1.ENGAGED_USERNAME,\n });\n });\n };\n this.handleTaskWrapUp = (task) => {\n var _a;\n this.handleTaskRemove((_a = task === null || task === void 0 ? void 0 : task.data) === null || _a === void 0 ? void 0 : _a.interactionId);\n };\n this.handleTaskMedia = (track) => {\n this.setCallControlAudio(new MediaStream([track]));\n };\n // Case to handle multi session\n this.handleConsultCreated = () => {\n this.setConsultInitiated(true);\n this.setConsultStartTimeStamp(Date.now());\n };\n this.handleConsulting = (event) => {\n this.setConsultCompleted(true);\n this.setCurrentTask(event);\n this.handleIncomingTask(event);\n this.setConsultStartTimeStamp(Date.now());\n };\n this.handleConsultEnd = (event) => {\n const task = event;\n this.setConsultInitiated(false);\n this.setIsQueueConsultInProgress(false);\n this.setCurrentConsultQueueId(null);\n if (this.consultAccepted) {\n this.setConsultAccepted(false);\n this.handleTaskRemove(task.data.interactionId);\n }\n else if (this.consultOfferReceived) {\n this.setConsultOfferReceived(false);\n this.handleTaskRemove(task.data.interactionId);\n }\n this.setConsultCompleted(false);\n this.setConsultStartTimeStamp(null);\n };\n this.handleConsultOffer = () => {\n this.setConsultOfferReceived(true);\n };\n this.handleConsultAccepted = (event) => {\n const task = event;\n (0, mobx_1.runInAction)(() => {\n this.setCurrentTask(task);\n this.setIncomingTask(null);\n this.setConsultAccepted(true);\n this.setConsultStartTimeStamp(Date.now());\n this.setConsultCompleted(true);\n this.setState({\n developerName: store_types_1.ENGAGED_LABEL,\n name: store_types_1.ENGAGED_USERNAME,\n });\n if (this.deviceType === 'BROWSER') {\n task.on(store_types_1.TASK_EVENTS.TASK_MEDIA, this.handleTaskMedia);\n }\n });\n };\n this.handleConsultQueueCancelled = () => {\n this.setConsultInitiated(false);\n this.setIsQueueConsultInProgress(false);\n this.setCurrentConsultQueueId(null);\n this.setConsultStartTimeStamp(null);\n };\n this.handleIncomingTask = (event) => {\n const task = event;\n // Attach event listeners to the task\n task.on(store_types_1.TASK_EVENTS.TASK_END, this.handleTaskEnd);\n // When we receive TASK_ASSIGNED the task was accepted by the agent and we need wrap up\n task.on(store_types_1.TASK_EVENTS.TASK_ASSIGNED, this.handleTaskAssigned);\n task.on(store_types_1.TASK_EVENTS.AGENT_OFFER_CONTACT, this.refreshTaskList);\n task.on(store_types_1.TASK_EVENTS.AGENT_CONSULT_CREATED, this.handleConsultCreated);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_QUEUE_CANCELLED, this.handleConsultQueueCancelled);\n if (this.deviceType === 'BROWSER') {\n task.on(store_types_1.TASK_EVENTS.TASK_MEDIA, this.handleTaskMedia);\n }\n // When we receive TASK_REJECT sdk changes the agent status\n // When we receive TASK_REJECT that means the task was not accepted by the agent and we wont need wrap up\n task.on(store_types_1.TASK_EVENTS.TASK_REJECT, (reason) => this.handleTaskReject(task, reason));\n task.on(store_types_1.TASK_EVENTS.AGENT_WRAPPEDUP, this.handleTaskWrapUp);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULTING, this.handleConsulting);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_ACCEPTED, this.handleConsultAccepted);\n task.on(store_types_1.CC_EVENTS.AGENT_OFFER_CONSULT, this.handleConsultOffer);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_END, this.handleConsultEnd);\n this.setIncomingTask(task);\n this.refreshTaskList();\n };\n this.handleStateChange = (data) => {\n var _a;\n if (data && typeof data === 'object' && data.type === 'AgentStateChangeSuccess') {\n const DEFAULT_CODE = '0'; // Default code when no aux code is present\n this.setCurrentState(((_a = data.auxCodeId) === null || _a === void 0 ? void 0 : _a.trim()) !== '' ? data.auxCodeId : DEFAULT_CODE);\n this.setLastStateChangeTimestamp(data.lastStateChangeTimestamp);\n this.setLastIdleCodeChangeTimestamp(data.lastIdleCodeChangeTimestamp);\n }\n };\n this.handleMultiLoginCloseSession = (data) => {\n if (data && typeof data === 'object' && data.type === 'AgentMultiLoginCloseSession') {\n this.setShowMultipleLoginAlert(true);\n }\n };\n this.handleTaskHydrate = (event) => {\n const task = event;\n task.on(store_types_1.TASK_EVENTS.TASK_END, this.handleTaskEnd);\n // When we receive TASK_ASSIGNED the task was accepted by the agent and we need wrap up\n task.on(store_types_1.TASK_EVENTS.TASK_ASSIGNED, this.handleTaskAssigned);\n task.on(store_types_1.TASK_EVENTS.AGENT_OFFER_CONTACT, this.refreshTaskList);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_ACCEPTED, this.handleConsultAccepted);\n task.on(store_types_1.TASK_EVENTS.AGENT_CONSULT_CREATED, this.handleConsultCreated);\n // When we receive TASK_REJECT sdk changes the agent status\n // When we receive TASK_REJECT that means the task was not accepted by the agent and we wont need wrap up\n task.on(store_types_1.TASK_EVENTS.TASK_REJECT, (reason) => this.handleTaskReject(task, reason));\n task.on(store_types_1.TASK_EVENTS.AGENT_WRAPPEDUP, this.handleTaskWrapUp);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULTING, this.handleConsulting);\n task.on(store_types_1.CC_EVENTS.AGENT_OFFER_CONSULT, this.handleConsultOffer);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_END, this.handleConsultEnd);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_QUEUE_CANCELLED, this.handleConsultQueueCancelled);\n if (this.deviceType === 'BROWSER') {\n task.on(store_types_1.TASK_EVENTS.TASK_MEDIA, this.handleTaskMedia);\n }\n this.refreshTaskList();\n this.setCurrentTask(task);\n this.setIncomingTask(null);\n if (task.data.interaction.state === 'consulting') {\n if (task.data.isConsulted) {\n this.setConsultAccepted(true);\n }\n else {\n this.setConsultInitiated(true);\n }\n this.setConsultStartTimeStamp(Date.now());\n this.setConsultCompleted(true);\n }\n this.setState({\n developerName: store_types_1.ENGAGED_LABEL,\n name: store_types_1.ENGAGED_USERNAME,\n });\n const { interaction } = task.data;\n const { isTerminated } = interaction;\n // Update call control states\n if (isTerminated) {\n if (!task.data.wrapUpRequired) {\n this.setState({\n reset: true,\n });\n }\n return;\n }\n };\n this.handleTaskReject = (task, reason) => {\n if (this.onTaskRejected) {\n this.onTaskRejected(task, reason || 'No reason provided');\n }\n this.handleTaskRemove(task.data.interactionId);\n };\n this.getBuddyAgents = () => __awaiter(this, void 0, void 0, function* () {\n try {\n const response = yield this.store.cc.getBuddyAgents({\n mediaType: 'telephony',\n state: 'Available',\n });\n return response.data.agentList;\n }\n catch (error) {\n return Promise.reject(error);\n }\n });\n this.getQueues = () => __awaiter(this, void 0, void 0, function* () {\n try {\n let queueList = yield this.store.cc.getQueues();\n queueList = queueList.filter((queue) => queue.channelType === 'TELEPHONY');\n return queueList;\n }\n catch (error) {\n console.error('Error fetching queues:', error);\n return Promise.reject(error);\n }\n });\n this.cleanUpStore = () => {\n (0, mobx_1.runInAction)(() => {\n this.setIsAgentLoggedIn(false);\n this.setDeviceType('AGENT_DN');\n this.setDialNumber('');\n this.setIncomingTask(null);\n this.setCurrentTask(null);\n this.refreshTaskList();\n this.setLastStateChangeTimestamp(undefined);\n this.setLastIdleCodeChangeTimestamp(undefined);\n this.setShowMultipleLoginAlert(false);\n this.setConsultStartTimeStamp(undefined);\n });\n };\n this.setupIncomingTaskHandler = (ccSDK) => {\n let listenersAdded = false;\n const handleLogOut = () => {\n this.cleanUpStore();\n removeEventListeners();\n listenersAdded = false;\n };\n const addEventListeners = () => {\n ccSDK.on(store_types_1.TASK_EVENTS.TASK_HYDRATE, this.handleTaskHydrate);\n ccSDK.on(store_types_1.CC_EVENTS.AGENT_STATE_CHANGE, this.handleStateChange);\n ccSDK.on(store_types_1.TASK_EVENTS.TASK_INCOMING, this.handleIncomingTask);\n ccSDK.on(store_types_1.CC_EVENTS.AGENT_MULTI_LOGIN, this.handleMultiLoginCloseSession);\n ccSDK.on(store_types_1.CC_EVENTS.AGENT_LOGOUT_SUCCESS, handleLogOut);\n };\n const removeEventListeners = () => {\n ccSDK.off(store_types_1.TASK_EVENTS.TASK_HYDRATE, this.handleTaskHydrate);\n ccSDK.off(store_types_1.CC_EVENTS.AGENT_STATE_CHANGE, this.handleStateChange);\n ccSDK.off(store_types_1.TASK_EVENTS.TASK_INCOMING, this.handleIncomingTask);\n ccSDK.off(store_types_1.CC_EVENTS.AGENT_MULTI_LOGIN, this.handleMultiLoginCloseSession);\n ccSDK.off(store_types_1.CC_EVENTS.AGENT_LOGOUT_SUCCESS, handleLogOut);\n };\n // TODO: https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-626777 Implement the de-register method and close the listener there\n const handleLogin = (payload) => {\n (0, mobx_1.runInAction)(() => {\n var _a;\n this.setIsAgentLoggedIn(true);\n this.setDeviceType(payload.deviceType);\n this.setDialNumber(payload.dn);\n this.setCurrentState(((_a = payload.auxCodeId) === null || _a === void 0 ? void 0 : _a.trim()) !== '' ? payload.auxCodeId : '0');\n this.setLastStateChangeTimestamp(payload.lastStateChangeTimestamp);\n this.setLastIdleCodeChangeTimestamp(payload.lastIdleCodeChangeTimestamp);\n });\n };\n ccSDK.on(store_types_1.CC_EVENTS.AGENT_STATION_LOGIN_SUCCESS, handleLogin);\n [store_types_1.CC_EVENTS.AGENT_DN_REGISTERED, store_types_1.CC_EVENTS.AGENT_RELOGIN_SUCCESS].forEach((event) => {\n ccSDK.on(`${event}`, () => {\n if (!listenersAdded) {\n addEventListeners();\n listenersAdded = true;\n }\n });\n });\n };\n this.store = store_1.default.getInstance();\n }\n // Proxy all methods and properties of the original store\n get featureFlags() {\n return this.store.featureFlags;\n }\n get teams() {\n return this.store.teams;\n }\n get loginOptions() {\n return this.store.loginOptions;\n }\n get cc() {\n return this.store.cc;\n }\n get logger() {\n return this.store.logger;\n }\n get idleCodes() {\n return this.store.idleCodes.filter((code) => {\n return code.name === 'RONA' || !code.isSystem;\n });\n }\n get agentId() {\n return this.store.agentId;\n }\n get deviceType() {\n return this.store.deviceType;\n }\n get dialNumber() {\n return this.store.dialNumber;\n }\n get wrapupCodes() {\n return this.store.wrapupCodes;\n }\n get currentTask() {\n return this.store.currentTask;\n }\n get isAgentLoggedIn() {\n return this.store.isAgentLoggedIn;\n }\n get taskList() {\n return this.store.taskList;\n }\n get incomingTask() {\n return this.store.incomingTask;\n }\n get currentState() {\n return this.store.currentState;\n }\n get lastStateChangeTimestamp() {\n return this.store.lastStateChangeTimestamp;\n }\n get lastIdleCodeChangeTimestamp() {\n return this.store.lastIdleCodeChangeTimestamp;\n }\n get showMultipleLoginAlert() {\n return this.store.showMultipleLoginAlert;\n }\n get currentTheme() {\n return this.store.currentTheme;\n }\n get customState() {\n return this.store.customState;\n }\n get consultCompleted() {\n return this.store.consultCompleted;\n }\n get consultInitiated() {\n return this.store.consultInitiated;\n }\n get consultAccepted() {\n return this.store.consultAccepted;\n }\n get consultStartTimeStamp() {\n return this.store.consultStartTimeStamp;\n }\n get callControlAudio() {\n return this.store.callControlAudio;\n }\n get consultOfferReceived() {\n return this.store.consultOfferReceived;\n }\n get isQueueConsultInProgress() {\n return this.store.isQueueConsultInProgress;\n }\n get currentConsultQueueId() {\n return this.store.currentConsultQueueId;\n }\n get isEndConsultEnabled() {\n return this.store.isEndConsultEnabled;\n }\n get allowConsultToQueue() {\n return this.store.allowConsultToQueue;\n }\n get taskMetaData() {\n return this.store.taskMetaData;\n }\n init(options) {\n return this.store.init(options, this.setupIncomingTaskHandler);\n }\n}\n// Create and export a single instance of the wrapper\nconst storeWrapper = new StoreWrapper();\nexports[\"default\"] = storeWrapper;\n\n\n//# sourceURL=webpack://@webex/cc-store/./src/storeEventsWrapper.ts?");
|
|
12371
|
+
eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst store_types_1 = __webpack_require__(/*! ./store.types */ \"./src/store.types.ts\");\nconst store_1 = __importDefault(__webpack_require__(/*! ./store */ \"./src/store.ts\"));\nconst mobx_1 = __webpack_require__(/*! mobx */ \"../../../node_modules/mobx/dist/mobx.esm.js\");\nclass StoreWrapper {\n constructor() {\n this.setTaskMetaData = (taskId, data) => {\n this.store.taskMetaData[taskId] = data;\n };\n this.setCurrentTheme = (theme) => {\n this.store.currentTheme = theme;\n };\n this.setShowMultipleLoginAlert = (value) => {\n this.store.showMultipleLoginAlert = value;\n };\n this.setDeviceType = (option) => {\n this.store.deviceType = option;\n };\n this.setDialNumber = (input) => {\n this.store.dialNumber = input;\n };\n this.setCurrentState = (state) => {\n (0, mobx_1.runInAction)(() => {\n this.store.currentState = state;\n this.store.customState = null;\n });\n };\n this.setLastStateChangeTimestamp = (timestamp) => {\n (0, mobx_1.runInAction)(() => {\n this.store.lastStateChangeTimestamp = timestamp;\n });\n };\n this.setLastIdleCodeChangeTimestamp = (timestamp) => {\n (0, mobx_1.runInAction)(() => {\n this.store.lastIdleCodeChangeTimestamp = timestamp;\n });\n };\n this.setIsAgentLoggedIn = (value) => {\n this.store.isAgentLoggedIn = value;\n };\n this.setCurrentTask = (task) => {\n (0, mobx_1.runInAction)(() => {\n var _a, _b, _c;\n // Save data from the current task if it exists\n if (this.currentTask) {\n const interactionId = (_b = (_a = this.currentTask) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.interactionId;\n this.setTaskMetaData(interactionId, {\n consultCompleted: this.store.consultCompleted,\n consultInitiated: this.store.consultInitiated,\n consultAccepted: this.store.consultAccepted,\n isQueueConsultInProgress: this.store.isQueueConsultInProgress,\n currentConsultQueueId: this.store.currentConsultQueueId,\n consultStartTimeStamp: this.store.consultStartTimeStamp,\n consultOfferReceived: this.store.consultOfferReceived,\n });\n }\n // Update the current task\n this.store.currentTask = task ? Object.assign(Object.create(Object.getPrototypeOf(task)), task) : null;\n // Restore data for the new task if available\n const currentTaskMetaData = this.store.taskMetaData[(_c = task === null || task === void 0 ? void 0 : task.data) === null || _c === void 0 ? void 0 : _c.interactionId];\n if (currentTaskMetaData) {\n const { consultAccepted = false, consultInitiated = false, consultCompleted = false, isQueueConsultInProgress = false, currentConsultQueueId = null, consultStartTimeStamp = null, consultOfferReceived = false, } = currentTaskMetaData;\n this.setConsultAccepted(consultAccepted);\n this.setConsultInitiated(consultInitiated);\n this.setConsultCompleted(consultCompleted);\n this.setIsQueueConsultInProgress(isQueueConsultInProgress);\n this.setCurrentConsultQueueId(currentConsultQueueId);\n this.setConsultStartTimeStamp(consultStartTimeStamp);\n this.setConsultOfferReceived(consultOfferReceived);\n }\n });\n };\n this.refreshTaskList = () => {\n var _a, _b;\n (0, mobx_1.runInAction)(() => {\n this.store.taskList = this.store.cc.taskManager.getAllTasks();\n });\n if (this.currentTask) {\n this.setCurrentTask(this.taskList[(_b = (_a = this.currentTask) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.interactionId]);\n }\n else if (this.store.taskList.length > 0) {\n this.setCurrentTask(this.store.taskList[Object.keys(this.store.taskList)[0]]);\n }\n };\n this.setWrapupCodes = (wrapupCodes) => {\n this.store.wrapupCodes = wrapupCodes;\n };\n this.setConsultCompleted = (value) => {\n this.store.consultCompleted = value;\n };\n this.setConsultInitiated = (value) => {\n this.store.consultInitiated = value;\n };\n this.setConsultAccepted = (value) => {\n this.store.consultAccepted = value;\n };\n this.setConsultOfferReceived = (value) => {\n this.store.consultOfferReceived = value;\n };\n this.setConsultStartTimeStamp = (timestamp) => {\n this.store.consultStartTimeStamp = timestamp;\n };\n this.setCallControlAudio = (audio) => {\n this.store.callControlAudio = audio;\n };\n this.setIsQueueConsultInProgress = (value) => {\n (0, mobx_1.runInAction)(() => {\n this.store.isQueueConsultInProgress = value;\n });\n };\n this.setCurrentConsultQueueId = (queueId) => {\n (0, mobx_1.runInAction)(() => {\n this.store.currentConsultQueueId = queueId;\n });\n };\n this.setState = (state) => {\n if ('reset' in state) {\n (0, mobx_1.runInAction)(() => {\n this.store.customState = null;\n });\n return;\n }\n if ('id' in state) {\n (0, mobx_1.runInAction)(() => {\n this.setCurrentState(state.id);\n this.store.customState = null;\n });\n }\n else {\n (0, mobx_1.runInAction)(() => {\n this.store.customState = state;\n });\n }\n };\n this.setIncomingTaskCb = (callback) => {\n this.onIncomingTask = callback;\n };\n this.setTaskRejected = (callback) => {\n this.onTaskRejected = callback;\n };\n this.setTaskAssigned = (callback) => {\n this.onTaskAssigned = callback;\n };\n this.setCCCallback = (event, callback) => {\n if (!callback)\n return;\n this.store.cc.on(event, callback);\n };\n this.setTaskCallback = (event, callback, taskId) => {\n if (!callback)\n return;\n const task = this.store.taskList[taskId];\n if (!task)\n return;\n task.on(event, callback);\n };\n this.removeCCCallback = (event) => {\n this.store.cc.off(event);\n };\n this.removeTaskCallback = (event, callback, taskId) => {\n if (!callback)\n return;\n const task = this.store.taskList[taskId];\n if (!task)\n return;\n task.off(event, callback);\n };\n this.registerCC = (webex) => {\n return this.store.registerCC(webex);\n };\n this.handleTaskRemove = (taskId) => {\n const taskToRemove = this.store.taskList[taskId];\n if (taskToRemove) {\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_ASSIGNED, this.handleTaskAssigned);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_END, this.handleTaskEnd);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_REJECT, (reason) => this.handleTaskReject(taskToRemove, reason));\n taskToRemove.off(store_types_1.TASK_EVENTS.AGENT_WRAPPEDUP, this.handleTaskWrapUp);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_CONSULTING, this.handleConsulting);\n taskToRemove.off(store_types_1.CC_EVENTS.AGENT_OFFER_CONSULT, this.handleConsultOffer);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_CONSULT_END, this.handleConsultEnd);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_CONSULT_ACCEPTED, this.handleConsultAccepted);\n taskToRemove.off(store_types_1.TASK_EVENTS.AGENT_CONSULT_CREATED, this.handleConsultCreated);\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_CONSULT_QUEUE_CANCELLED, this.handleConsultQueueCancelled);\n taskToRemove.off(store_types_1.TASK_EVENTS.AGENT_OFFER_CONTACT, this.refreshTaskList);\n if (this.deviceType === 'BROWSER') {\n taskToRemove.off(store_types_1.TASK_EVENTS.TASK_MEDIA, this.handleTaskMedia);\n this.setCallControlAudio(null);\n }\n }\n (0, mobx_1.runInAction)(() => {\n var _a;\n this.setConsultAccepted(false);\n this.setConsultInitiated(false);\n this.setConsultCompleted(false);\n delete this.taskMetaData[taskId];\n if (((_a = this.store.currentTask) === null || _a === void 0 ? void 0 : _a.data.interactionId) === taskId) {\n this.setCurrentTask(null);\n }\n this.setState({\n reset: true,\n });\n this.refreshTaskList();\n });\n };\n this.handleTaskEnd = () => {\n this.refreshTaskList();\n };\n this.handleTaskAssigned = (event) => {\n const task = event;\n if (this.onTaskAssigned) {\n this.onTaskAssigned(task);\n }\n (0, mobx_1.runInAction)(() => {\n var _a;\n if (this.currentTask) {\n this.setTaskMetaData(this.currentTask.data.interactionId, {\n consultCompleted: this.store.consultCompleted,\n consultInitiated: this.store.consultInitiated,\n consultAccepted: this.store.consultAccepted,\n isQueueConsultInProgress: this.store.isQueueConsultInProgress,\n currentConsultQueueId: this.store.currentConsultQueueId,\n consultStartTimeStamp: this.store.consultStartTimeStamp,\n consultOfferReceived: this.store.consultOfferReceived,\n });\n }\n else {\n this.setTaskMetaData((_a = task === null || task === void 0 ? void 0 : task.data) === null || _a === void 0 ? void 0 : _a.interactionId, {\n consultCompleted: false,\n consultInitiated: false,\n consultAccepted: false,\n isQueueConsultInProgress: false,\n currentConsultQueueId: '',\n consultStartTimeStamp: null,\n consultOfferReceived: false,\n });\n }\n if (this.consultAccepted) {\n this.setConsultAccepted(false);\n this.setConsultInitiated(false);\n this.setConsultCompleted(false);\n this.setConsultOfferReceived(false);\n }\n this.setCurrentTask(task);\n this.setState({\n developerName: store_types_1.ENGAGED_LABEL,\n name: store_types_1.ENGAGED_USERNAME,\n });\n });\n };\n this.handleTaskWrapUp = (task) => {\n var _a;\n this.handleTaskRemove((_a = task === null || task === void 0 ? void 0 : task.data) === null || _a === void 0 ? void 0 : _a.interactionId);\n };\n this.handleTaskMedia = (track) => {\n this.setCallControlAudio(new MediaStream([track]));\n };\n // Case to handle multi session\n this.handleConsultCreated = () => {\n this.setConsultInitiated(true);\n this.setConsultStartTimeStamp(Date.now());\n };\n this.handleConsulting = (event) => {\n this.setConsultCompleted(true);\n this.setCurrentTask(event);\n this.handleIncomingTask(event);\n this.setConsultStartTimeStamp(Date.now());\n };\n this.handleConsultEnd = (event) => {\n const task = event;\n this.setConsultInitiated(false);\n this.setIsQueueConsultInProgress(false);\n this.setCurrentConsultQueueId(null);\n if (this.consultAccepted) {\n this.setConsultAccepted(false);\n this.handleTaskRemove(task.data.interactionId);\n }\n else if (this.consultOfferReceived) {\n this.setConsultOfferReceived(false);\n this.handleTaskRemove(task.data.interactionId);\n }\n this.setConsultCompleted(false);\n this.setConsultStartTimeStamp(null);\n };\n this.handleConsultOffer = () => {\n this.setConsultOfferReceived(true);\n };\n this.handleConsultAccepted = (event) => {\n const task = event;\n (0, mobx_1.runInAction)(() => {\n this.setCurrentTask(task);\n this.setConsultAccepted(true);\n this.setConsultStartTimeStamp(Date.now());\n this.setConsultCompleted(true);\n this.setState({\n developerName: store_types_1.ENGAGED_LABEL,\n name: store_types_1.ENGAGED_USERNAME,\n });\n if (this.deviceType === 'BROWSER') {\n task.on(store_types_1.TASK_EVENTS.TASK_MEDIA, this.handleTaskMedia);\n }\n });\n };\n this.handleConsultQueueCancelled = () => {\n this.setConsultInitiated(false);\n this.setIsQueueConsultInProgress(false);\n this.setCurrentConsultQueueId(null);\n this.setConsultStartTimeStamp(null);\n };\n this.handleIncomingTask = (event) => {\n const task = event;\n // Attach event listeners to the task\n task.on(store_types_1.TASK_EVENTS.TASK_END, this.handleTaskEnd);\n // When we receive TASK_ASSIGNED the task was accepted by the agent and we need wrap up\n task.on(store_types_1.TASK_EVENTS.TASK_ASSIGNED, this.handleTaskAssigned);\n task.on(store_types_1.TASK_EVENTS.AGENT_OFFER_CONTACT, this.refreshTaskList);\n task.on(store_types_1.TASK_EVENTS.AGENT_CONSULT_CREATED, this.handleConsultCreated);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_QUEUE_CANCELLED, this.handleConsultQueueCancelled);\n if (this.deviceType === 'BROWSER') {\n task.on(store_types_1.TASK_EVENTS.TASK_MEDIA, this.handleTaskMedia);\n }\n // When we receive TASK_REJECT sdk changes the agent status\n // When we receive TASK_REJECT that means the task was not accepted by the agent and we wont need wrap up\n task.on(store_types_1.TASK_EVENTS.TASK_REJECT, (reason) => this.handleTaskReject(task, reason));\n task.on(store_types_1.TASK_EVENTS.AGENT_WRAPPEDUP, this.handleTaskWrapUp);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULTING, this.handleConsulting);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_ACCEPTED, this.handleConsultAccepted);\n task.on(store_types_1.CC_EVENTS.AGENT_OFFER_CONSULT, this.handleConsultOffer);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_END, this.handleConsultEnd);\n // In case of consulting we check if the task is already in the task list\n // If it is, we dont have to send the incoming task callback\n if (this.onIncomingTask && !this.taskList[task.data.interactionId]) {\n this.onIncomingTask({ task });\n }\n // We should update the task list in the store after sending the incoming task callback\n this.refreshTaskList();\n };\n this.handleStateChange = (data) => {\n var _a;\n if (data && typeof data === 'object' && data.type === 'AgentStateChangeSuccess') {\n const DEFAULT_CODE = '0'; // Default code when no aux code is present\n this.setCurrentState(((_a = data.auxCodeId) === null || _a === void 0 ? void 0 : _a.trim()) !== '' ? data.auxCodeId : DEFAULT_CODE);\n this.setLastStateChangeTimestamp(data.lastStateChangeTimestamp);\n this.setLastIdleCodeChangeTimestamp(data.lastIdleCodeChangeTimestamp);\n }\n };\n this.handleMultiLoginCloseSession = (data) => {\n if (data && typeof data === 'object' && data.type === 'AgentMultiLoginCloseSession') {\n this.setShowMultipleLoginAlert(true);\n }\n };\n this.handleTaskHydrate = (event) => {\n const task = event;\n task.on(store_types_1.TASK_EVENTS.TASK_END, this.handleTaskEnd);\n // When we receive TASK_ASSIGNED the task was accepted by the agent and we need wrap up\n task.on(store_types_1.TASK_EVENTS.TASK_ASSIGNED, this.handleTaskAssigned);\n task.on(store_types_1.TASK_EVENTS.AGENT_OFFER_CONTACT, this.refreshTaskList);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_ACCEPTED, this.handleConsultAccepted);\n task.on(store_types_1.TASK_EVENTS.AGENT_CONSULT_CREATED, this.handleConsultCreated);\n // When we receive TASK_REJECT sdk changes the agent status\n // When we receive TASK_REJECT that means the task was not accepted by the agent and we wont need wrap up\n task.on(store_types_1.TASK_EVENTS.TASK_REJECT, (reason) => this.handleTaskReject(task, reason));\n task.on(store_types_1.TASK_EVENTS.AGENT_WRAPPEDUP, this.handleTaskWrapUp);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULTING, this.handleConsulting);\n task.on(store_types_1.CC_EVENTS.AGENT_OFFER_CONSULT, this.handleConsultOffer);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_END, this.handleConsultEnd);\n task.on(store_types_1.TASK_EVENTS.TASK_CONSULT_QUEUE_CANCELLED, this.handleConsultQueueCancelled);\n if (this.deviceType === 'BROWSER') {\n task.on(store_types_1.TASK_EVENTS.TASK_MEDIA, this.handleTaskMedia);\n }\n this.refreshTaskList();\n this.setCurrentTask(task);\n if (task.data.interaction.state === 'consulting') {\n if (task.data.isConsulted) {\n this.setConsultAccepted(true);\n }\n else {\n this.setConsultInitiated(true);\n }\n this.setConsultStartTimeStamp(Date.now());\n this.setConsultCompleted(true);\n }\n this.setState({\n developerName: store_types_1.ENGAGED_LABEL,\n name: store_types_1.ENGAGED_USERNAME,\n });\n const { interaction } = task.data;\n const { isTerminated } = interaction;\n // Update call control states\n if (isTerminated) {\n if (!task.data.wrapUpRequired) {\n this.setState({\n reset: true,\n });\n }\n return;\n }\n };\n this.handleTaskReject = (task, reason) => {\n if (this.onTaskRejected) {\n this.onTaskRejected(task, reason || 'No reason provided');\n }\n this.handleTaskRemove(task.data.interactionId);\n };\n this.getBuddyAgents = () => __awaiter(this, void 0, void 0, function* () {\n try {\n const response = yield this.store.cc.getBuddyAgents({\n mediaType: 'telephony',\n state: 'Available',\n });\n return response.data.agentList;\n }\n catch (error) {\n return Promise.reject(error);\n }\n });\n this.getQueues = () => __awaiter(this, void 0, void 0, function* () {\n try {\n let queueList = yield this.store.cc.getQueues();\n queueList = queueList.filter((queue) => queue.channelType === 'TELEPHONY');\n return queueList;\n }\n catch (error) {\n console.error('Error fetching queues:', error);\n return Promise.reject(error);\n }\n });\n this.cleanUpStore = () => {\n (0, mobx_1.runInAction)(() => {\n this.setIsAgentLoggedIn(false);\n this.setDeviceType('AGENT_DN');\n this.setDialNumber('');\n this.setCurrentTask(null);\n this.refreshTaskList();\n this.setLastStateChangeTimestamp(undefined);\n this.setLastIdleCodeChangeTimestamp(undefined);\n this.setShowMultipleLoginAlert(false);\n this.setConsultStartTimeStamp(undefined);\n });\n };\n this.setupIncomingTaskHandler = (ccSDK) => {\n let listenersAdded = false;\n const handleLogOut = () => {\n this.cleanUpStore();\n removeEventListeners();\n listenersAdded = false;\n };\n const addEventListeners = () => {\n ccSDK.on(store_types_1.TASK_EVENTS.TASK_HYDRATE, this.handleTaskHydrate);\n ccSDK.on(store_types_1.CC_EVENTS.AGENT_STATE_CHANGE, this.handleStateChange);\n ccSDK.on(store_types_1.TASK_EVENTS.TASK_INCOMING, this.handleIncomingTask);\n ccSDK.on(store_types_1.CC_EVENTS.AGENT_MULTI_LOGIN, this.handleMultiLoginCloseSession);\n ccSDK.on(store_types_1.CC_EVENTS.AGENT_LOGOUT_SUCCESS, handleLogOut);\n };\n const removeEventListeners = () => {\n ccSDK.off(store_types_1.TASK_EVENTS.TASK_HYDRATE, this.handleTaskHydrate);\n ccSDK.off(store_types_1.CC_EVENTS.AGENT_STATE_CHANGE, this.handleStateChange);\n ccSDK.off(store_types_1.TASK_EVENTS.TASK_INCOMING, this.handleIncomingTask);\n ccSDK.off(store_types_1.CC_EVENTS.AGENT_MULTI_LOGIN, this.handleMultiLoginCloseSession);\n ccSDK.off(store_types_1.CC_EVENTS.AGENT_LOGOUT_SUCCESS, handleLogOut);\n };\n // TODO: https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-626777 Implement the de-register method and close the listener there\n const handleLogin = (payload) => {\n (0, mobx_1.runInAction)(() => {\n var _a;\n this.setIsAgentLoggedIn(true);\n this.setDeviceType(payload.deviceType);\n this.setDialNumber(payload.dn);\n this.setCurrentState(((_a = payload.auxCodeId) === null || _a === void 0 ? void 0 : _a.trim()) !== '' ? payload.auxCodeId : '0');\n this.setLastStateChangeTimestamp(payload.lastStateChangeTimestamp);\n this.setLastIdleCodeChangeTimestamp(payload.lastIdleCodeChangeTimestamp);\n });\n };\n ccSDK.on(store_types_1.CC_EVENTS.AGENT_STATION_LOGIN_SUCCESS, handleLogin);\n [store_types_1.CC_EVENTS.AGENT_DN_REGISTERED, store_types_1.CC_EVENTS.AGENT_RELOGIN_SUCCESS].forEach((event) => {\n ccSDK.on(`${event}`, () => {\n if (!listenersAdded) {\n addEventListeners();\n listenersAdded = true;\n }\n });\n });\n };\n this.store = store_1.default.getInstance();\n }\n // Proxy all methods and properties of the original store\n get featureFlags() {\n return this.store.featureFlags;\n }\n get teams() {\n return this.store.teams;\n }\n get loginOptions() {\n return this.store.loginOptions;\n }\n get cc() {\n return this.store.cc;\n }\n get logger() {\n return this.store.logger;\n }\n get idleCodes() {\n return this.store.idleCodes.filter((code) => {\n return code.name === 'RONA' || !code.isSystem;\n });\n }\n get agentId() {\n return this.store.agentId;\n }\n get deviceType() {\n return this.store.deviceType;\n }\n get dialNumber() {\n return this.store.dialNumber;\n }\n get wrapupCodes() {\n return this.store.wrapupCodes;\n }\n get currentTask() {\n return this.store.currentTask;\n }\n get isAgentLoggedIn() {\n return this.store.isAgentLoggedIn;\n }\n get taskList() {\n return this.store.taskList;\n }\n get currentState() {\n return this.store.currentState;\n }\n get lastStateChangeTimestamp() {\n return this.store.lastStateChangeTimestamp;\n }\n get lastIdleCodeChangeTimestamp() {\n return this.store.lastIdleCodeChangeTimestamp;\n }\n get showMultipleLoginAlert() {\n return this.store.showMultipleLoginAlert;\n }\n get currentTheme() {\n return this.store.currentTheme;\n }\n get customState() {\n return this.store.customState;\n }\n get consultCompleted() {\n return this.store.consultCompleted;\n }\n get consultInitiated() {\n return this.store.consultInitiated;\n }\n get consultAccepted() {\n return this.store.consultAccepted;\n }\n get consultStartTimeStamp() {\n return this.store.consultStartTimeStamp;\n }\n get callControlAudio() {\n return this.store.callControlAudio;\n }\n get consultOfferReceived() {\n return this.store.consultOfferReceived;\n }\n get isQueueConsultInProgress() {\n return this.store.isQueueConsultInProgress;\n }\n get currentConsultQueueId() {\n return this.store.currentConsultQueueId;\n }\n get isEndConsultEnabled() {\n return this.store.isEndConsultEnabled;\n }\n get allowConsultToQueue() {\n return this.store.allowConsultToQueue;\n }\n get taskMetaData() {\n return this.store.taskMetaData;\n }\n init(options) {\n return this.store.init(options, this.setupIncomingTaskHandler);\n }\n}\n// Create and export a single instance of the wrapper\nconst storeWrapper = new StoreWrapper();\nexports[\"default\"] = storeWrapper;\n\n\n//# sourceURL=webpack://@webex/cc-store/./src/storeEventsWrapper.ts?");
|
|
12372
12372
|
|
|
12373
12373
|
/***/ }),
|
|
12374
12374
|
|
package/dist/types/store.d.ts
CHANGED
|
@@ -44,7 +44,6 @@ interface IStore {
|
|
|
44
44
|
logger: ILogger;
|
|
45
45
|
wrapupCodes: IWrapupCode[];
|
|
46
46
|
currentTask: ITask;
|
|
47
|
-
incomingTask: ITask;
|
|
48
47
|
taskList: Record<string, ITask>;
|
|
49
48
|
taskMetaData: Record<string, TaskMetaData>;
|
|
50
49
|
isAgentLoggedIn: boolean;
|
|
@@ -73,7 +72,6 @@ interface IStoreWrapper extends IStore {
|
|
|
73
72
|
store: IStore;
|
|
74
73
|
setCurrentTask(task: ITask): void;
|
|
75
74
|
refreshTaskList(): void;
|
|
76
|
-
setIncomingTask(task: ITask): void;
|
|
77
75
|
setDeviceType(option: string): void;
|
|
78
76
|
setDialNumber(input: string): void;
|
|
79
77
|
setCurrentState(state: string): void;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { IStoreWrapper, IStore, InitParams, TASK_EVENTS, CC_EVENTS, IWrapupCode, WithWebex, ICustomState, IdleCode, IContactCenter, ITask, BuddyDetails, ContactServiceQueue, TaskMetaData } from './store.types';
|
|
2
2
|
declare class StoreWrapper implements IStoreWrapper {
|
|
3
3
|
store: IStore;
|
|
4
|
+
onIncomingTask: ({ task }: {
|
|
5
|
+
task: ITask;
|
|
6
|
+
}) => void;
|
|
4
7
|
onTaskRejected?: (task: ITask, reason: string) => void;
|
|
5
8
|
onTaskAssigned?: (task: ITask) => void;
|
|
6
9
|
constructor();
|
|
@@ -19,7 +22,6 @@ declare class StoreWrapper implements IStoreWrapper {
|
|
|
19
22
|
get currentTask(): ITask;
|
|
20
23
|
get isAgentLoggedIn(): boolean;
|
|
21
24
|
get taskList(): Record<string, ITask>;
|
|
22
|
-
get incomingTask(): ITask;
|
|
23
25
|
get currentState(): string;
|
|
24
26
|
get lastStateChangeTimestamp(): number;
|
|
25
27
|
get lastIdleCodeChangeTimestamp(): number;
|
|
@@ -47,7 +49,6 @@ declare class StoreWrapper implements IStoreWrapper {
|
|
|
47
49
|
setLastIdleCodeChangeTimestamp: (timestamp: number) => void;
|
|
48
50
|
setIsAgentLoggedIn: (value: boolean) => void;
|
|
49
51
|
setCurrentTask: (task: ITask) => void;
|
|
50
|
-
setIncomingTask: (task: ITask) => void;
|
|
51
52
|
refreshTaskList: () => void;
|
|
52
53
|
setWrapupCodes: (wrapupCodes: IWrapupCode[]) => void;
|
|
53
54
|
setConsultCompleted: (value: boolean) => void;
|
|
@@ -59,6 +60,7 @@ declare class StoreWrapper implements IStoreWrapper {
|
|
|
59
60
|
setIsQueueConsultInProgress: (value: boolean) => void;
|
|
60
61
|
setCurrentConsultQueueId: (queueId: string | null) => void;
|
|
61
62
|
setState: (state: ICustomState | IdleCode) => void;
|
|
63
|
+
setIncomingTaskCb: (callback: (task: ITask) => void) => void;
|
|
62
64
|
setTaskRejected: (callback: ((task: ITask, reason: string) => void) | undefined) => void;
|
|
63
65
|
setTaskAssigned: (callback: ((task: ITask) => void) | undefined) => void;
|
|
64
66
|
setCCCallback: (event: CC_EVENTS | TASK_EVENTS, callback: any) => void;
|