@nethesis/phone-island 1.0.10 → 1.0.11

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.
Files changed (46) hide show
  1. package/dist/App.js +1 -1
  2. package/dist/App.js.map +1 -1
  3. package/dist/components/RecorderView/Actions.js +1 -1
  4. package/dist/components/RecorderView/Actions.js.map +1 -1
  5. package/dist/components/RestAPI.js +1 -1
  6. package/dist/components/RestAPI.js.map +1 -1
  7. package/dist/components/Socket.js +1 -1
  8. package/dist/components/Socket.js.map +1 -1
  9. package/dist/events/PlayerEvents.js +1 -1
  10. package/dist/events/PlayerEvents.js.map +1 -1
  11. package/dist/node_modules/react-moment/dist/index.js +11 -1
  12. package/dist/node_modules/react-moment/dist/index.js.map +1 -1
  13. package/dist/node_modules/react-redux/es/components/Context.js +1 -1
  14. package/dist/node_modules/react-redux/es/components/Context.js.map +1 -1
  15. package/dist/node_modules/react-redux/es/components/Provider.js +1 -1
  16. package/dist/node_modules/react-redux/es/components/Provider.js.map +1 -1
  17. package/dist/node_modules/react-redux/es/hooks/useReduxContext.js +1 -1
  18. package/dist/node_modules/react-redux/es/hooks/useReduxContext.js.map +1 -1
  19. package/dist/node_modules/react-redux/es/hooks/useSelector.js +1 -1
  20. package/dist/node_modules/react-redux/es/hooks/useSelector.js.map +1 -1
  21. package/dist/node_modules/react-redux/es/hooks/useStore.js +1 -1
  22. package/dist/node_modules/react-redux/es/hooks/useStore.js.map +1 -1
  23. package/dist/node_modules/react-redux/es/index.js +1 -1
  24. package/dist/node_modules/react-redux/es/index.js.map +1 -1
  25. package/dist/node_modules/react-redux/es/utils/Subscription.js +1 -1
  26. package/dist/node_modules/react-redux/es/utils/Subscription.js.map +1 -1
  27. package/dist/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js +1 -1
  28. package/dist/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js.map +1 -1
  29. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.mjs.js +1 -1
  30. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.mjs.js.map +1 -1
  31. package/dist/node_modules/webrtc-adapter/src/js/adapter_factory.js +1 -1
  32. package/dist/node_modules/webrtc-adapter/src/js/adapter_factory.js.map +1 -1
  33. package/dist/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js +1 -1
  34. package/dist/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js.map +1 -1
  35. package/dist/node_modules/webrtc-adapter/src/js/common_shim.js +1 -1
  36. package/dist/node_modules/webrtc-adapter/src/js/common_shim.js.map +1 -1
  37. package/dist/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js +1 -1
  38. package/dist/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js.map +1 -1
  39. package/dist/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js +1 -1
  40. package/dist/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js.map +1 -1
  41. package/dist/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js +1 -1
  42. package/dist/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js.map +1 -1
  43. package/dist/node_modules/webrtc-adapter/src/js/utils.js +1 -1
  44. package/dist/node_modules/webrtc-adapter/src/js/utils.js.map +1 -1
  45. package/dist/package.json.js +1 -1
  46. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sources":["../../../src/components/RecorderView/Actions.tsx"],"sourcesContent":["//\n// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n//\n\nimport React, { type FC, useEffect } from 'react'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faStop,\n faCircleNotch,\n faGear,\n faDownLeftAndUpRightToCenter,\n faFloppyDisk,\n} from '@fortawesome/free-solid-svg-icons'\nimport { startAnnouncementRecording } from '../../services/offhour'\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { hangupCurrentCall, answerIncomingCall } from '../../lib/phone/call'\nimport { dispatchRecordingSave } from '../../events'\nimport { useTranslation } from 'react-i18next'\nimport { useEventListener, eventDispatch } from '../../utils'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { faRecord } from '@nethesis/nethesis-solid-svg-icons'\n\nexport const Actions: FC<{}> = () => {\n const dispatch = useDispatch<Dispatch>()\n const { incoming, waiting, recording, recorded, playing } = useSelector(\n (state: RootState) => ({\n incoming: state.recorder.incoming,\n waiting: state.recorder.waiting,\n recording: state.recorder.recording,\n recorded: state.recorder.recorded,\n playing: state.recorder.playing,\n }),\n shallowEqual,\n )\n\n async function handleStart() {\n // Update the recorder state\n dispatch.recorder.setRecording(true)\n dispatch.recorder.setWaiting(true)\n // Call the api to start the recording call\n const data: { tempFilename: string } | null = await startAnnouncementRecording()\n // Set the returned temp file name to the store\n if (data.tempFilename) dispatch.recorder.setTempFilename(data.tempFilename)\n // Set the start time of recording\n dispatch.recorder.setStartTime(`${Date.now() / 1000}`)\n eventDispatch('phone-island-recording-started', {})\n }\n useEventListener('phone-island-recording-start', (data: {}) => {\n handleStart()\n })\n\n function handleStop() {\n // Set waiting to true\n dispatch.recorder.setWaiting(true)\n // Call the function to hangup the current call used for recording\n hangupCurrentCall()\n dispatch.recorder.setRecorded(true)\n eventDispatch('phone-island-recording-stopped', {})\n }\n useEventListener('phone-island-recording-stop', (data: {}) => {\n handleStop()\n })\n\n function handleSaveRecording() {\n // check if the audio is playing and pause it\n if (playing) {\n dispatch.player.pauseAudioPlayer()\n dispatch.recorder.setPlaying(false)\n dispatch.recorder.setPaused(true)\n }\n // Dispatch the reconrding save event\n dispatchRecordingSave()\n // Close the Island\n dispatch.island.setIslandView(null)\n }\n useEventListener('phone-island-recording-save', (data: {}) => {\n handleSaveRecording()\n })\n\n useEffect(() => {\n if (!recording) {\n dispatch.recorder.setWaiting(false)\n }\n }, [recording])\n\n useEffect(() => {\n if (incoming) {\n // Answer the incoming call for recording\n answerIncomingCall()\n // Reset incoming to recorder state\n dispatch.recorder.setIncoming(false)\n dispatch.recorder.setWaiting(false)\n }\n }, [incoming])\n\n const { t } = useTranslation()\n\n return (\n <div\n className={`pi-flex pi-items-center pi-justify-between pi-px-6 pi-py-2 pi-gap-0 pi-w-full pi-mt-auto`}\n >\n <Button\n variant='transparent'\n disabled\n className='pi-w-6 pi-h-6 pi-flex pi-items-center pi-justify-center pi-flex-none'\n >\n <FontAwesomeIcon icon={faDownLeftAndUpRightToCenter} className='pi-w-6 pi-h-6' />\n </Button>\n\n <div className='pi-flex pi-items-center pi-justify-center pi-flex-grow'>\n {recording && (\n <Button\n onClick={handleStop}\n variant='default'\n className='pi-rounded-full pi-w-14 pi-h-14 pi-flex pi-items-center pi-justify-center'\n data-tooltip-id='tooltip-stop-recorder-view'\n data-tooltip-content={t('Tooltip.Stop') || ''}\n >\n {waiting ? (\n <FontAwesomeIcon icon={faCircleNotch} className='fa-spin pi-loader' size='lg' />\n ) : (\n <FontAwesomeIcon icon={faStop} size='xl' />\n )}\n </Button>\n )}\n {recorded && !recording && (\n <Button\n onClick={handleSaveRecording}\n variant='default'\n className='pi-rounded-full pi-w-14 pi-h-14 pi-flex pi-items-center pi-justify-center'\n data-tooltip-id='tooltip-confirm-record-view'\n data-tooltip-content={t('Tooltip.Confirm') || ''}\n >\n <FontAwesomeIcon icon={faFloppyDisk} className='pi-h-6 pi-w-6' />\n </Button>\n )}\n {!recording && !recorded && (\n <Button\n onClick={handleStart}\n variant='default'\n className='pi-rounded-full pi-w-14 pi-h-14 pi-flex pi-items-center pi-justify-center'\n data-tooltip-id='tooltip-start-recording-recorder-view'\n data-tooltip-content={t('Tooltip.Start recording') || ''}\n >\n {waiting ? (\n <FontAwesomeIcon icon={faCircleNotch} className='fa-spin pi-loader' size='lg' />\n ) : (\n <FontAwesomeIcon icon={faRecord} className='pi-h-6 pi-w-6' />\n )}\n </Button>\n )}\n </div>\n\n <div\n onClick={() => dispatch.island.setIslandView('settings')}\n data-tooltip-id='tooltip-settings-view-recorder'\n data-tooltip-content={t('Tooltip.Go to settings') || ''}\n className='pi-flex pi-items-center pi-justify-center pi-cursor-pointer pi-text-gray-700 dark:pi-text-gray-200 pi-w-6 pi-h-6 pi-flex-none'\n >\n <FontAwesomeIcon icon={faGear} className={`pi-h-6 pi-w-6`} />\n </div>\n\n {/* Buttons tooltips */}\n <CustomThemedTooltip id='tooltip-start-recording-recorder-view' place='top' />\n <CustomThemedTooltip id='tooltip-stop-recorder-view' place='top' />\n <CustomThemedTooltip id='tooltip-confirm-record-view' place='top' />\n <CustomThemedTooltip id='tooltip-settings-view-recorder' place='top' />\n </div>\n )\n}\n"],"names":["dispatch","useDispatch","_a","useSelector","state","incoming","recorder","waiting","recording","recorded","playing","shallowEqual","handleStart","setRecording","setWaiting","startAnnouncementRecording","data","sent","tempFilename","setTempFilename","setStartTime","concat","Date","now","eventDispatch","handleStop","hangupCurrentCall","setRecorded","handleSaveRecording","player","pauseAudioPlayer","setPlaying","setPaused","dispatchRecordingSave","island","setIslandView","useEventListener","useEffect","answerIncomingCall","setIncoming","t","useTranslation","React","createElement","className","Button","variant","disabled","FontAwesomeIcon","icon","faDownLeftAndUpRightToCenter","onClick","faCircleNotch","size","faStop","faFloppyDisk","faRecord","faGear","CustomThemedTooltip","id","place"],"mappings":"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"}
1
+ {"version":3,"file":"Actions.js","sources":["../../../src/components/RecorderView/Actions.tsx"],"sourcesContent":["//\n// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n//\n\nimport React, { type FC, useEffect } from 'react'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faStop,\n faCircleNotch,\n faGear,\n faDownLeftAndUpRightToCenter,\n faFloppyDisk,\n} from '@fortawesome/free-solid-svg-icons'\nimport { startAnnouncementRecording } from '../../services/offhour'\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { hangupCurrentCall, answerIncomingCall } from '../../lib/phone/call'\nimport { dispatchRecordingSave } from '../../events'\nimport { useTranslation } from 'react-i18next'\nimport { useEventListener, eventDispatch } from '../../utils'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { faRecord } from '@nethesis/nethesis-solid-svg-icons'\n\nexport const Actions: FC<{}> = () => {\n const dispatch = useDispatch<Dispatch>()\n const { incoming, waiting, recording, recorded, playing } = useSelector(\n (state: RootState) => ({\n incoming: state.recorder.incoming,\n waiting: state.recorder.waiting,\n recording: state.recorder.recording,\n recorded: state.recorder.recorded,\n playing: state.recorder.playing,\n }),\n shallowEqual,\n )\n\n async function handleStart() {\n // Update the recorder state\n dispatch.recorder.setRecording(true)\n dispatch.recorder.setWaiting(true)\n // Call the api to start the recording call\n const data: { tempFilename: string } | null = await startAnnouncementRecording()\n // Set the returned temp file name to the store\n if (data.tempFilename) dispatch.recorder.setTempFilename(data.tempFilename)\n // Set the start time of recording\n dispatch.recorder.setStartTime(`${Date.now() / 1000}`)\n eventDispatch('phone-island-recording-started', {})\n }\n useEventListener('phone-island-recording-start', (data: {}) => {\n handleStart()\n })\n\n function handleStop() {\n // Set waiting to true\n dispatch.recorder.setWaiting(true)\n // Call the function to hangup the current call used for recording\n hangupCurrentCall()\n dispatch.recorder.setRecorded(true)\n eventDispatch('phone-island-recording-stopped', {})\n }\n useEventListener('phone-island-recording-stop', (data: {}) => {\n handleStop()\n })\n\n function handleSaveRecording() {\n // check if the audio is playing and pause it\n if (playing) {\n dispatch.player.pauseAudioPlayer()\n dispatch.recorder.setPlaying(false)\n dispatch.recorder.setPaused(true)\n }\n // Dispatch the reconrding save event\n dispatchRecordingSave()\n // Close the Island\n dispatch.island.setIslandView(null)\n }\n useEventListener('phone-island-recording-save', (data: {}) => {\n handleSaveRecording()\n })\n\n useEffect(() => {\n if (!recording) {\n dispatch.recorder.setWaiting(false)\n }\n }, [recording])\n\n useEffect(() => {\n if (incoming) {\n // Answer the incoming call for recording\n answerIncomingCall()\n // Reset incoming to recorder state\n dispatch.recorder.setIncoming(false)\n dispatch.recorder.setWaiting(false)\n }\n }, [incoming])\n\n const { t } = useTranslation()\n\n return (\n <div\n className={`pi-flex pi-items-center pi-justify-between pi-px-6 pi-py-2 pi-gap-0 pi-w-full pi-mt-auto`}\n >\n <Button\n variant='transparent'\n disabled\n className='pi-w-6 pi-h-6 pi-flex pi-items-center pi-justify-center pi-flex-none'\n >\n <FontAwesomeIcon icon={faDownLeftAndUpRightToCenter} className='pi-w-6 pi-h-6' />\n </Button>\n\n <div className='pi-flex pi-items-center pi-justify-center pi-flex-grow'>\n {recording && (\n <Button\n onClick={handleStop}\n variant='default'\n className='pi-rounded-full pi-w-14 pi-h-14 pi-flex pi-items-center pi-justify-center'\n data-tooltip-id='tooltip-stop-recorder-view'\n data-tooltip-content={t('Tooltip.Stop') || ''}\n >\n {waiting ? (\n <FontAwesomeIcon icon={faCircleNotch} className='fa-spin pi-loader' size='lg' />\n ) : (\n <FontAwesomeIcon icon={faStop} size='xl' />\n )}\n </Button>\n )}\n {recorded && !recording && (\n <Button\n onClick={handleSaveRecording}\n variant='default'\n className='pi-rounded-full pi-w-14 pi-h-14 pi-flex pi-items-center pi-justify-center'\n data-tooltip-id='tooltip-confirm-record-view'\n data-tooltip-content={t('Tooltip.Confirm') || ''}\n >\n <FontAwesomeIcon icon={faFloppyDisk} className='pi-h-6 pi-w-6' />\n </Button>\n )}\n {!recording && !recorded && (\n <Button\n onClick={handleStart}\n variant='default'\n className='pi-rounded-full pi-w-14 pi-h-14 pi-flex pi-items-center pi-justify-center'\n data-tooltip-id='tooltip-start-recording-recorder-view'\n data-tooltip-content={t('Tooltip.Start recording') || ''}\n >\n {waiting ? (\n <FontAwesomeIcon icon={faCircleNotch} className='fa-spin pi-loader' size='lg' />\n ) : (\n <FontAwesomeIcon icon={faRecord} className='pi-h-6 pi-w-6' />\n )}\n </Button>\n )}\n </div>\n\n <div\n onClick={() => dispatch.island.setIslandView('settings')}\n data-tooltip-id='tooltip-settings-view-recorder'\n data-tooltip-content={t('Tooltip.Go to settings') || ''}\n className='pi-flex pi-items-center pi-justify-center pi-cursor-pointer pi-text-gray-700 dark:pi-text-gray-200 pi-w-6 pi-h-6 pi-flex-none'\n >\n <FontAwesomeIcon icon={faGear} className={`pi-h-6 pi-w-6`} />\n </div>\n\n {/* Buttons tooltips */}\n <CustomThemedTooltip id='tooltip-start-recording-recorder-view' place='top' />\n <CustomThemedTooltip id='tooltip-stop-recorder-view' place='top' />\n <CustomThemedTooltip id='tooltip-confirm-record-view' place='top' />\n <CustomThemedTooltip id='tooltip-settings-view-recorder' place='top' />\n </div>\n )\n}\n"],"names":["dispatch","useDispatch","_a","useSelector","state","incoming","recorder","waiting","recording","recorded","playing","shallowEqual","handleStart","setRecording","setWaiting","startAnnouncementRecording","data","sent","tempFilename","setTempFilename","setStartTime","concat","Date","now","eventDispatch","handleStop","hangupCurrentCall","setRecorded","handleSaveRecording","player","pauseAudioPlayer","setPlaying","setPaused","dispatchRecordingSave","island","setIslandView","useEventListener","useEffect","answerIncomingCall","setIncoming","t","useTranslation","React","createElement","className","Button","variant","disabled","FontAwesomeIcon","icon","faDownLeftAndUpRightToCenter","onClick","faCircleNotch","size","faStop","faFloppyDisk","faRecord","faGear","CustomThemedTooltip","id","place"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("react"),r=require("../services/user.js"),n=require("../lib/avatars/avatars.js");require("../node_modules/react-redux/es/index.js");var s=require("../services/astproxy.js"),a=require("../lib/user/extensions.js"),o=require("../utils/genericFunctions/eventDispatch.js");require("../store/index.js");var u=require("../node_modules/react-redux/es/hooks/useSelector.js");require("../node_modules/react-redux/es/components/Context.js"),require("../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("../node_modules/react-redux/node_modules/react-is/index.js");var c=require("../node_modules/react-redux/es/hooks/useDispatch.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=i(t),d="phone_island_api_mode",f=function(e){try{var t=localStorage.getItem("".concat(d,"_").concat(e));if("new"===t||"legacy"===t)return t}catch(e){console.warn("Failed to read API mode from localStorage:",e)}return"unknown"},h=function(e,t){try{localStorage.setItem("".concat(d,"_").concat(e),t)}catch(e){console.warn("Failed to save API mode to localStorage:",e)}};exports.RestAPI=function(i){var d=i.hostName,p=i.username,_=i.authToken,v=i.children,g=c.useDispatch(),m=u.useSelector((function(e){return e.fetchDefaults})).fetchReady;return t.useEffect((function(){if(_&&d&&p){e.__awaiter(void 0,void 0,void 0,(function(){var t,r;return e.__generator(this,(function(e){switch(e.label){case 0:if("unknown"!==(t=f(p)))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,fetch("https://".concat(d,"/api/user/me"),{headers:{Authorization:"Bearer ".concat(_)}})];case 2:if((r=e.sent()).ok)t="new",h(p,"new");else{if(404!==r.status&&401!==r.status)throw new Error("API test failed with status: ".concat(r.status));t="legacy",h(p,"legacy")}return[3,4];case 3:return e.sent(),t="legacy",h(p,"legacy"),[3,4];case 4:return"new"===t?(g.fetchDefaults.updateFetchBaseURL("https://".concat(d,"/api")),g.fetchDefaults.updateFetchHeaders({Authorization:"Bearer ".concat(_)})):(g.fetchDefaults.updateFetchBaseURL("https://".concat(d,"/webrest")),g.fetchDefaults.updateFetchHeaders({Authorization:"".concat(p,":").concat(_)})),g.fetchDefaults.setFetchReady(),[2]}}))}))}}),[_,d,p]),t.useEffect((function(){m&&(function(){e.__awaiter(this,void 0,void 0,(function(){var t;return e.__generator(this,(function(n){switch(n.label){case 0:return[4,r.getCurrentUserInfo()];case 1:return(t=n.sent())&&(g.currentUser.updateCurrentUser(t),o.eventDispatch("phone-island-user-informations-update",e.__assign({},t)),g.currentUser.setCurrentUserReady(!0),t.settings&&t.settings.open_param_url?g.paramUrl.setOpenParamUrlType(t.settings.open_param_url):g.paramUrl.setOpenParamUrlType("never"),function(){e.__awaiter(this,void 0,void 0,(function(){var t,r;return e.__generator(this,(function(e){switch(e.label){case 0:return[4,s.getAllExtensions()];case 1:return(t=e.sent())&&(g.users.updateExtensions(t),r=a.getExtensionsList(),Object.values(t).filter((function(e){return r.includes(e.exten)})).forEach((function(e){return g.currentUser.updateConversations(e)}))),[2]}}))}))}()),[2]}}))}))}(),function(){e.__awaiter(this,void 0,void 0,(function(){var t;return e.__generator(this,(function(e){switch(e.label){case 0:return[4,r.getAllUsersEndpoints()];case 1:return(t=e.sent())&&g.users.updateEndpoints(t),[2]}}))}))}(),function(){e.__awaiter(this,void 0,void 0,(function(){var t;return e.__generator(this,(function(e){switch(e.label){case 0:return[4,r.getVideoSources()];case 1:return(t=e.sent())&&g.streaming.updateVideoSources(t),[2]}}))}))}(),function(){e.__awaiter(this,void 0,void 0,(function(){var t,n;return e.__generator(this,(function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,r.getFeatureCodes()];case 1:return(t=e.sent())&&g.currentUser.updateFeatureCodes(t),[3,3];case 2:return n=e.sent(),console.warn("Failed to fetch feature codes:",n),[3,3];case 3:return[2]}}))}))}())}),[m]),t.useLayoutEffect((function(){p&&m&&n.retrieveAvatars(p)}),[m,p]),l.default.createElement(l.default.Fragment,null,m&&v)},exports.getApiMode=function(e){return f(e)},exports.resetApiMode=function(e){try{localStorage.removeItem("".concat(d,"_").concat(e))}catch(e){console.warn("Failed to reset API mode in localStorage:",e)}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("react"),r=require("../services/user.js"),n=require("../lib/avatars/avatars.js");require("../node_modules/react-redux/es/index.js");var s=require("../services/astproxy.js"),a=require("../lib/user/extensions.js"),o=require("../utils/genericFunctions/eventDispatch.js");require("../store/index.js");var c=require("../node_modules/react-redux/es/hooks/useSelector.js");require("../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("../node_modules/react-redux/node_modules/react-is/index.js");var u=require("../node_modules/react-redux/es/hooks/useDispatch.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=i(t),d="phone_island_api_mode",f=function(e){try{var t=localStorage.getItem("".concat(d,"_").concat(e));if("new"===t||"legacy"===t)return t}catch(e){console.warn("Failed to read API mode from localStorage:",e)}return"unknown"},h=function(e,t){try{localStorage.setItem("".concat(d,"_").concat(e),t)}catch(e){console.warn("Failed to save API mode to localStorage:",e)}};exports.RestAPI=function(i){var d=i.hostName,p=i.username,_=i.authToken,v=i.children,g=u.useDispatch(),m=c.useSelector((function(e){return e.fetchDefaults})).fetchReady;return t.useEffect((function(){if(_&&d&&p){e.__awaiter(void 0,void 0,void 0,(function(){var t,r;return e.__generator(this,(function(e){switch(e.label){case 0:if("unknown"!==(t=f(p)))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,fetch("https://".concat(d,"/api/user/me"),{headers:{Authorization:"Bearer ".concat(_)}})];case 2:if((r=e.sent()).ok)t="new",h(p,"new");else{if(404!==r.status&&401!==r.status)throw new Error("API test failed with status: ".concat(r.status));t="legacy",h(p,"legacy")}return[3,4];case 3:return e.sent(),t="legacy",h(p,"legacy"),[3,4];case 4:return"new"===t?(g.fetchDefaults.updateFetchBaseURL("https://".concat(d,"/api")),g.fetchDefaults.updateFetchHeaders({Authorization:"Bearer ".concat(_)})):(g.fetchDefaults.updateFetchBaseURL("https://".concat(d,"/webrest")),g.fetchDefaults.updateFetchHeaders({Authorization:"".concat(p,":").concat(_)})),g.fetchDefaults.setFetchReady(),[2]}}))}))}}),[_,d,p]),t.useEffect((function(){m&&(function(){e.__awaiter(this,void 0,void 0,(function(){var t;return e.__generator(this,(function(n){switch(n.label){case 0:return[4,r.getCurrentUserInfo()];case 1:return(t=n.sent())&&(g.currentUser.updateCurrentUser(t),o.eventDispatch("phone-island-user-informations-update",e.__assign({},t)),g.currentUser.setCurrentUserReady(!0),t.settings&&t.settings.open_param_url?g.paramUrl.setOpenParamUrlType(t.settings.open_param_url):g.paramUrl.setOpenParamUrlType("never"),function(){e.__awaiter(this,void 0,void 0,(function(){var t,r;return e.__generator(this,(function(e){switch(e.label){case 0:return[4,s.getAllExtensions()];case 1:return(t=e.sent())&&(g.users.updateExtensions(t),r=a.getExtensionsList(),Object.values(t).filter((function(e){return r.includes(e.exten)})).forEach((function(e){return g.currentUser.updateConversations(e)}))),[2]}}))}))}()),[2]}}))}))}(),function(){e.__awaiter(this,void 0,void 0,(function(){var t;return e.__generator(this,(function(e){switch(e.label){case 0:return[4,r.getAllUsersEndpoints()];case 1:return(t=e.sent())&&g.users.updateEndpoints(t),[2]}}))}))}(),function(){e.__awaiter(this,void 0,void 0,(function(){var t;return e.__generator(this,(function(e){switch(e.label){case 0:return[4,r.getVideoSources()];case 1:return(t=e.sent())&&g.streaming.updateVideoSources(t),[2]}}))}))}(),function(){e.__awaiter(this,void 0,void 0,(function(){var t,n;return e.__generator(this,(function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,r.getFeatureCodes()];case 1:return(t=e.sent())&&g.currentUser.updateFeatureCodes(t),[3,3];case 2:return n=e.sent(),console.warn("Failed to fetch feature codes:",n),[3,3];case 3:return[2]}}))}))}())}),[m]),t.useLayoutEffect((function(){p&&m&&n.retrieveAvatars(p)}),[m,p]),l.default.createElement(l.default.Fragment,null,m&&v)},exports.getApiMode=function(e){return f(e)},exports.resetApiMode=function(e){try{localStorage.removeItem("".concat(d,"_").concat(e))}catch(e){console.warn("Failed to reset API mode in localStorage:",e)}};
2
2
  //# sourceMappingURL=RestAPI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RestAPI.js","sources":["../../src/components/RestAPI.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, type FC, useEffect, useLayoutEffect } from 'react'\nimport { getCurrentUserInfo, getVideoSources, getFeatureCodes } from '../services/user'\nimport { retrieveAvatars } from '../lib/avatars/avatars'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../store'\nimport { getAllExtensions } from '../services/astproxy'\nimport { getAllUsersEndpoints } from '../services/user'\nimport { getExtensionsList } from '../lib/user/extensions'\nimport { eventDispatch } from '../utils'\n\n// Storage key for API mode\nconst API_MODE_STORAGE_KEY = 'phone_island_api_mode'\n\n// Function to get saved API mode from localStorage\nconst getSavedApiMode = (username: string): 'new' | 'legacy' | 'unknown' => {\n try {\n const saved = localStorage.getItem(`${API_MODE_STORAGE_KEY}_${username}`)\n if (saved === 'new' || saved === 'legacy') {\n return saved\n }\n } catch (error) {\n console.warn('Failed to read API mode from localStorage:', error)\n }\n return 'unknown'\n}\n\n// Function to save API mode to localStorage\nconst saveApiMode = (username: string, mode: 'new' | 'legacy') => {\n try {\n localStorage.setItem(`${API_MODE_STORAGE_KEY}_${username}`, mode)\n } catch (error) {\n console.warn('Failed to save API mode to localStorage:', error)\n }\n}\n\n// Export function to get current API mode from localStorage\nexport const getApiMode = (username: string) => getSavedApiMode(username)\n\n// Export function to reset API mode (useful for error recovery)\nexport const resetApiMode = (username: string) => {\n try {\n localStorage.removeItem(`${API_MODE_STORAGE_KEY}_${username}`)\n } catch (error) {\n console.warn('Failed to reset API mode in localStorage:', error)\n }\n}\n\nexport const RestAPI: FC<RestAPIProps> = ({ hostName, username, authToken, children }) => {\n const dispatch = useDispatch<Dispatch>()\n const { fetchReady } = useSelector((state: RootState) => state.fetchDefaults)\n\n useEffect(() => {\n if (authToken && hostName && username) {\n const initializeAPI = async () => {\n let currentApiMode = getSavedApiMode(username)\n\n // If mode is unknown or we need to test, probe the API\n if (currentApiMode === 'unknown') {\n // First time or after reset: test new API format\n try {\n const response = await fetch(`https://${hostName}/api/user/me`, {\n headers: {\n Authorization: `Bearer ${authToken}`,\n },\n })\n\n if (response.ok) {\n // New API format works\n currentApiMode = 'new'\n saveApiMode(username, 'new')\n } else if (response.status === 404 || response.status === 401) {\n // Fallback to legacy API format\n currentApiMode = 'legacy'\n saveApiMode(username, 'legacy')\n } else {\n throw new Error(`API test failed with status: ${response.status}`)\n }\n } catch (error) {\n // Network error or other issues, fallback to legacy API\n currentApiMode = 'legacy'\n saveApiMode(username, 'legacy')\n }\n }\n\n // Set the appropriate configuration based on the determined mode\n if (currentApiMode === 'new') {\n dispatch.fetchDefaults.updateFetchBaseURL(`https://${hostName}/api`)\n dispatch.fetchDefaults.updateFetchHeaders({\n Authorization: `Bearer ${authToken}`,\n })\n } else {\n dispatch.fetchDefaults.updateFetchBaseURL(`https://${hostName}/webrest`)\n dispatch.fetchDefaults.updateFetchHeaders({\n Authorization: `${username}:${authToken}`,\n })\n }\n\n dispatch.fetchDefaults.setFetchReady()\n }\n\n initializeAPI()\n }\n }, [authToken, hostName, username])\n\n useEffect(() => {\n // Get all extensions info and set to store\n async function initExtensions() {\n const extensions = await getAllExtensions()\n if (extensions) {\n dispatch.users.updateExtensions(extensions)\n // Update the current user conversations\n const currentUserExtensionsList = getExtensionsList()\n const extensionsData = Object.values(extensions).filter((extension) =>\n currentUserExtensionsList.includes(extension.exten),\n )\n // Update the user conversations to store\n extensionsData.forEach((extension) => dispatch.currentUser.updateConversations(extension))\n }\n }\n // Get users info and set to store\n async function initCurrentUser() {\n const userInfo = await getCurrentUserInfo()\n if (userInfo) {\n dispatch.currentUser.updateCurrentUser(userInfo)\n eventDispatch('phone-island-user-informations-update', { ...userInfo })\n dispatch.currentUser.setCurrentUserReady(true)\n // Update open param URL type if it exists in paramurl store\n if (userInfo.settings && userInfo.settings.open_param_url) {\n dispatch.paramUrl.setOpenParamUrlType(userInfo.settings.open_param_url)\n } else {\n dispatch.paramUrl.setOpenParamUrlType('never')\n }\n\n // Inizialize all extensions after user initialization\n initExtensions()\n }\n }\n // Get all users and endpoints info and set to store\n async function initUsersEndpoints() {\n const usersEndpoints = await getAllUsersEndpoints()\n if (usersEndpoints) {\n dispatch.users.updateEndpoints(usersEndpoints)\n }\n }\n // Get all streaming source info and set to store\n async function initVideoSources() {\n const videoSources: any = await getVideoSources()\n if (videoSources) {\n dispatch.streaming.updateVideoSources(videoSources)\n }\n }\n // Get feature codes and save to store\n async function initFeatureCodes() {\n try {\n const codes = await getFeatureCodes()\n if (codes) {\n dispatch.currentUser.updateFeatureCodes(codes)\n }\n } catch (error) {\n console.warn('Failed to fetch feature codes:', error)\n }\n }\n // Call the needed APIs on startup\n if (fetchReady) {\n initCurrentUser()\n initUsersEndpoints()\n initVideoSources()\n initFeatureCodes()\n }\n }, [fetchReady])\n\n useLayoutEffect(() => {\n // Initialize avatars request it or get from storage\n if (username && fetchReady) {\n retrieveAvatars(username)\n }\n }, [fetchReady, username])\n\n return <>{fetchReady && children}</>\n}\n\ninterface RestAPIProps {\n children: ReactNode\n hostName: string\n username: string\n authToken: string\n}\n"],"names":["API_MODE_STORAGE_KEY","getSavedApiMode","username","saved","localStorage","getItem","concat","error","console","warn","saveApiMode","mode","setItem","_a","hostName","authToken","children","dispatch","useDispatch","fetchReady","useSelector","state","fetchDefaults","useEffect","__awaiter","currentApiMode","fetch","headers","Authorization","response","sent","ok","status","Error","updateFetchBaseURL","updateFetchHeaders","setFetchReady","getCurrentUserInfo","userInfo","currentUser","updateCurrentUser","eventDispatch","__assign","setCurrentUserReady","settings","open_param_url","paramUrl","setOpenParamUrlType","getAllExtensions","extensions","users","updateExtensions","currentUserExtensionsList_1","getExtensionsList","Object","values","filter","extension","includes","exten","forEach","updateConversations","initExtensions","initCurrentUser","getAllUsersEndpoints","usersEndpoints","updateEndpoints","initUsersEndpoints","getVideoSources","videoSources","streaming","updateVideoSources","initVideoSources","getFeatureCodes","codes","updateFeatureCodes","error_2","initFeatureCodes","useLayoutEffect","retrieveAvatars","React","createElement","Fragment","removeItem"],"mappings":"q2BAcMA,EAAuB,wBAGvBC,EAAkB,SAACC,GACvB,IACE,IAAMC,EAAQC,aAAaC,QAAQ,GAAGC,OAAAN,EAAwB,KAAAM,OAAAJ,IAC9D,GAAc,QAAVC,GAA6B,WAAVA,EACrB,OAAOA,CAEV,CAAC,MAAOI,GACPC,QAAQC,KAAK,6CAA8CF,EAC5D,CACD,MAAO,SACT,EAGMG,EAAc,SAACR,EAAkBS,GACrC,IACEP,aAAaQ,QAAQ,GAAGN,OAAAN,EAAwB,KAAAM,OAAAJ,GAAYS,EAC7D,CAAC,MAAOJ,GACPC,QAAQC,KAAK,2CAA4CF,EAC1D,CACH,kBAcyC,SAACM,OAAEC,EAAQD,EAAAC,SAAEZ,EAAQW,EAAAX,SAAEa,EAASF,EAAAE,UAAEC,EAAQH,EAAAG,SAC3EC,EAAWC,EAAAA,cACTC,EAAeC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,4BAiI/D,OA/HAC,EAAAA,WAAU,WACR,GAAIR,GAAaD,GAAYZ,EAAU,CACfsB,EAAAA,eAAA,OAAA,OAAA,GAAA,iFAIhB,GAAmB,aAHnBC,EAAiBxB,EAAgBC,IAGjC,MAA4B,CAAA,EAAA,oBAGX,6BAAA,CAAA,EAAMwB,MAAM,WAAWpB,OAAAQ,kBAAwB,CAC9Da,QAAS,CACPC,cAAe,UAAUtB,OAAAS,cAI7B,IANMc,EAAWhB,EAIfiB,QAEWC,GAEXN,EAAiB,MACjBf,EAAYR,EAAU,WACjB,IAAwB,MAApB2B,EAASG,QAAsC,MAApBH,EAASG,OAK7C,MAAM,IAAIC,MAAM,gCAAA3B,OAAgCuB,EAASG,SAHzDP,EAAiB,SACjBf,EAAYR,EAAU,SAGvB,oCAGDuB,EAAiB,SACjBf,EAAYR,EAAU,6BAKH,QAAnBuB,GACFR,EAASK,cAAcY,mBAAmB,WAAW5B,OAAAQ,EAAc,SACnEG,EAASK,cAAca,mBAAmB,CACxCP,cAAe,UAAUtB,OAAAS,OAG3BE,EAASK,cAAcY,mBAAmB,WAAW5B,OAAAQ,EAAkB,aACvEG,EAASK,cAAca,mBAAmB,CACxCP,cAAe,GAAAtB,OAAGJ,EAAQ,KAAAI,OAAIS,MAIlCE,EAASK,cAAcc,0BAI1B,CACF,GAAE,CAACrB,EAAWD,EAAUZ,IAEzBqB,EAAAA,WAAU,WA2DJJ,IA3CJ,0HACmB,MAAM,CAAA,EAAAkB,EAAAA,oCAAjBC,EAAWzB,EAA0BiB,UAEzCb,EAASsB,YAAYC,kBAAkBF,GACvCG,EAAAA,cAAc,wCAA8CC,EAAAA,SAAA,CAAA,EAAAJ,IAC5DrB,EAASsB,YAAYI,qBAAoB,GAErCL,EAASM,UAAYN,EAASM,SAASC,eACzC5B,EAAS6B,SAASC,oBAAoBT,EAASM,SAASC,gBAExD5B,EAAS6B,SAASC,oBAAoB,SAxB5C,4HACqB,MAAM,CAAA,EAAAC,EAAAA,kCAAnBC,EAAapC,EAAwBiB,UAEzCb,EAASiC,MAAMC,iBAAiBF,GAE1BG,EAA4BC,EAAiBA,oBAC5BC,OAAOC,OAAON,GAAYO,QAAO,SAACC,GACvD,OAAAL,EAA0BM,SAASD,EAAUE,MAA7C,IAGaC,SAAQ,SAACH,GAAc,OAAAxC,EAASsB,YAAYsB,oBAAoBJ,EAAzC,eAEzC,CAgBGK,cAEH,CA4BCC,GA1BF,0HACyB,MAAM,CAAA,EAAAC,EAAAA,sCAAvBC,EAAiBpD,EAA4BiB,SAEjDb,EAASiC,MAAMgB,gBAAgBD,aAElC,CAsBCE,GApBF,0HAC4B,MAAM,CAAA,EAAAC,EAAAA,iCAA1BC,EAAoBxD,EAAuBiB,SAE/Cb,EAASqD,UAAUC,mBAAmBF,aAEzC,CAgBCG,GAdF,4HAEkB,6BAAM,CAAA,EAAAC,EAAeA,iCAA7BC,EAAQ7D,EAAuBiB,SAEnCb,EAASsB,YAAYoC,mBAAmBD,kCAG1ClE,QAAQC,KAAK,iCAAkCmE,gCAElD,CAMCC,GAEJ,GAAG,CAAC1D,IAEJ2D,EAAAA,iBAAgB,WAEV5E,GAAYiB,GACd4D,EAAeA,gBAAC7E,EAEpB,GAAG,CAACiB,EAAYjB,IAET8E,EAAAA,QAAGC,cAAAD,EAAA,QAAAE,SAAA,KAAA/D,GAAcH,EAC1B,qBA/I0B,SAACd,GAAqB,OAAAD,EAAgBC,EAAS,uBAG7C,SAACA,GAC3B,IACEE,aAAa+E,WAAW,GAAA7E,OAAGN,EAAwB,KAAAM,OAAAJ,GACpD,CAAC,MAAOK,GACPC,QAAQC,KAAK,4CAA6CF,EAC3D,CACH"}
1
+ {"version":3,"file":"RestAPI.js","sources":["../../src/components/RestAPI.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, type FC, useEffect, useLayoutEffect } from 'react'\nimport { getCurrentUserInfo, getVideoSources, getFeatureCodes } from '../services/user'\nimport { retrieveAvatars } from '../lib/avatars/avatars'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../store'\nimport { getAllExtensions } from '../services/astproxy'\nimport { getAllUsersEndpoints } from '../services/user'\nimport { getExtensionsList } from '../lib/user/extensions'\nimport { eventDispatch } from '../utils'\n\n// Storage key for API mode\nconst API_MODE_STORAGE_KEY = 'phone_island_api_mode'\n\n// Function to get saved API mode from localStorage\nconst getSavedApiMode = (username: string): 'new' | 'legacy' | 'unknown' => {\n try {\n const saved = localStorage.getItem(`${API_MODE_STORAGE_KEY}_${username}`)\n if (saved === 'new' || saved === 'legacy') {\n return saved\n }\n } catch (error) {\n console.warn('Failed to read API mode from localStorage:', error)\n }\n return 'unknown'\n}\n\n// Function to save API mode to localStorage\nconst saveApiMode = (username: string, mode: 'new' | 'legacy') => {\n try {\n localStorage.setItem(`${API_MODE_STORAGE_KEY}_${username}`, mode)\n } catch (error) {\n console.warn('Failed to save API mode to localStorage:', error)\n }\n}\n\n// Export function to get current API mode from localStorage\nexport const getApiMode = (username: string) => getSavedApiMode(username)\n\n// Export function to reset API mode (useful for error recovery)\nexport const resetApiMode = (username: string) => {\n try {\n localStorage.removeItem(`${API_MODE_STORAGE_KEY}_${username}`)\n } catch (error) {\n console.warn('Failed to reset API mode in localStorage:', error)\n }\n}\n\nexport const RestAPI: FC<RestAPIProps> = ({ hostName, username, authToken, children }) => {\n const dispatch = useDispatch<Dispatch>()\n const { fetchReady } = useSelector((state: RootState) => state.fetchDefaults)\n\n useEffect(() => {\n if (authToken && hostName && username) {\n const initializeAPI = async () => {\n let currentApiMode = getSavedApiMode(username)\n\n // If mode is unknown or we need to test, probe the API\n if (currentApiMode === 'unknown') {\n // First time or after reset: test new API format\n try {\n const response = await fetch(`https://${hostName}/api/user/me`, {\n headers: {\n Authorization: `Bearer ${authToken}`,\n },\n })\n\n if (response.ok) {\n // New API format works\n currentApiMode = 'new'\n saveApiMode(username, 'new')\n } else if (response.status === 404 || response.status === 401) {\n // Fallback to legacy API format\n currentApiMode = 'legacy'\n saveApiMode(username, 'legacy')\n } else {\n throw new Error(`API test failed with status: ${response.status}`)\n }\n } catch (error) {\n // Network error or other issues, fallback to legacy API\n currentApiMode = 'legacy'\n saveApiMode(username, 'legacy')\n }\n }\n\n // Set the appropriate configuration based on the determined mode\n if (currentApiMode === 'new') {\n dispatch.fetchDefaults.updateFetchBaseURL(`https://${hostName}/api`)\n dispatch.fetchDefaults.updateFetchHeaders({\n Authorization: `Bearer ${authToken}`,\n })\n } else {\n dispatch.fetchDefaults.updateFetchBaseURL(`https://${hostName}/webrest`)\n dispatch.fetchDefaults.updateFetchHeaders({\n Authorization: `${username}:${authToken}`,\n })\n }\n\n dispatch.fetchDefaults.setFetchReady()\n }\n\n initializeAPI()\n }\n }, [authToken, hostName, username])\n\n useEffect(() => {\n // Get all extensions info and set to store\n async function initExtensions() {\n const extensions = await getAllExtensions()\n if (extensions) {\n dispatch.users.updateExtensions(extensions)\n // Update the current user conversations\n const currentUserExtensionsList = getExtensionsList()\n const extensionsData = Object.values(extensions).filter((extension) =>\n currentUserExtensionsList.includes(extension.exten),\n )\n // Update the user conversations to store\n extensionsData.forEach((extension) => dispatch.currentUser.updateConversations(extension))\n }\n }\n // Get users info and set to store\n async function initCurrentUser() {\n const userInfo = await getCurrentUserInfo()\n if (userInfo) {\n dispatch.currentUser.updateCurrentUser(userInfo)\n eventDispatch('phone-island-user-informations-update', { ...userInfo })\n dispatch.currentUser.setCurrentUserReady(true)\n // Update open param URL type if it exists in paramurl store\n if (userInfo.settings && userInfo.settings.open_param_url) {\n dispatch.paramUrl.setOpenParamUrlType(userInfo.settings.open_param_url)\n } else {\n dispatch.paramUrl.setOpenParamUrlType('never')\n }\n\n // Inizialize all extensions after user initialization\n initExtensions()\n }\n }\n // Get all users and endpoints info and set to store\n async function initUsersEndpoints() {\n const usersEndpoints = await getAllUsersEndpoints()\n if (usersEndpoints) {\n dispatch.users.updateEndpoints(usersEndpoints)\n }\n }\n // Get all streaming source info and set to store\n async function initVideoSources() {\n const videoSources: any = await getVideoSources()\n if (videoSources) {\n dispatch.streaming.updateVideoSources(videoSources)\n }\n }\n // Get feature codes and save to store\n async function initFeatureCodes() {\n try {\n const codes = await getFeatureCodes()\n if (codes) {\n dispatch.currentUser.updateFeatureCodes(codes)\n }\n } catch (error) {\n console.warn('Failed to fetch feature codes:', error)\n }\n }\n // Call the needed APIs on startup\n if (fetchReady) {\n initCurrentUser()\n initUsersEndpoints()\n initVideoSources()\n initFeatureCodes()\n }\n }, [fetchReady])\n\n useLayoutEffect(() => {\n // Initialize avatars request it or get from storage\n if (username && fetchReady) {\n retrieveAvatars(username)\n }\n }, [fetchReady, username])\n\n return <>{fetchReady && children}</>\n}\n\ninterface RestAPIProps {\n children: ReactNode\n hostName: string\n username: string\n authToken: string\n}\n"],"names":["API_MODE_STORAGE_KEY","getSavedApiMode","username","saved","localStorage","getItem","concat","error","console","warn","saveApiMode","mode","setItem","_a","hostName","authToken","children","dispatch","useDispatch","fetchReady","useSelector","state","fetchDefaults","useEffect","__awaiter","currentApiMode","fetch","headers","Authorization","response","sent","ok","status","Error","updateFetchBaseURL","updateFetchHeaders","setFetchReady","getCurrentUserInfo","userInfo","currentUser","updateCurrentUser","eventDispatch","__assign","setCurrentUserReady","settings","open_param_url","paramUrl","setOpenParamUrlType","getAllExtensions","extensions","users","updateExtensions","currentUserExtensionsList_1","getExtensionsList","Object","values","filter","extension","includes","exten","forEach","updateConversations","initExtensions","initCurrentUser","getAllUsersEndpoints","usersEndpoints","updateEndpoints","initUsersEndpoints","getVideoSources","videoSources","streaming","updateVideoSources","initVideoSources","getFeatureCodes","codes","updateFeatureCodes","error_2","initFeatureCodes","useLayoutEffect","retrieveAvatars","React","createElement","Fragment","removeItem"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),n=require("react");require("../node_modules/react-redux/es/index.js");var t=require("../node_modules/socket.io-client/build/esm/index.js"),r=require("./RestAPI.js"),i=require("../lib/phone/conversation.js"),o=require("../services/user.js"),u=require("../static/busy_ringtone.js"),c=require("../utils/customHooks/useEventListener.js"),a=require("../utils/genericFunctions/eventDispatch.js"),s=require("../utils/genericFunctions/withTimeout.js"),l=require("../utils/genericFunctions/summaryEvents.js"),d=require("../store/index.js");require("../lib/webrtc/janus.js"),require("../node_modules/webrtc-adapter/src/js/adapter_core.js");var v=require("../lib/devices/devices.js"),p=require("../lib/user/default_device.js"),m=require("../utils/genericFunctions/isEmpty.js"),g=require("../utils/streaming/getStreamingSourceId.js"),f=require("../events/SocketEvents.js"),h=require("../utils/genericFunctions/timestamp.js"),b=require("../lib/user/extensions.js"),k=require("../utils/streaming/isFromStreaming.js"),S=require("../lib/phone/queue.js"),y=require("../lib/phone/trunk.js"),q=require("../node_modules/react-redux/es/hooks/useDispatch.js");function w(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var C=w(n);exports.Socket=function(w){var _=w.hostName,N=w.username,I=w.authToken,T=w.reload,U=w.reloadedCallback,j=w.children,D=w.uaType,x=q.useDispatch(),E=n.useRef(),O=n.useRef(),P=n.useRef(!1),A=n.useRef(0),F=n.useRef(null),V=n.useRef(new Map),M=n.useRef({linkedid:null,uniqueid:null});c.useEventListener("phone-island-start-transcription",(function(e){if(O.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId)||(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||null,t=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||n;if(!n&&!t)return;M.current={linkedid:n,uniqueid:t},O.current.emit("start_transcription",{linkedid:n,uniqueid:t})}})),c.useEventListener("phone-island-stop-transcription",(function(e){if(O.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId)||(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||null,t=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||n;if(!n&&!t)return;M.current={linkedid:null,uniqueid:null},O.current.emit("stop_transcription",{linkedid:n,uniqueid:t})}})),c.useEventListener("phone-island-current-user-queue-call-waiting",(function(e){x.currentCall.updateCurrentCall({throughQueue:!0,queueId:(null==e?void 0:e.queueId)||"",queueName:(null==e?void 0:e.queueName)||"",queueNumber:(null==e?void 0:e.queueNumber)||"",queuePosition:(null==e?void 0:e.queuePosition)||"",queueWaitingTime:(null==e?void 0:e.queueWaitingTime)||0})})),c.useEventListener("phone-island-current-user-queue-call-connected",(function(e){x.currentCall.updateCurrentCall({throughQueue:!0,queueId:(null==e?void 0:e.queueId)||"",queueName:(null==e?void 0:e.queueName)||"",queueNumber:(null==e?void 0:e.queueNumber)||"",queuePosition:(null==e?void 0:e.queuePosition)||"",queueWaitingTime:(null==e?void 0:e.queueWaitingTime)||0})}));return n.useEffect((function(){var n,c=function(e){if(e.counterpartNum&&k.isFromStreaming(e.counterpartNum)){x.island.setIsFromStreaming(!0),x.currentCall.updateCurrentCall({streamingSourceNumber:e.counterpartNum});var n=g.getStreamingSourceId(e.counterpartNum);n&&o.subscribe({id:n}).catch((function(e){return console.error("Error subscribing to streaming source:",e)}))}},q=function(e){var n,t,r,i;if(e){var o=function(e){return S.getCurrentCallQueueContext(e,d.store.getState().queue)}(e),u=function(e,n){var t=d.store.getState().currentCall;return{conversationId:e.id,linkedId:e.linkedId,uniqueId:e.uniqueId,ownerExtension:e.owner,number:"".concat(e.counterpartNum||""),queueId:(null==n?void 0:n.queueId)||t.queueId||"",queueName:(null==n?void 0:n.queueName)||t.queueName||"",queueNumber:(null==n?void 0:n.queueNumber)||t.queueNumber||"",queuePosition:(null==n?void 0:n.queuePosition)||"",queueWaitingTime:(null==n?void 0:n.queueWaitingTime)||0}}(e,o);if(Boolean(u.queueId||u.queueName||u.queueNumber))if(e.connected)((null===(r=F.current)||void 0===r?void 0:r.conversationId)!==e.id||"connected"!==(null===(i=F.current)||void 0===i?void 0:i.phase))&&(f.dispatchCurrentUserQueueCallConnected(u),F.current={conversationId:e.id,phase:"connected"});else((null===(n=F.current)||void 0===n?void 0:n.conversationId)!==e.id||"waiting"!==(null===(t=F.current)||void 0===t?void 0:t.phase))&&(f.dispatchCurrentUserQueueCallWaiting(u),F.current={conversationId:e.id,phase:"waiting"});else F.current=null}else F.current=null},w=function(e){return(null==e?void 0:e.linkedId)||(null==e?void 0:e.linkedid)||""},C=function(e){return(null==e?void 0:e.uniqueId)||(null==e?void 0:e.uniqueid)||""},T=function(e){return!!(null==e?void 0:e.connected)&&!!w(e)&&!!C(e)},U=function(n){var t=d.store.getState().currentUser.conversations,r=n?null==t?void 0:t[n]:void 0,i=function(e){var n,t=null,r=Object.entries(e||{}).filter((function(e){var n=e[1];return n&&Object.keys(n).length>0}));return r.forEach((function(e){var r,i,o=e[0],u=e[1];if(!t)return t=u,void(n=o);var c=T(t),a=T(u);if(a&&!c)return t=u,void(n=o);if(a===c){var s=!!t.connected,l=!!u.connected;if(l&&!s)return t=u,void(n=o);var d=null!==(r=t.startTime)&&void 0!==r?r:0,v=null!==(i=u.startTime)&&void 0!==i?i:0;l===s&&v>d&&(t=u,n=o)}})),{conversation:t,key:n,count:r.length}}(r);if(T(i.conversation))return e.__assign(e.__assign({},i),{source:"live",cacheAgeMs:void 0,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})});var o=function(n){if(!n)return null;var t=V.current.get(n);if(!t)return null;var r=Date.now()-t.cachedAt;return r>6e5?(V.current.delete(n),null):e.__assign(e.__assign({},t),{cacheAgeMs:r})}(n);return o&&T(o.conversation)?{conversation:o.conversation,key:o.conversation.id,count:i.count,source:"cache",cacheAgeMs:o.cacheAgeMs,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})}:e.__assign(e.__assign({},i),{source:i.conversation?"live_invalid":"none",cacheAgeMs:null==o?void 0:o.cacheAgeMs,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})})},j=function(n,t){var r=d.store.getState().currentCall,u=r.transferring,s=r.transferSwitching,l=r.transferCalls,v=d.store.getState().island.view;if(Object.keys(t).length>0){if(n.status){var m=d.store.getState().users.extensions,g=d.store.getState().currentUser.default_device,f=d.store.getState().currentUser,k=f.endpoints,S=f.username,w=d.store.getState().currentCall;w.incoming,w.outgoing;var C=function(){if(!m||!S)return!1;var e=Object.values(m).filter((function(e){return(null==e?void 0:e.username)===S}));return null==e?void 0:e.some((function(e){var n=null==k?void 0:k.extension.find((function(n){return n.id===(null==e?void 0:e.exten)}));return"nethlink"===(null==n?void 0:n.type)&&"offline"!==(null==e?void 0:e.status)}))};switch(n.status){case"ringing":if(function(e){var n=d.store.getState().currentCall,t=n.accepted,r=n.ownerExtension;return t&&!!r&&!!e&&r!==e}(t.owner))break;q(t),c(t),("mobile"===D&&C()||"desktop"===D&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!C()||!C()&&"physical"===(null==g?void 0:g.type)))&&(x.currentCall.checkIncomingUpdatePlay({conversationId:t.id,displayName:i.getDisplayName(t),number:"".concat(t.counterpartNum),incomingSocket:!0,incoming:!0,username:"".concat(m&&m[t.counterpartNum]&&m[t.counterpartNum].username)||"",ownerExtension:t.owner}),d.store.dispatch.island.setIslandView("call")),P.current||(P.current=!0,o.getCurrentUserInfo().then((function(n){n&&(x.currentUser.updateCurrentUser(n),a.eventDispatch("phone-island-user-informations-update",e.__assign({},n)),n.settings&&n.settings.open_param_url?x.paramUrl.setOpenParamUrlType(n.settings.open_param_url):x.paramUrl.setOpenParamUrlType("never"))})).catch((function(e){console.error("Error getting current user info:",e)})).finally((function(){setTimeout((function(){P.current=!1}),100)})));var _=d.store.getState().paramUrl.openParamUrlType,N=d.store.getState().island.urlOpened;if("ringing"===_&&!N){var I=y.isFromTrunk(t.counterpartNum);d.store.dispatch.paramUrl.setThroughTrunk(I),d.store.dispatch.island.setUrlOpened(!1),a.eventDispatch("phone-island-url-parameter-opened",{counterpartNum:t.counterpartNum,counterpartName:i.getDisplayName(t),owner:t.owner,uniqueId:t.uniqueId,linkedId:t.linkedId,throughQueue:t.throughQueue,throughTrunk:I,direction:t.direction,connected:t.connected})}break;case"busy":if(q(t),c(t),"mobile"===D&&C()||"desktop"===D&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!C()||!C()&&"physical"===(null==g?void 0:g.type))){if(t&&t.connected)x.currentCall.updateCurrentCall({conversationId:t.id,displayName:i.getDisplayName(t),number:"".concat(t.counterpartNum),ownerExtension:t.owner,username:"".concat(m&&m[t.counterpartNum]&&m[t.counterpartNum].username)||"",chDest:(null==t?void 0:t.chDest)||{},chSource:(null==t?void 0:t.chSource)||{}}),x.currentCall.checkAcceptedUpdate({acceptedSocket:!0}),x.currentCall.addTransferCalls({type:"transferred",displayName:i.getDisplayName(t),number:"".concat(t.counterpartNum),startTime:"".concat(h.getTimestampInSeconds())}),d.store.getState().island.isFromStreaming&&"out"===t.direction&&setTimeout((function(){x.island.setIslandView("streamingAnswer")}),200),p.isPhysical()&&function(e){x.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),a.eventDispatch("phone-island-call-answered",{}),d.store.dispatch.player.stopAudioPlayer(),d.store.dispatch.player.setAudioPlayerLoop(!1)}(t),"call"===v&&u&&x.currentCall.updateCurrentCall({transferring:!1});if(l.length>1)x.currentCall.deleteTransferCalls();else if(t&&!t.connected){if(u&&!s){var T=l.find((function(e){return e.number===t.counterpartNum}));!t.connected&&T&&(x.currentCall.updateCurrentCall({transferring:!1}),a.eventDispatch("phone-island-call-transfer-failed",{}),x.currentCall.updateTransferSwitching(!1))}"REC"===(null==t?void 0:t.counterpartName)&&x.physicalRecorder.setRecordingTempVariable(!0)}t&&!t.connected&&"out"===t.direction&&x.currentCall.checkOutgoingUpdate({outgoingSocket:!0,outgoing:"REC"!==(null==t?void 0:t.counterpartName),displayName:i.getDisplayName(t),number:"".concat(null==t?void 0:t.counterpartNum),username:"".concat(m&&m[null==t?void 0:t.counterpartNum]&&m[null==t?void 0:t.counterpartNum].username)||""})}break;case"onhold":q(t);var U=t.counterpartName,j=t.counterpartNum,E=t.startTime;u&&j&&U&&"<unknown>"!==U&&(x.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:j,startTime:"".concat(h.getTimestampInSeconds())}),x.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:j,startTime:"".concat(E/1e3),conversationId:t.id}),x.island.setIslandView("call"));break;case"busy_ringing":a.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&b.userTotallyFree()&&(q(null),x.player.stopAudioPlayer(),x.currentCall.reset(),x.physicalRecorder.setRecordingTempVariable(!1),x.island.setIsFromStreaming(!1))};return n={upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3},"new"===r.getApiMode(N)&&(n.path="/api/ws"),O.current=t.io("https://"+_,n),x.websocket.update({socket:O.current}),O.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(O.current.id)),a.eventDispatch("phone-island-socket-connected",{})})),O.current.on("disconnect",(function(e){console.debug("Socket disconnect - reason: ".concat(e)),E.current&&(clearInterval(E.current),E.current=null),e.includes("server disconnect")?a.eventDispatch("phone-island-server-disconnected",{}):a.eventDispatch("phone-island-socket-disconnected",{})})),O.current.io.on("error",(function(e){console.debug("Socket error: ",e)})),O.current.on("connect_error",(function(e){console.debug("Socket connect_error: ",e)})),O.current.io.on("reconnect",(function(e){A.current=0,a.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(O.current.id,")"))})),O.current.io.on("reconnect_attempt",(function(e){console.debug("Socket reconnect_attempt ".concat(e))})),O.current.io.on("reconnect_error",(function(e){console.debug("Socket reconnect_error: ",e)})),O.current.io.on("reconnect_failed",(function(){console.debug("Socket reconnect_failed")})),O.current.on("connect",(function(){console.debug("Socket on: "+_+" is connected!"),O.current.emit("login",{accessKeyId:"".concat(N),token:I,uaType:D})})),O.current.on("authe_ok",(function(){console.debug("Socket authentication success!"),a.eventDispatch("phone-island-socket-authorized",{}),E.current&&clearInterval(E.current),E.current=setInterval((function(){O.current.volatile.emit("ping",s.withTimeout((function(){A.current=0,setTimeout((function(){x.alerts.removeAlert("socket_down"),a.eventDispatch("phone-island-alert-removed",{type:"socket_down"}),a.eventDispatch("phone-island-socket-disconnected-popup-close",{})}),0)}),(function(){A.current++,console.debug("Socket ping timeout (".concat(A.current,"/").concat(3,"), connected: ").concat(O.current.connected)),setTimeout((function(){var e,n,t=O.current.connected&&A.current>=3;if(!O.current.connected||t){var r=d.store.getState().webrtc.sipcall,i=d.store.getState().currentCall,o=i.accepted,u=i.outgoing,c=null===(n=null===(e=null==r?void 0:r.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===n?void 0:n.iceConnectionState;if((o||u)&&("connected"===c||"completed"===c))return void console.debug("Socket unreachable but active call with ICE connected - skipping socket_down alert",{iceState:c,accepted:o,outgoing:u,isStaleConnection:t,timestamp:(new Date).toISOString()});t&&(console.warn("Stale socket connection detected - forcing reconnection"),O.current.disconnect()),x.alerts.setAlert("socket_down"),a.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}}),0)}),5e3))}),5e3)})),O.current.on("userMainPresenceUpdate",(function(n){d.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),f.dispatchMainPresence(n)})),O.current.on("extenHangup",(function(e){var n=d.store.getState().currentUser,t=n.endpoints,r=n.username,i=d.store.getState().conference,o=i.isActive,c=i.conferenceStartedFrom,s=d.store.getState().island,l=s.view,v=s.previewCallFromMobileOrNethlink,p=(null==t?void 0:t.extension)||[],m=p.map((function(e){return e.id})),g=null==e?void 0:e.callerNum;!m.includes(g)&&m.includes(null==e?void 0:e.channelExten)&&(g=null==e?void 0:e.channelExten);var f=p.find((function(n){return n.id===e.callerNum})),h=null==f?void 0:f.type,b=U(g).conversation,k=w(b),S=C(b),y=(null==b?void 0:b.connected)||!1;if(S&&k&&y&&(a.eventDispatch("phone-island-summary-call-check",{linkedid:k,uniqueid:S}),g&&V.current.delete(g)),"normal_clearing"===e.cause&&("physical"===h||"mobile"===h)||"normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)&&v||"user_busy"===(null==e?void 0:e.cause)||"not_defined"===(null==e?void 0:e.cause)||"call_rejected"===(null==e?void 0:e.cause)||"interworking"===(null==e?void 0:e.cause)?(setTimeout((function(){d.store.dispatch.island.toggleAvoidToShow(!1),d.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!1)}),500),o&&c!==r&&d.store.dispatch.conference.resetConference()):"normal_circuit_congestion"===(null==e?void 0:e.cause)&&o&&c===r?setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800):"normal_clearing"!==e.cause&&"user_busy"!==(null==e?void 0:e.cause)&&"not_defined"!==(null==e?void 0:e.cause)&&"call_rejected"!==(null==e?void 0:e.cause)||"webrtc"!==h&&"nethlink"!==h||!o||c===r||d.store.dispatch.conference.resetConference(),("normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)||"call_rejected"===(null==e?void 0:e.cause))&&o&&c===r){var q=d.store.getState().conference,_=q.usersList,N=q.pendingUsers,I=_&&Object.keys(_).length>0,T=N&&Object.keys(N).length>0;I||T?setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800):d.store.dispatch.conference.resetConference()}if("interworking"===(null==e?void 0:e.cause)&&o&&c===r&&"waitingConference"!==l&&setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),"user_busy"===(null==e?void 0:e.cause)){var j=d.store.getState().currentUser,D=j.endpoints,x=j.username,E=((null==D?void 0:D.extension)||[]).map((function(e){return e.id})),O=d.store.getState().currentCall,P=O.incoming,A=O.accepted,F=O.transferring,M=d.store.getState().conference,R=M.isActive,L=M.conferenceStartedFrom;!(P&&e.callerNum&&E.includes(e.callerNum))&&(!A||R||F)&&(d.store.dispatch.island.setOperatorBusyActive({callerNumber:e.callerNum||"Unknown"}),setTimeout((function(){d.store.dispatch.player.stopAudioPlayer()}),4e3),setTimeout((function(){d.store.dispatch.player.updateStartAudioPlayer({src:u.default,loop:!0}),d.store.dispatch.island.setIslandView("operatorBusy")}),600),R&&L===x&&setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var Q=d.store.getState().conference,W=Q.isActive,B=Q.conferenceStartedFrom,K=d.store.getState().currentUser.username;if(W&&B===K){var H=d.store.getState().conference;_=H.usersList,N=H.pendingUsers,I=_&&Object.keys(_).length>0,T=N&&Object.keys(N).length>0,I||T?(setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),N&&N[e.callerNum]&&d.store.dispatch.conference.removePendingUser(e.callerNum)):d.store.dispatch.conference.resetConference()}}})),O.current.on("extenConnected",(function(e){var n=d.store.getState().currentUser,t=n.default_device,r=n.endpoints,i=((null==r?void 0:r.extension)||[]).find((function(n){return n.id===e.extenConnected})),o=null==i?void 0:i.type;(("webrtc"===(null==t?void 0:t.type)||"nethlink"===(null==t?void 0:t.type))&&o&&("mobile"===o||"physical"===o)||"physical"===(null==t?void 0:t.type)&&o&&"physical"!==o)&&(d.store.dispatch.island.toggleAvoidToShow(!0),d.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0),a.eventDispatch("phone-island-call-answered",{extensionType:o}))})),O.current.on("extenUpdate",(function(e){var n,t,r;x.users.updateExtension(e);var i=d.store.getState().users.extensions,o={},u=d.store.getState().currentUser;for(var c in i){var a=i[c].username,s=i[c].exten;o[a]||(o[a]=[]),o[a].push(s)}var l,v,p=o[e.username],g=Object.keys(e.conversations||{}),h=e.username===N,b=(null===(n=e.conversations)||void 0===n?void 0:n[g[0]])||{};h&&(l=e.exten,v=e.conversations,l&&Object.values(v||{}).forEach((function(e){T(e)&&V.current.set(l,{conversation:e,cachedAt:Date.now()})})));var k=!1;if((null==e?void 0:e.username)===N&&!m.isEmpty(b)&&(null==b?void 0:b.owner)){var S=null===(r=null===(t=null==u?void 0:u.endpoints)||void 0===t?void 0:t.extension)||void 0===r?void 0:r.find((function(e){return e.id===b.owner}));S&&"mobile"===S.type&&(k=!0)}if(f.dispatchExtensions(e),m.isEmpty(b)){var y=null==p?void 0:p.some((function(e){var n,t=null===(n=i[e])||void 0===n?void 0:n.conversations;return!m.isEmpty(t)}));y||f.dispatchConversations(e)}else k||f.dispatchConversations(e);k&&"busy"===(null==e?void 0:e.status)&&(null==e?void 0:e.username)===N&&(d.store.dispatch.island.toggleAvoidToShow(!0),d.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0)),e.username===N&&(j(e,b),x.currentUser.updateConversations(e))})),O.current.on("queueUpdate",(function(e){x.queue.updateQueue(e);var n,t,r,i=(n=d.store.getState().currentUser.conversations,t=d.store.getState().currentCall.conversationId,r=null,Object.values(n||{}).forEach((function(e){Object.values(e||{}).forEach((function(e){(null==r?void 0:r.id)&&r.id===t||(t&&e.id===t||!r||e.connected&&!r.connected||e.connected===r.connected&&e.startTime>r.startTime)&&(r=e)}))})),r);i&&q(i),f.dispatchQueueUpdate(e)})),O.current.on("queueMemberUpdate",(function(e){x.queue.updateQueueMember(e),f.dispatchQueueMemberUpdate(e)})),O.current.on("takeOver",(function(){f.dispatchAlreadyLogin()})),O.current.on("serverReloaded",(function(){f.dispatchServerReload()})),O.current.on("parkingUpdate",(function(e){f.dispatchParkingUpdate(e)})),O.current.on("actionNethLink",(function(e,n){f.dispatchUrlCall(e,n)})),O.current.on("satellite/summary",(function(e){var n=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId),t=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId);n&&l.dispatchSummaryReady({linkedid:t,uniqueid:n,display_name:null==e?void 0:e.display_name,display_number:null==e?void 0:e.display_number,source:"socket"})})),O.current.on("message",(function(e){switch(e.message){case"videoCallStart":var n=d.store.getState(),t=n.currentCall,r=t.incoming,i=t.outgoing,o=t.accepted,u=n.currentUser.default_device,c=n.island,a=c.isFromStreaming,s=c.view;("webrtc"===(null==u?void 0:u.type)||"nethlink"===(null==u?void 0:u.type))&&(r||i||o)&&!a&&"video"!==s&&(x.island.toggleSideViewVisible(!1),x.island.toggleTranscriptionViewVisible(!1),x.island.setIslandView("video")),f.dispatchVideoCallStarted({initiator:"remote",callUser:e.callUser,destUser:e.destUser});break;case"screenSharingStart":x.island.toggleSideViewVisible(!1),x.island.toggleTranscriptionViewVisible(!1),x.island.setIslandView("video"),x.screenShare.update({isJoiningScreenShare:!0,room:e.roomId});break;case"screenSharingStop":x.island.toggleSideViewVisible(!1),x.island.toggleTranscriptionViewVisible(!1),x.island.setIslandView("video"),x.screenShare.update({isLeavingScreenShare:!0});break;default:console.warn("Socket: unknown message type ",e.message)}})),O.current.on("updateDefaultDevice",(function(n){f.dispatchDefaultDeviceUpdate(n);var t=d.store.getState().users.extensions,r=d.store.getState().currentUser.endpoints;if(t&&r){var i=Object.values(t).filter((function(e){return(null==e?void 0:e.exten)===n}));if(0!==i.length){var o=i[0],u=r.extension.find((function(e){return e.id===o.exten}));u&&(o=e.__assign(e.__assign({},o),{type:u.type})),d.store.dispatch.currentUser.updateCurrentDefaultDevice(o),v.checkMediaPermissions()}}})),O.current.on("confBridgeUpdate",(function(n){if(n&&(null==n?void 0:n.users)){var t=null==n?void 0:n.id,r=null==n?void 0:n.users,i=d.store.getState().conference.usersList,o=e.__assign({},r);i&&Object.keys(o).forEach((function(n){i[n]&&(o[n]=e.__assign(e.__assign({},o[n]),{muted:i[n].muted}))})),d.store.dispatch.conference.updateConferenceUsersList(o),d.store.dispatch.conference.updateConferenceId(t)}})),O.current.on("confBridgeEnd",(function(e){e&&(null==e?void 0:e.id)&&(d.store.dispatch.conference.resetConference(),a.eventDispatch("phone-island-conference-finished",{}))})),O.current.on("callWebrtc",(function(e){a.eventDispatch("phone-island-call-start",{number:e})})),O.current.on("newVoiceMessageCounter",(function(e){a.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})})),O.current.on("streamingSourceUpdate",(function(e){a.eventDispatch("phone-island-streaming-information-received",{res:e});var n=e.streaming||e.res&&e.res.streaming;if(n){var t=n.source,r=n.image;if(t&&r){d.store.getState().island.isFromStreaming;var i=d.store.getState().currentCall.streamingSourceNumber;g.getStreamingSourceId(i),x.streaming.updateSourceImage({source:t,image:r})}}})),O.current.on("satellite/transcription",(function(e){var n=M.current,t=null==e?void 0:e.uniqueid,r=null==e?void 0:e.linkedid;if(n.linkedid&&t){var i=function(e){return null!=e&&(e===n.linkedid||e===n.uniqueid)};if(!i(t)&&!i(r))return}a.eventDispatch("phone-island-conversation-transcription",e)})),function(){clearInterval(E.current),O.current.close()}}),[_,N,I,D,x]),n.useEffect((function(){var e;if(T){console.info("Socket reload requested");var n=d.store.getState().alerts.data,t=d.store.getState().island.forceReload;(null===(e=n.socket_down)||void 0===e?void 0:e.active)||!1||t?(console.info(t?"Force reload requested, performing Socket reconnection":"Socket down detected (alert active), performing reconnection"),t&&d.store.dispatch.island.setForceReload(!1),E.current&&(clearInterval(E.current),E.current=null),setTimeout((function(){O.current.disconnect(),O.current.connect(),U()}),100)):(console.info("Socket already connected (no alert active), skipping reconnection"),U())}}),[T]),C.default.createElement(C.default.Fragment,null,j)};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),n=require("react");require("../node_modules/react-redux/es/index.js");var t=require("../node_modules/socket.io-client/build/esm/index.js"),r=require("./RestAPI.js"),i=require("../lib/phone/conversation.js"),o=require("../services/phonebook.js"),u=require("../services/user.js"),c=require("../static/busy_ringtone.js"),a=require("../utils/customHooks/useEventListener.js"),s=require("../utils/genericFunctions/eventDispatch.js"),l=require("../utils/genericFunctions/withTimeout.js"),d=require("../utils/genericFunctions/summaryEvents.js"),v=require("../store/index.js");require("../lib/webrtc/janus.js"),require("../node_modules/webrtc-adapter/src/js/adapter_core.js");var p=require("../lib/devices/devices.js"),m=require("../lib/user/default_device.js"),f=require("../utils/genericFunctions/isEmpty.js"),g=require("../utils/streaming/getStreamingSourceId.js"),h=require("../events/SocketEvents.js"),b=require("../utils/genericFunctions/timestamp.js"),k=require("../lib/user/extensions.js"),S=require("../utils/streaming/isFromStreaming.js"),y=require("../lib/phone/queue.js"),w=require("../lib/phone/trunk.js"),C=require("../node_modules/react-redux/es/hooks/useDispatch.js");function q(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=q(n);exports.Socket=function(q){var N=q.hostName,I=q.username,T=q.authToken,j=q.reload,U=q.reloadedCallback,D=q.children,x=q.uaType,E=C.useDispatch(),O=n.useRef(),P=n.useRef(),F=n.useRef(!1),A=n.useRef(0),V=n.useRef(null),M=n.useRef(new Map),R=n.useRef(new Map),L=n.useRef(new Set),Q=n.useRef({linkedid:null,uniqueid:null});a.useEventListener("phone-island-start-transcription",(function(e){if(P.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId)||(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||null,t=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||n;if(!n&&!t)return;Q.current={linkedid:n,uniqueid:t},P.current.emit("start_transcription",{linkedid:n,uniqueid:t})}})),a.useEventListener("phone-island-stop-transcription",(function(e){if(P.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId)||(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||null,t=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||n;if(!n&&!t)return;Q.current={linkedid:null,uniqueid:null},P.current.emit("stop_transcription",{linkedid:n,uniqueid:t})}})),a.useEventListener("phone-island-current-user-queue-call-waiting",(function(e){E.currentCall.updateCurrentCall({throughQueue:!0,queueId:(null==e?void 0:e.queueId)||"",queueName:(null==e?void 0:e.queueName)||"",queueNumber:(null==e?void 0:e.queueNumber)||"",queuePosition:(null==e?void 0:e.queuePosition)||"",queueWaitingTime:(null==e?void 0:e.queueWaitingTime)||0})})),a.useEventListener("phone-island-current-user-queue-call-connected",(function(e){E.currentCall.updateCurrentCall({throughQueue:!0,queueId:(null==e?void 0:e.queueId)||"",queueName:(null==e?void 0:e.queueName)||"",queueNumber:(null==e?void 0:e.queueNumber)||"",queuePosition:(null==e?void 0:e.queuePosition)||"",queueWaitingTime:(null==e?void 0:e.queueWaitingTime)||0})}));return n.useEffect((function(){var n,a=function(e){if(e.counterpartNum&&S.isFromStreaming(e.counterpartNum)){E.island.setIsFromStreaming(!0),E.currentCall.updateCurrentCall({streamingSourceNumber:e.counterpartNum});var n=g.getStreamingSourceId(e.counterpartNum);n&&u.subscribe({id:n}).catch((function(e){return console.error("Error subscribing to streaming source:",e)}))}},C=function(e){return(e||"").replace(/\D/g,"")},q=function(e){var n=i.getDisplayName(e),t=((null==e?void 0:e.counterpartNum)||"").trim();return n&&n!==t?n:(t?R.current.get(C(t)):void 0)||n},_=function(e){var n,t,r,i;if(e){var o=function(e){return y.getCurrentCallQueueContext(e,v.store.getState().queue)}(e),u=function(e,n){var t=v.store.getState().currentCall;return{conversationId:e.id,linkedId:e.linkedId,uniqueId:e.uniqueId,ownerExtension:e.owner,number:"".concat(e.counterpartNum||""),queueId:(null==n?void 0:n.queueId)||t.queueId||"",queueName:(null==n?void 0:n.queueName)||t.queueName||"",queueNumber:(null==n?void 0:n.queueNumber)||t.queueNumber||"",queuePosition:(null==n?void 0:n.queuePosition)||"",queueWaitingTime:(null==n?void 0:n.queueWaitingTime)||0}}(e,o);if(Boolean(u.queueId||u.queueName||u.queueNumber))if(e.connected)((null===(r=V.current)||void 0===r?void 0:r.conversationId)!==e.id||"connected"!==(null===(i=V.current)||void 0===i?void 0:i.phase))&&(h.dispatchCurrentUserQueueCallConnected(u),V.current={conversationId:e.id,phase:"connected"});else((null===(n=V.current)||void 0===n?void 0:n.conversationId)!==e.id||"waiting"!==(null===(t=V.current)||void 0===t?void 0:t.phase))&&(h.dispatchCurrentUserQueueCallWaiting(u),V.current={conversationId:e.id,phase:"waiting"});else V.current=null}else V.current=null},j=function(e){return(null==e?void 0:e.linkedId)||(null==e?void 0:e.linkedid)||""},U=function(e){return(null==e?void 0:e.uniqueId)||(null==e?void 0:e.uniqueid)||""},D=function(e){return!!(null==e?void 0:e.connected)&&!!j(e)&&!!U(e)},W=function(n){var t=v.store.getState().currentUser.conversations,r=n?null==t?void 0:t[n]:void 0,i=function(e){var n,t=null,r=Object.entries(e||{}).filter((function(e){var n=e[1];return n&&Object.keys(n).length>0}));return r.forEach((function(e){var r,i,o=e[0],u=e[1];if(!t)return t=u,void(n=o);var c=D(t),a=D(u);if(a&&!c)return t=u,void(n=o);if(a===c){var s=!!t.connected,l=!!u.connected;if(l&&!s)return t=u,void(n=o);var d=null!==(r=t.startTime)&&void 0!==r?r:0,v=null!==(i=u.startTime)&&void 0!==i?i:0;l===s&&v>d&&(t=u,n=o)}})),{conversation:t,key:n,count:r.length}}(r);if(D(i.conversation))return e.__assign(e.__assign({},i),{source:"live",cacheAgeMs:void 0,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})});var o=function(n){if(!n)return null;var t=M.current.get(n);if(!t)return null;var r=Date.now()-t.cachedAt;return r>6e5?(M.current.delete(n),null):e.__assign(e.__assign({},t),{cacheAgeMs:r})}(n);return o&&D(o.conversation)?{conversation:o.conversation,key:o.conversation.id,count:i.count,source:"cache",cacheAgeMs:o.cacheAgeMs,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})}:e.__assign(e.__assign({},i),{source:i.conversation?"live_invalid":"none",cacheAgeMs:null==o?void 0:o.cacheAgeMs,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})})},B=function(n,t){var r=v.store.getState().currentCall,c=r.transferring,l=r.transferSwitching,d=r.transferCalls,p=v.store.getState().island.view;if(Object.keys(t).length>0){if(n.status){var f=v.store.getState().users.extensions,g=v.store.getState().currentUser.default_device,h=v.store.getState().currentUser,y=h.endpoints,N=h.username,I=v.store.getState().currentCall;I.incoming,I.outgoing;var T=function(){if(!f||!N)return!1;var e=Object.values(f).filter((function(e){return(null==e?void 0:e.username)===N}));return null==e?void 0:e.some((function(e){var n=null==y?void 0:y.extension.find((function(n){return n.id===(null==e?void 0:e.exten)}));return"nethlink"===(null==n?void 0:n.type)&&"offline"!==(null==e?void 0:e.status)}))};switch(n.status){case"ringing":if(function(e){var n=v.store.getState().currentCall,t=n.accepted,r=n.ownerExtension;return t&&!!r&&!!e&&r!==e}(t.owner))break;_(t),a(t),function(e){if(e&&"in"===e.direction){var n=(e.counterpartNum||"").trim();if(!(n.length<3)){var t=(e.counterpartName||"").trim();if(!t||"<unknown>"===t||t===n){var r=v.store.getState().users.extensions;if(!(r&&r[n]||S.isFromStreaming(n))){var i=C(n);R.current.has(i)||e.id&&L.current.has(e.id)||(e.id&&(L.current.size>500&&L.current.clear(),L.current.add(e.id)),o.searchPhonebook(1,n,"").then((function(e){var n=((null==e?void 0:e.rows)||[]).find((function(e){return[e.extension,e.workphone,e.homephone,e.cellphone,e.fax].some((function(e){var n=C(e);return n.length>0&&(n===i||n.endsWith(i)||i.endsWith(n))}))})),t=((null==n?void 0:n.name)||(null==n?void 0:n.company)||"").trim();if(t){R.current.set(i,t);var r=v.store.getState().currentCall;C(r.number)===i&&E.currentCall.updateCurrentCall({displayName:t})}})).catch((function(){})))}}}}}(t),("mobile"===x&&T()||"desktop"===x&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!T()||!T()&&"physical"===(null==g?void 0:g.type)))&&(E.currentCall.checkIncomingUpdatePlay({conversationId:t.id,displayName:q(t),number:"".concat(t.counterpartNum),incomingSocket:!0,incoming:!0,username:"".concat(f&&f[t.counterpartNum]&&f[t.counterpartNum].username)||"",ownerExtension:t.owner}),v.store.dispatch.island.setIslandView("call")),F.current||(F.current=!0,u.getCurrentUserInfo().then((function(n){n&&(E.currentUser.updateCurrentUser(n),s.eventDispatch("phone-island-user-informations-update",e.__assign({},n)),n.settings&&n.settings.open_param_url?E.paramUrl.setOpenParamUrlType(n.settings.open_param_url):E.paramUrl.setOpenParamUrlType("never"))})).catch((function(e){console.error("Error getting current user info:",e)})).finally((function(){setTimeout((function(){F.current=!1}),100)})));var j=v.store.getState().paramUrl.openParamUrlType,U=v.store.getState().island.urlOpened;if("ringing"===j&&!U){var D=w.isFromTrunk(t.counterpartNum);v.store.dispatch.paramUrl.setThroughTrunk(D),v.store.dispatch.island.setUrlOpened(!1),s.eventDispatch("phone-island-url-parameter-opened",{counterpartNum:t.counterpartNum,counterpartName:q(t),owner:t.owner,uniqueId:t.uniqueId,linkedId:t.linkedId,throughQueue:t.throughQueue,throughTrunk:D,direction:t.direction,connected:t.connected})}break;case"busy":if(_(t),a(t),"mobile"===x&&T()||"desktop"===x&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!T()||!T()&&"physical"===(null==g?void 0:g.type))){if(t&&t.connected)E.currentCall.updateCurrentCall({conversationId:t.id,displayName:q(t),number:"".concat(t.counterpartNum),ownerExtension:t.owner,username:"".concat(f&&f[t.counterpartNum]&&f[t.counterpartNum].username)||"",chDest:(null==t?void 0:t.chDest)||{},chSource:(null==t?void 0:t.chSource)||{}}),E.currentCall.checkAcceptedUpdate({acceptedSocket:!0}),E.currentCall.addTransferCalls({type:"transferred",displayName:q(t),number:"".concat(t.counterpartNum),startTime:"".concat(b.getTimestampInSeconds())}),v.store.getState().island.isFromStreaming&&"out"===t.direction&&setTimeout((function(){E.island.setIslandView("streamingAnswer")}),200),m.isPhysical()&&function(e){E.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),s.eventDispatch("phone-island-call-answered",{}),v.store.dispatch.player.stopAudioPlayer(),v.store.dispatch.player.setAudioPlayerLoop(!1)}(t),"call"===p&&c&&E.currentCall.updateCurrentCall({transferring:!1});if(d.length>1)E.currentCall.deleteTransferCalls();else if(t&&!t.connected){if(c&&!l){var O=d.find((function(e){return e.number===t.counterpartNum}));!t.connected&&O&&(E.currentCall.updateCurrentCall({transferring:!1}),s.eventDispatch("phone-island-call-transfer-failed",{}),E.currentCall.updateTransferSwitching(!1))}"REC"===(null==t?void 0:t.counterpartName)&&E.physicalRecorder.setRecordingTempVariable(!0)}t&&!t.connected&&"out"===t.direction&&E.currentCall.checkOutgoingUpdate({outgoingSocket:!0,outgoing:"REC"!==(null==t?void 0:t.counterpartName),displayName:i.getDisplayName(t),number:"".concat(null==t?void 0:t.counterpartNum),username:"".concat(f&&f[null==t?void 0:t.counterpartNum]&&f[null==t?void 0:t.counterpartNum].username)||""})}break;case"onhold":_(t);var P=t.counterpartName,A=t.counterpartNum,V=t.startTime;c&&A&&P&&"<unknown>"!==P&&(E.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:A,startTime:"".concat(b.getTimestampInSeconds())}),E.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:A,startTime:"".concat(V/1e3),conversationId:t.id}),E.island.setIslandView("call"));break;case"busy_ringing":s.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&k.userTotallyFree()&&(_(null),E.player.stopAudioPlayer(),E.currentCall.reset(),E.physicalRecorder.setRecordingTempVariable(!1),E.island.setIsFromStreaming(!1))};return n={upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3},"new"===r.getApiMode(I)&&(n.path="/api/ws"),P.current=t.io("https://"+N,n),E.websocket.update({socket:P.current}),P.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(P.current.id)),s.eventDispatch("phone-island-socket-connected",{})})),P.current.on("disconnect",(function(e){console.debug("Socket disconnect - reason: ".concat(e)),O.current&&(clearInterval(O.current),O.current=null),e.includes("server disconnect")?s.eventDispatch("phone-island-server-disconnected",{}):s.eventDispatch("phone-island-socket-disconnected",{})})),P.current.io.on("error",(function(e){console.debug("Socket error: ",e)})),P.current.on("connect_error",(function(e){console.debug("Socket connect_error: ",e)})),P.current.io.on("reconnect",(function(e){A.current=0,s.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(P.current.id,")"))})),P.current.io.on("reconnect_attempt",(function(e){console.debug("Socket reconnect_attempt ".concat(e))})),P.current.io.on("reconnect_error",(function(e){console.debug("Socket reconnect_error: ",e)})),P.current.io.on("reconnect_failed",(function(){console.debug("Socket reconnect_failed")})),P.current.on("connect",(function(){console.debug("Socket on: "+N+" is connected!"),P.current.emit("login",{accessKeyId:"".concat(I),token:T,uaType:x})})),P.current.on("authe_ok",(function(){console.debug("Socket authentication success!"),s.eventDispatch("phone-island-socket-authorized",{}),O.current&&clearInterval(O.current),O.current=setInterval((function(){P.current.volatile.emit("ping",l.withTimeout((function(){A.current=0,setTimeout((function(){E.alerts.removeAlert("socket_down"),s.eventDispatch("phone-island-alert-removed",{type:"socket_down"}),s.eventDispatch("phone-island-socket-disconnected-popup-close",{})}),0)}),(function(){A.current++,console.debug("Socket ping timeout (".concat(A.current,"/").concat(3,"), connected: ").concat(P.current.connected)),setTimeout((function(){var e,n,t=P.current.connected&&A.current>=3;if(!P.current.connected||t){var r=v.store.getState().webrtc.sipcall,i=v.store.getState().currentCall,o=i.accepted,u=i.outgoing,c=null===(n=null===(e=null==r?void 0:r.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===n?void 0:n.iceConnectionState;if((o||u)&&("connected"===c||"completed"===c))return void console.debug("Socket unreachable but active call with ICE connected - skipping socket_down alert",{iceState:c,accepted:o,outgoing:u,isStaleConnection:t,timestamp:(new Date).toISOString()});t&&(console.warn("Stale socket connection detected - forcing reconnection"),P.current.disconnect()),E.alerts.setAlert("socket_down"),s.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}}),0)}),5e3))}),5e3)})),P.current.on("userMainPresenceUpdate",(function(n){v.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),h.dispatchMainPresence(n)})),P.current.on("extenHangup",(function(e){var n=v.store.getState().currentUser,t=n.endpoints,r=n.username,i=v.store.getState().conference,o=i.isActive,u=i.conferenceStartedFrom,a=v.store.getState().island,l=a.view,d=a.previewCallFromMobileOrNethlink,p=(null==t?void 0:t.extension)||[],m=p.map((function(e){return e.id})),f=null==e?void 0:e.callerNum;!m.includes(f)&&m.includes(null==e?void 0:e.channelExten)&&(f=null==e?void 0:e.channelExten);var g=p.find((function(n){return n.id===e.callerNum})),h=null==g?void 0:g.type,b=W(f).conversation,k=j(b),S=U(b),y=(null==b?void 0:b.connected)||!1;if(S&&k&&y&&(s.eventDispatch("phone-island-summary-call-check",{linkedid:k,uniqueid:S}),f&&M.current.delete(f)),"normal_clearing"===e.cause&&("physical"===h||"mobile"===h)||"normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)&&d||"user_busy"===(null==e?void 0:e.cause)||"not_defined"===(null==e?void 0:e.cause)||"call_rejected"===(null==e?void 0:e.cause)||"interworking"===(null==e?void 0:e.cause)?(setTimeout((function(){v.store.dispatch.island.toggleAvoidToShow(!1),v.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!1)}),500),o&&u!==r&&v.store.dispatch.conference.resetConference()):"normal_circuit_congestion"===(null==e?void 0:e.cause)&&o&&u===r?setTimeout((function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800):"normal_clearing"!==e.cause&&"user_busy"!==(null==e?void 0:e.cause)&&"not_defined"!==(null==e?void 0:e.cause)&&"call_rejected"!==(null==e?void 0:e.cause)||"webrtc"!==h&&"nethlink"!==h||!o||u===r||v.store.dispatch.conference.resetConference(),("normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)||"call_rejected"===(null==e?void 0:e.cause))&&o&&u===r){var w=v.store.getState().conference,C=w.usersList,q=w.pendingUsers,_=C&&Object.keys(C).length>0,N=q&&Object.keys(q).length>0;_||N?setTimeout((function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800):v.store.dispatch.conference.resetConference()}if("interworking"===(null==e?void 0:e.cause)&&o&&u===r&&"waitingConference"!==l&&setTimeout((function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),"user_busy"===(null==e?void 0:e.cause)){var I=v.store.getState().currentUser,T=I.endpoints,D=I.username,x=((null==T?void 0:T.extension)||[]).map((function(e){return e.id})),E=v.store.getState().currentCall,O=E.incoming,P=E.accepted,F=E.transferring,A=v.store.getState().conference,V=A.isActive,R=A.conferenceStartedFrom;!(O&&e.callerNum&&x.includes(e.callerNum))&&(!P||V||F)&&(v.store.dispatch.island.setOperatorBusyActive({callerNumber:e.callerNum||"Unknown"}),setTimeout((function(){v.store.dispatch.player.stopAudioPlayer()}),4e3),setTimeout((function(){v.store.dispatch.player.updateStartAudioPlayer({src:c.default,loop:!0}),v.store.dispatch.island.setIslandView("operatorBusy")}),600),V&&R===D&&setTimeout((function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var L=v.store.getState().conference,Q=L.isActive,B=L.conferenceStartedFrom,K=v.store.getState().currentUser.username;if(Q&&B===K){var z=v.store.getState().conference;C=z.usersList,q=z.pendingUsers,_=C&&Object.keys(C).length>0,N=q&&Object.keys(q).length>0,_||N?(setTimeout((function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),q&&q[e.callerNum]&&v.store.dispatch.conference.removePendingUser(e.callerNum)):v.store.dispatch.conference.resetConference()}}})),P.current.on("extenConnected",(function(e){var n=v.store.getState().currentUser,t=n.default_device,r=n.endpoints,i=((null==r?void 0:r.extension)||[]).find((function(n){return n.id===e.extenConnected})),o=null==i?void 0:i.type;(("webrtc"===(null==t?void 0:t.type)||"nethlink"===(null==t?void 0:t.type))&&o&&("mobile"===o||"physical"===o)||"physical"===(null==t?void 0:t.type)&&o&&"physical"!==o)&&(v.store.dispatch.island.toggleAvoidToShow(!0),v.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0),s.eventDispatch("phone-island-call-answered",{extensionType:o}))})),P.current.on("extenUpdate",(function(e){var n,t,r;E.users.updateExtension(e);var i=v.store.getState().users.extensions,o={},u=v.store.getState().currentUser;for(var c in i){var a=i[c].username,s=i[c].exten;o[a]||(o[a]=[]),o[a].push(s)}var l,d,p=o[e.username],m=Object.keys(e.conversations||{}),g=e.username===I,b=(null===(n=e.conversations)||void 0===n?void 0:n[m[0]])||{};g&&(l=e.exten,d=e.conversations,l&&Object.values(d||{}).forEach((function(e){D(e)&&M.current.set(l,{conversation:e,cachedAt:Date.now()})})));var k=!1;if((null==e?void 0:e.username)===I&&!f.isEmpty(b)&&(null==b?void 0:b.owner)){var S=null===(r=null===(t=null==u?void 0:u.endpoints)||void 0===t?void 0:t.extension)||void 0===r?void 0:r.find((function(e){return e.id===b.owner}));S&&"mobile"===S.type&&(k=!0)}if(h.dispatchExtensions(e),f.isEmpty(b)){var y=null==p?void 0:p.some((function(e){var n,t=null===(n=i[e])||void 0===n?void 0:n.conversations;return!f.isEmpty(t)}));y||h.dispatchConversations(e)}else k||h.dispatchConversations(e);k&&"busy"===(null==e?void 0:e.status)&&(null==e?void 0:e.username)===I&&(v.store.dispatch.island.toggleAvoidToShow(!0),v.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0)),e.username===I&&(B(e,b),E.currentUser.updateConversations(e))})),P.current.on("queueUpdate",(function(e){E.queue.updateQueue(e);var n,t,r,i=(n=v.store.getState().currentUser.conversations,t=v.store.getState().currentCall.conversationId,r=null,Object.values(n||{}).forEach((function(e){Object.values(e||{}).forEach((function(e){(null==r?void 0:r.id)&&r.id===t||(t&&e.id===t||!r||e.connected&&!r.connected||e.connected===r.connected&&e.startTime>r.startTime)&&(r=e)}))})),r);i&&_(i),h.dispatchQueueUpdate(e)})),P.current.on("queueMemberUpdate",(function(e){E.queue.updateQueueMember(e),h.dispatchQueueMemberUpdate(e)})),P.current.on("takeOver",(function(){h.dispatchAlreadyLogin()})),P.current.on("serverReloaded",(function(){h.dispatchServerReload()})),P.current.on("parkingUpdate",(function(e){h.dispatchParkingUpdate(e)})),P.current.on("actionNethLink",(function(e,n){h.dispatchUrlCall(e,n)})),P.current.on("satellite/summary",(function(e){var n=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId),t=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId);n&&d.dispatchSummaryReady({linkedid:t,uniqueid:n,display_name:null==e?void 0:e.display_name,display_number:null==e?void 0:e.display_number,source:"socket"})})),P.current.on("message",(function(e){switch(e.message){case"videoCallStart":var n=v.store.getState(),t=n.currentCall,r=t.incoming,i=t.outgoing,o=t.accepted,u=n.currentUser.default_device,c=n.island,a=c.isFromStreaming,s=c.view;("webrtc"===(null==u?void 0:u.type)||"nethlink"===(null==u?void 0:u.type))&&(r||i||o)&&!a&&"video"!==s&&(E.island.toggleSideViewVisible(!1),E.island.toggleTranscriptionViewVisible(!1),E.island.setIslandView("video")),h.dispatchVideoCallStarted({initiator:"remote",callUser:e.callUser,destUser:e.destUser});break;case"screenSharingStart":E.island.toggleSideViewVisible(!1),E.island.toggleTranscriptionViewVisible(!1),E.island.setIslandView("video"),E.screenShare.update({isJoiningScreenShare:!0,room:e.roomId});break;case"screenSharingStop":E.island.toggleSideViewVisible(!1),E.island.toggleTranscriptionViewVisible(!1),E.island.setIslandView("video"),E.screenShare.update({isLeavingScreenShare:!0});break;default:console.warn("Socket: unknown message type ",e.message)}})),P.current.on("updateDefaultDevice",(function(n){h.dispatchDefaultDeviceUpdate(n);var t=v.store.getState().users.extensions,r=v.store.getState().currentUser.endpoints;if(t&&r){var i=Object.values(t).filter((function(e){return(null==e?void 0:e.exten)===n}));if(0!==i.length){var o=i[0],u=r.extension.find((function(e){return e.id===o.exten}));u&&(o=e.__assign(e.__assign({},o),{type:u.type})),v.store.dispatch.currentUser.updateCurrentDefaultDevice(o),p.checkMediaPermissions()}}})),P.current.on("confBridgeUpdate",(function(n){if(n&&(null==n?void 0:n.users)){var t=null==n?void 0:n.id,r=null==n?void 0:n.users,i=v.store.getState().conference.usersList,o=e.__assign({},r);i&&Object.keys(o).forEach((function(n){i[n]&&(o[n]=e.__assign(e.__assign({},o[n]),{muted:i[n].muted}))})),v.store.dispatch.conference.updateConferenceUsersList(o),v.store.dispatch.conference.updateConferenceId(t)}})),P.current.on("confBridgeEnd",(function(e){e&&(null==e?void 0:e.id)&&(v.store.dispatch.conference.resetConference(),s.eventDispatch("phone-island-conference-finished",{}))})),P.current.on("callWebrtc",(function(e){s.eventDispatch("phone-island-call-start",{number:e})})),P.current.on("newVoiceMessageCounter",(function(e){s.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})})),P.current.on("streamingSourceUpdate",(function(e){s.eventDispatch("phone-island-streaming-information-received",{res:e});var n=e.streaming||e.res&&e.res.streaming;if(n){var t=n.source,r=n.image;if(t&&r){v.store.getState().island.isFromStreaming;var i=v.store.getState().currentCall.streamingSourceNumber;g.getStreamingSourceId(i),E.streaming.updateSourceImage({source:t,image:r})}}})),P.current.on("satellite/transcription",(function(e){var n=Q.current,t=null==e?void 0:e.uniqueid,r=null==e?void 0:e.linkedid;if(n.linkedid&&t){var i=function(e){return null!=e&&(e===n.linkedid||e===n.uniqueid)};if(!i(t)&&!i(r))return}s.eventDispatch("phone-island-conversation-transcription",e)})),function(){clearInterval(O.current),R.current.clear(),L.current.clear(),P.current.close()}}),[N,I,T,x,E]),n.useEffect((function(){var e;if(j){console.info("Socket reload requested");var n=v.store.getState().alerts.data,t=v.store.getState().island.forceReload;(null===(e=n.socket_down)||void 0===e?void 0:e.active)||!1||t?(console.info(t?"Force reload requested, performing Socket reconnection":"Socket down detected (alert active), performing reconnection"),t&&v.store.dispatch.island.setForceReload(!1),O.current&&(clearInterval(O.current),O.current=null),setTimeout((function(){P.current.disconnect(),P.current.connect(),U()}),100)):(console.info("Socket already connected (no alert active), skipping reconnection"),U())}}),[j]),_.default.createElement(_.default.Fragment,null,D)};
2
2
  //# sourceMappingURL=Socket.js.map