@nethesis/phone-island 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,6 +13,85 @@ Available as widget on `jsDelivr`
13
13
  [![alt_text](https://img.shields.io/jsdelivr/gh/hw/nethesis/phone-island?label=jsdelivr-js&style=for-the-badge)](https://cdn.jsdelivr.net/gh/nethesis/phone-island/dist-widget/index.widget.js)
14
14
  [![alt_text](https://img.shields.io/jsdelivr/gh/hw/nethesis/phone-island?label=jsdelivr-css&color=blue&style=for-the-badge)](https://cdn.jsdelivr.net/gh/nethesis/phone-island/dist-widget/index.widget.css)
15
15
 
16
+ ## Integrate in any template
17
+
18
+ Phone Island can be embedded in any HTML template, CMS page or server-rendered application without a React-specific integration.
19
+
20
+ To embed the standalone widget you need:
21
+
22
+ 1. the CDN CSS file
23
+ 2. the CDN JavaScript bundle
24
+ 3. a container element with class `phone-island`
25
+ 4. a Base64 config token in `data-config`
26
+ 5. a host-side JavaScript file that dispatches commands and listens to Phone Island browser events
27
+
28
+ ### Minimal HTML example
29
+
30
+ ```html
31
+ <!doctype html>
32
+ <html lang="en">
33
+ <head>
34
+ <meta charset="utf-8" />
35
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
36
+ <title>Phone Island integration</title>
37
+
38
+ <link
39
+ rel="stylesheet"
40
+ href="https://cdn.jsdelivr.net/gh/nethesis/phone-island@latest/dist-widget/index.widget.css"
41
+ />
42
+ </head>
43
+ <body>
44
+ <div class="phone-island" data-config="YOUR_BASE64_CONFIG_TOKEN"></div>
45
+
46
+ <script src="https://cdn.jsdelivr.net/gh/nethesis/phone-island@latest/dist-widget/index.widget.js"></script>
47
+ <script src="./phone-island-integration.js"></script>
48
+ </body>
49
+ </html>
50
+ ```
51
+
52
+ ### Host-side integration script
53
+
54
+ Create a file such as `phone-island-integration.js` and use it to control the widget from your page.
55
+
56
+ ```javascript
57
+ function dispatchPhoneIslandEvent(eventName, detail = {}) {
58
+ window.dispatchEvent(new CustomEvent(eventName, { detail }))
59
+ }
60
+
61
+ window.addEventListener('phone-island-call-started', (event) => {
62
+ console.log('Call started', event.detail)
63
+ })
64
+
65
+ window.addEventListener('phone-island-video-call-started', (event) => {
66
+ console.log('Video call started', event.detail)
67
+ })
68
+
69
+ document.getElementById('call-200')?.addEventListener('click', () => {
70
+ dispatchPhoneIslandEvent('phone-island-call-start', { number: '200' })
71
+ })
72
+ ```
73
+
74
+ ### Base64 config token
75
+
76
+ The standalone widget expects a Base64 string in this format:
77
+
78
+ ```text
79
+ <cti_host>:<cti_username>:<cti_token>:<sip_ext>:<sip_secret>:<sip_host>:<sip_port>
80
+ ```
81
+
82
+ Example generation:
83
+
84
+ ```sh
85
+ echo -n "<cti_host>:<cti_username>:<cti_token>:<sip_ext>:<sip_secret>:<sip_host>:<sip_port>" | base64 -w0
86
+ ```
87
+
88
+ ### Full example
89
+
90
+ For a complete browser integration example, including event log, device switching, toast notifications and debug actions, see:
91
+
92
+ 1. `widget-example/index.html`
93
+ 2. `widget-example/index.js`
94
+
16
95
  ## Online Demo
17
96
 
18
97
  The repository root now contains a demo entrypoint for GitHub Pages.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),i=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),r=require("../Button.js"),n=require("./MicrophoneView.js"),a=require("./AudioView.js"),l=require("./ThemeView.js"),s=require("../CustomThemedTooltip.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var o=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var u=require("./VideoInputView.js"),d=require("../../node_modules/react-redux/es/hooks/useSelector.js"),c=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=m(e);exports.SettingsView=function(){var e=d.useSelector((function(e){return e.island})),m=e.settingsView,f=e.previousView,g=o.useTranslation().t,h=c.useDispatch(),b=function(e){var r=e.icon,n=e.label,a=e.onClick;return p.default.createElement("button",{onClick:a,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md"},p.default.createElement("div",{className:"pi-flex pi-items-center pi-gap-3"},p.default.createElement(t.FontAwesomeIcon,{icon:r,className:"pi-w-5 pi-h-5"}),p.default.createElement("span",null,n)),p.default.createElement(t.FontAwesomeIcon,{icon:i.faAngleRight,className:"pi-w-5 pi-h-5"}))},w=p.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},p.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50"},p.default.createElement("h1",{className:"pi-text-lg pi-font-medium pi-leading-7"},g("Settings.Settings")),p.default.createElement(r.Button,{onClick:function(){return h.island.setIslandView("".concat(f||"call"))},variant:"transparentSettings","data-tooltip-id":"tooltip-close-settings","data-tooltip-content":g("Common.Close")||""},p.default.createElement(t.FontAwesomeIcon,{icon:i.faXmark,className:"pi-w-5 pi-h-5"}))),p.default.createElement("div",{className:"pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1"}),p.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2"},p.default.createElement(b,{icon:i.faMicrophone,label:g("Settings.Microphones"),onClick:function(){return h.island.setSettingsView("microphone")}}),p.default.createElement(b,{icon:i.faVolumeHigh,label:g("Settings.Speakers"),onClick:function(){return h.island.setSettingsView("audioInput")}}),p.default.createElement(b,{icon:i.faVideo,label:g("Settings.Cameras"),onClick:function(){return h.island.setSettingsView("videoInput")}}),p.default.createElement(b,{icon:i.faPalette,label:g("Settings.Theme"),onClick:function(){return h.island.setSettingsView("theme")}})));return p.default.createElement(p.default.Fragment,null,function(){switch(m){case"main":default:return w;case"microphone":return p.default.createElement(n.default,null);case"audioInput":return p.default.createElement(a.default,null);case"videoInput":return p.default.createElement(u.default,null);case"theme":return p.default.createElement(l.default,null)}}(),p.default.createElement(s.CustomThemedTooltip,{id:"tooltip-close-settings",place:"bottom"}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),i=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),r=require("../Button.js"),n=require("./MicrophoneView.js"),a=require("./AudioView.js"),l=require("./ThemeView.js"),s=require("../CustomThemedTooltip.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var o=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var u=require("./VideoInputView.js"),d=require("../../node_modules/react-redux/es/hooks/useSelector.js"),c=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=p(e);exports.MicrophoneView=n.default,exports.AudioView=a.default,exports.ThemeView=l.default,exports.VideoInputView=u.default,exports.SettingsView=function(){var e=d.useSelector((function(e){return e.island})),p=e.settingsView,f=e.previousView,g=o.useTranslation().t,h=c.useDispatch(),w=function(e){var r=e.icon,n=e.label,a=e.onClick;return m.default.createElement("button",{onClick:a,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md"},m.default.createElement("div",{className:"pi-flex pi-items-center pi-gap-3"},m.default.createElement(t.FontAwesomeIcon,{icon:r,className:"pi-w-5 pi-h-5"}),m.default.createElement("span",null,n)),m.default.createElement(t.FontAwesomeIcon,{icon:i.faAngleRight,className:"pi-w-5 pi-h-5"}))},x=m.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},m.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50"},m.default.createElement("h1",{className:"pi-text-lg pi-font-medium pi-leading-7"},g("Settings.Settings")),m.default.createElement(r.Button,{onClick:function(){return h.island.setIslandView("".concat(f||"call"))},variant:"transparentSettings","data-tooltip-id":"tooltip-close-settings","data-tooltip-content":g("Common.Close")||""},m.default.createElement(t.FontAwesomeIcon,{icon:i.faXmark,className:"pi-w-5 pi-h-5"}))),m.default.createElement("div",{className:"pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1"}),m.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2"},m.default.createElement(w,{icon:i.faMicrophone,label:g("Settings.Microphones"),onClick:function(){return h.island.setSettingsView("microphone")}}),m.default.createElement(w,{icon:i.faVolumeHigh,label:g("Settings.Speakers"),onClick:function(){return h.island.setSettingsView("audioInput")}}),m.default.createElement(w,{icon:i.faVideo,label:g("Settings.Cameras"),onClick:function(){return h.island.setSettingsView("videoInput")}}),m.default.createElement(w,{icon:i.faPalette,label:g("Settings.Theme"),onClick:function(){return h.island.setSettingsView("theme")}})));return m.default.createElement(m.default.Fragment,null,function(){switch(p){case"main":default:return x;case"microphone":return m.default.createElement(n.default,null);case"audioInput":return m.default.createElement(a.default,null);case"videoInput":return m.default.createElement(u.default,null);case"theme":return m.default.createElement(l.default,null)}}(),m.default.createElement(s.CustomThemedTooltip,{id:"tooltip-close-settings",place:"bottom"}))};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/SettingsView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { RootState, Dispatch } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faAngleRight,\n faMicrophone,\n faPalette,\n faVideo,\n faVolumeHigh,\n faXmark,\n} from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport MicrophoneView from './MicrophoneView'\nimport AudioView from './AudioView'\nimport ThemeView from './ThemeView'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { useTranslation } from 'react-i18next'\nimport VideoInputView from './VideoInputView'\n\nexport const SettingsView: FC<SettingsViewProps> = () => {\n const { settingsView, previousView } = useSelector((state: RootState) => state.island)\n const { t } = useTranslation()\n const dispatch = useDispatch<Dispatch>()\n\n const SettingsMenuItem = ({ icon, label, onClick }) => (\n <button\n onClick={onClick}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md'\n >\n <div className='pi-flex pi-items-center pi-gap-3'>\n <FontAwesomeIcon icon={icon} className='pi-w-5 pi-h-5' />\n <span>{label}</span>\n </div>\n <FontAwesomeIcon icon={faAngleRight} className='pi-w-5 pi-h-5' />\n </button>\n )\n\n // main settings view\n const MainSettings = (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Header */}\n <div className='pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50'>\n <h1 className='pi-text-lg pi-font-medium pi-leading-7'>{t('Settings.Settings')}</h1>\n <Button\n onClick={() => dispatch.island.setIslandView(`${previousView || 'call'}`)}\n variant='transparentSettings'\n data-tooltip-id='tooltip-close-settings'\n data-tooltip-content={t('Common.Close') || ''}\n >\n <FontAwesomeIcon icon={faXmark} className='pi-w-5 pi-h-5' />\n </Button>\n </div>\n\n {/* Divider */}\n <div className='pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1' />\n\n {/* Menu Items */}\n <div className='pi-flex pi-flex-col pi-mt-2'>\n <SettingsMenuItem\n icon={faMicrophone}\n label={t('Settings.Microphones')}\n onClick={() => dispatch.island.setSettingsView('microphone')}\n />\n <SettingsMenuItem\n icon={faVolumeHigh}\n label={t('Settings.Speakers')}\n onClick={() => dispatch.island.setSettingsView('audioInput')}\n />\n <SettingsMenuItem\n icon={faVideo}\n label={t('Settings.Cameras')}\n onClick={() => dispatch.island.setSettingsView('videoInput')}\n />\n <SettingsMenuItem\n icon={faPalette}\n label={t('Settings.Theme')}\n onClick={() => dispatch.island.setSettingsView('theme')}\n />\n </div>\n </div>\n )\n\n return (\n <>\n {(() => {\n switch (settingsView) {\n case 'main':\n return MainSettings\n case 'microphone':\n return <MicrophoneView />\n case 'audioInput':\n return <AudioView />\n case 'videoInput':\n return <VideoInputView />\n case 'theme':\n return <ThemeView />\n default:\n return MainSettings\n }\n })()}\n <CustomThemedTooltip id='tooltip-close-settings' place='bottom' />\n </>\n )\n}\n\nexport interface SettingsViewProps {}\n"],"names":["_a","useSelector","state","island","settingsView","previousView","t","useTranslation","dispatch","useDispatch","SettingsMenuItem","icon","label","onClick","React","className","createElement","FontAwesomeIcon","faAngleRight","MainSettings","Button","setIslandView","concat","variant","faXmark","faMicrophone","setSettingsView","faVolumeHigh","faVideo","faPalette","Fragment","MicrophoneView","AudioView","VideoInputView","ThemeView","CustomThemedTooltip","id","place"],"mappings":"qtCAuBmD,WAC3C,IAAAA,EAAiCC,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMC,MAAM,IAA7EC,iBAAcC,iBACdC,EAAMC,qBACRC,EAAWC,EAAAA,cAEXC,EAAmB,SAACV,GAAE,IAAAW,SAAMC,EAAKZ,EAAAY,MAAEC,EAAOb,EAAAa,QAAO,OACrDC,EAAAA,gCACED,QAASA,EACTE,UAAU,6OAEVD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,oCACbD,EAAC,QAAAE,cAAAC,mBAAgBN,KAAMA,EAAMI,UAAU,kBACvCD,EAAAA,QAAOE,cAAA,OAAA,KAAAJ,IAETE,UAACE,cAAAC,EAAAA,gBAAgB,CAAAN,KAAMO,EAAAA,aAAcH,UAAU,kBATI,EAcjDI,EACJL,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,iCAEbD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,oFACbD,UAAIE,cAAA,KAAA,CAAAD,UAAU,0CAA0CT,EAAE,sBAC1DQ,EAAAA,QAAAE,cAACI,SAAM,CACLP,QAAS,WAAM,OAAAL,EAASL,OAAOkB,cAAc,GAAAC,OAAGjB,GAAgB,QAAjD,EACfkB,QAAQ,sBAAqB,kBACb,yBAAwB,uBAClBjB,EAAE,iBAAmB,IAE3CQ,UAACE,cAAAC,EAAAA,gBAAgB,CAAAN,KAAMa,EAAAA,QAAST,UAAU,oBAK9CD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,mEAGfD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,+BACbD,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMc,eACNb,MAAON,EAAE,wBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMgB,eACNf,MAAON,EAAE,qBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMiB,UACNhB,MAAON,EAAE,oBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,UAAAE,cAACN,EAAgB,CACfC,KAAMkB,EAAAA,UACNjB,MAAON,EAAE,kBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,QAAQ,MAM/D,OACEZ,UAAAE,cAAAF,EAAA,QAAAgB,SAAA,KACG,WACC,OAAQ1B,GACN,IAAK,OAUL,QACE,OAAOe,EATT,IAAK,aACH,OAAOL,UAAAE,cAACe,EAAc,QAAA,MACxB,IAAK,aACH,OAAOjB,UAAAE,cAACgB,EAAS,QAAA,MACnB,IAAK,aACH,OAAOlB,UAAAE,cAACiB,EAAc,QAAA,MACxB,IAAK,QACH,OAAOnB,UAAAE,cAACkB,EAAS,QAAA,MAItB,CAfA,GAgBDpB,UAAAE,cAACmB,EAAAA,oBAAmB,CAACC,GAAG,yBAAyBC,MAAM,WAG7D"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/SettingsView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { RootState, Dispatch } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faAngleRight,\n faMicrophone,\n faPalette,\n faVideo,\n faVolumeHigh,\n faXmark,\n} from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport MicrophoneView from './MicrophoneView'\nimport AudioView from './AudioView'\nimport ThemeView from './ThemeView'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { useTranslation } from 'react-i18next'\nimport VideoInputView from './VideoInputView'\n\nexport const SettingsView: FC<SettingsViewProps> = () => {\n const { settingsView, previousView } = useSelector((state: RootState) => state.island)\n const { t } = useTranslation()\n const dispatch = useDispatch<Dispatch>()\n\n const SettingsMenuItem = ({ icon, label, onClick }) => (\n <button\n onClick={onClick}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md'\n >\n <div className='pi-flex pi-items-center pi-gap-3'>\n <FontAwesomeIcon icon={icon} className='pi-w-5 pi-h-5' />\n <span>{label}</span>\n </div>\n <FontAwesomeIcon icon={faAngleRight} className='pi-w-5 pi-h-5' />\n </button>\n )\n\n // main settings view\n const MainSettings = (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Header */}\n <div className='pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50'>\n <h1 className='pi-text-lg pi-font-medium pi-leading-7'>{t('Settings.Settings')}</h1>\n <Button\n onClick={() => dispatch.island.setIslandView(`${previousView || 'call'}`)}\n variant='transparentSettings'\n data-tooltip-id='tooltip-close-settings'\n data-tooltip-content={t('Common.Close') || ''}\n >\n <FontAwesomeIcon icon={faXmark} className='pi-w-5 pi-h-5' />\n </Button>\n </div>\n\n {/* Divider */}\n <div className='pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1' />\n\n {/* Menu Items */}\n <div className='pi-flex pi-flex-col pi-mt-2'>\n <SettingsMenuItem\n icon={faMicrophone}\n label={t('Settings.Microphones')}\n onClick={() => dispatch.island.setSettingsView('microphone')}\n />\n <SettingsMenuItem\n icon={faVolumeHigh}\n label={t('Settings.Speakers')}\n onClick={() => dispatch.island.setSettingsView('audioInput')}\n />\n <SettingsMenuItem\n icon={faVideo}\n label={t('Settings.Cameras')}\n onClick={() => dispatch.island.setSettingsView('videoInput')}\n />\n <SettingsMenuItem\n icon={faPalette}\n label={t('Settings.Theme')}\n onClick={() => dispatch.island.setSettingsView('theme')}\n />\n </div>\n </div>\n )\n\n return (\n <>\n {(() => {\n switch (settingsView) {\n case 'main':\n return MainSettings\n case 'microphone':\n return <MicrophoneView />\n case 'audioInput':\n return <AudioView />\n case 'videoInput':\n return <VideoInputView />\n case 'theme':\n return <ThemeView />\n default:\n return MainSettings\n }\n })()}\n <CustomThemedTooltip id='tooltip-close-settings' place='bottom' />\n </>\n )\n}\n\nexport interface SettingsViewProps {}\n\nexport { default as AudioView } from './AudioView'\nexport { default as MicrophoneView } from './MicrophoneView'\nexport { default as ThemeView } from './ThemeView'\nexport { default as VideoInputView } from './VideoInputView'\n"],"names":["_a","useSelector","state","island","settingsView","previousView","t","useTranslation","dispatch","useDispatch","SettingsMenuItem","icon","label","onClick","React","className","createElement","FontAwesomeIcon","faAngleRight","MainSettings","Button","setIslandView","concat","variant","faXmark","faMicrophone","setSettingsView","faVolumeHigh","faVideo","faPalette","Fragment","MicrophoneView","AudioView","VideoInputView","ThemeView","CustomThemedTooltip","id","place"],"mappings":"+0CAuBmD,WAC3C,IAAAA,EAAiCC,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMC,MAAM,IAA7EC,iBAAcC,iBACdC,EAAMC,qBACRC,EAAWC,EAAAA,cAEXC,EAAmB,SAACV,GAAE,IAAAW,SAAMC,EAAKZ,EAAAY,MAAEC,EAAOb,EAAAa,QAAO,OACrDC,EAAAA,gCACED,QAASA,EACTE,UAAU,6OAEVD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,oCACbD,EAAC,QAAAE,cAAAC,mBAAgBN,KAAMA,EAAMI,UAAU,kBACvCD,EAAAA,QAAOE,cAAA,OAAA,KAAAJ,IAETE,UAACE,cAAAC,EAAAA,gBAAgB,CAAAN,KAAMO,EAAAA,aAAcH,UAAU,kBATI,EAcjDI,EACJL,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,iCAEbD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,oFACbD,UAAIE,cAAA,KAAA,CAAAD,UAAU,0CAA0CT,EAAE,sBAC1DQ,EAAAA,QAAAE,cAACI,SAAM,CACLP,QAAS,WAAM,OAAAL,EAASL,OAAOkB,cAAc,GAAAC,OAAGjB,GAAgB,QAAjD,EACfkB,QAAQ,sBAAqB,kBACb,yBAAwB,uBAClBjB,EAAE,iBAAmB,IAE3CQ,UAACE,cAAAC,EAAAA,gBAAgB,CAAAN,KAAMa,EAAAA,QAAST,UAAU,oBAK9CD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,mEAGfD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,+BACbD,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMc,eACNb,MAAON,EAAE,wBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMgB,eACNf,MAAON,EAAE,qBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMiB,UACNhB,MAAON,EAAE,oBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,UAAAE,cAACN,EAAgB,CACfC,KAAMkB,EAAAA,UACNjB,MAAON,EAAE,kBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,QAAQ,MAM/D,OACEZ,UAAAE,cAAAF,EAAA,QAAAgB,SAAA,KACG,WACC,OAAQ1B,GACN,IAAK,OAUL,QACE,OAAOe,EATT,IAAK,aACH,OAAOL,UAAAE,cAACe,EAAc,QAAA,MACxB,IAAK,aACH,OAAOjB,UAAAE,cAACgB,EAAS,QAAA,MACnB,IAAK,aACH,OAAOlB,UAAAE,cAACiB,EAAc,QAAA,MACxB,IAAK,QACH,OAAOnB,UAAAE,cAACkB,EAAS,QAAA,MAItB,CAfA,GAgBDpB,UAAAE,cAACmB,EAAAA,oBAAmB,CAACC,GAAG,yBAAyBC,MAAM,WAG7D"}
@@ -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"),c=require("../static/busy_ringtone.js"),u=require("../utils/customHooks/useEventListener.js"),a=require("../utils/genericFunctions/eventDispatch.js"),s=require("../utils/genericFunctions/withTimeout.js"),l=require("../store/index.js");require("../lib/webrtc/janus.js"),require("../node_modules/webrtc-adapter/src/js/adapter_core.js");var d=require("../lib/devices/devices.js"),p=require("../lib/user/default_device.js"),v=require("../utils/genericFunctions/isEmpty.js"),m=require("../utils/streaming/getStreamingSourceId.js"),g=require("../events/SocketEvents.js"),f=require("../utils/genericFunctions/timestamp.js"),h=require("../lib/user/extensions.js"),b=require("../utils/streaming/isFromStreaming.js"),S=require("../lib/phone/queue.js"),k=require("../lib/phone/trunk.js"),y=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 q=w.hostName,N=w.username,_=w.authToken,T=w.reload,I=w.reloadedCallback,D=w.children,U=w.uaType,j=y.useDispatch(),x=n.useRef(),E=n.useRef(),P=n.useRef(!1),O=n.useRef(0),F=n.useRef(null);u.useEventListener("phone-island-start-transcription",(function(e){if(E.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.uniqueid)||null;if(!n)return;E.current.emit("start_transcription",{linkedid:n,uniqueid:(null==e?void 0:e.uniqueid)||n})}})),u.useEventListener("phone-island-stop-transcription",(function(e){if(E.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.uniqueid)||null;if(!n)return;E.current.emit("stop_transcription",{linkedid:n,uniqueid:(null==e?void 0:e.uniqueid)||n})}})),u.useEventListener("phone-island-current-user-queue-call-waiting",(function(e){j.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})})),u.useEventListener("phone-island-current-user-queue-call-connected",(function(e){j.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,u=function(e){if(e.counterpartNum&&b.isFromStreaming(e.counterpartNum)){j.island.setIsFromStreaming(!0),j.currentCall.updateCurrentCall({streamingSourceNumber:e.counterpartNum});var n=m.getStreamingSourceId(e.counterpartNum);n&&o.subscribe({id:n}).catch((function(e){return console.error("Error subscribing to streaming source:",e)}))}},y=function(e){var n,t,r,i;if(e){var o=function(e){return S.getCurrentCallQueueContext(e,l.store.getState().queue)}(e),c=function(e,n){var t=l.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(c.queueId||c.queueName||c.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))&&(g.dispatchCurrentUserQueueCallConnected(c),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))&&(g.dispatchCurrentUserQueueCallWaiting(c),F.current={conversationId:e.id,phase:"waiting"});else F.current=null}else F.current=null},w=function(n,t){var r=l.store.getState().currentCall,c=r.transferring,s=r.transferSwitching,d=r.transferCalls,v=l.store.getState().island.view;if(Object.keys(t).length>0){if(n.status){var m=l.store.getState().users.extensions,g=l.store.getState().currentUser.default_device,b=l.store.getState().currentUser,S=b.endpoints,w=b.username,C=l.store.getState().currentCall;C.incoming,C.outgoing;var q=function(){if(!m||!w)return!1;var e=Object.values(m).filter((function(e){return(null==e?void 0:e.username)===w}));return null==e?void 0:e.some((function(e){var n=null==S?void 0:S.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=l.store.getState().currentCall,t=n.accepted,r=n.ownerExtension;return t&&!!r&&!!e&&r!==e}(t.owner))break;y(t),u(t),("mobile"===U&&q()||"desktop"===U&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!q()||!q()&&"physical"===(null==g?void 0:g.type)))&&(j.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}),l.store.dispatch.island.setIslandView("call")),P.current||(P.current=!0,o.getCurrentUserInfo().then((function(n){n&&(j.currentUser.updateCurrentUser(n),a.eventDispatch("phone-island-user-informations-update",e.__assign({},n)),n.settings&&n.settings.open_param_url?j.paramUrl.setOpenParamUrlType(n.settings.open_param_url):j.paramUrl.setOpenParamUrlType("never"))})).catch((function(e){console.error("Error getting current user info:",e)})).finally((function(){setTimeout((function(){P.current=!1}),100)})));var N=l.store.getState().paramUrl.openParamUrlType,_=l.store.getState().island.urlOpened;if("ringing"===N&&!_){var T=k.isFromTrunk(t.counterpartNum);l.store.dispatch.paramUrl.setThroughTrunk(T),l.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:T,direction:t.direction,connected:t.connected})}break;case"busy":if(y(t),u(t),"mobile"===U&&q()||"desktop"===U&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!q()||!q()&&"physical"===(null==g?void 0:g.type))){if(t&&t.connected)j.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)||{}}),j.currentCall.checkAcceptedUpdate({acceptedSocket:!0}),j.currentCall.addTransferCalls({type:"transferred",displayName:i.getDisplayName(t),number:"".concat(t.counterpartNum),startTime:"".concat(f.getTimestampInSeconds())}),l.store.getState().island.isFromStreaming&&"out"===t.direction&&setTimeout((function(){j.island.setIslandView("streamingAnswer")}),200),p.isPhysical()&&function(e){j.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),a.eventDispatch("phone-island-call-answered",{}),l.store.dispatch.player.stopAudioPlayer(),l.store.dispatch.player.setAudioPlayerLoop(!1)}(t),"call"===v&&c&&j.currentCall.updateCurrentCall({transferring:!1});if(d.length>1)j.currentCall.deleteTransferCalls();else if(t&&!t.connected){if(c&&!s){var I=d.find((function(e){return e.number===t.counterpartNum}));!t.connected&&I&&(j.currentCall.updateCurrentCall({transferring:!1}),a.eventDispatch("phone-island-call-transfer-failed",{}),j.currentCall.updateTransferSwitching(!1))}"REC"===(null==t?void 0:t.counterpartName)&&j.physicalRecorder.setRecordingTempVariable(!0)}t&&!t.connected&&"out"===t.direction&&j.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":y(t);var D=t.counterpartName,x=t.counterpartNum,E=t.startTime;c&&x&&D&&"<unknown>"!==D&&(j.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:x,startTime:"".concat(f.getTimestampInSeconds())}),j.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:x,startTime:"".concat(E/1e3),conversationId:t.id}),j.island.setIslandView("call"));break;case"busy_ringing":a.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&h.userTotallyFree()&&(y(null),j.player.stopAudioPlayer(),j.currentCall.reset(),j.physicalRecorder.setRecordingTempVariable(!1),j.island.setIsFromStreaming(!1))};return n={upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3},"new"===r.getApiMode(N)&&(n.path="/api/ws"),E.current=t.io("https://"+q,n),j.websocket.update({socket:E.current}),E.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(E.current.id)),a.eventDispatch("phone-island-socket-connected",{})})),E.current.on("disconnect",(function(e){console.debug("Socket disconnect - reason: ".concat(e)),x.current&&(clearInterval(x.current),x.current=null),e.includes("server disconnect")?a.eventDispatch("phone-island-server-disconnected",{}):a.eventDispatch("phone-island-socket-disconnected",{})})),E.current.io.on("error",(function(e){console.debug("Socket error: ",e)})),E.current.on("connect_error",(function(e){console.debug("Socket connect_error: ",e)})),E.current.io.on("reconnect",(function(e){O.current=0,a.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(E.current.id,")"))})),E.current.io.on("reconnect_attempt",(function(e){console.debug("Socket reconnect_attempt ".concat(e))})),E.current.io.on("reconnect_error",(function(e){console.debug("Socket reconnect_error: ",e)})),E.current.io.on("reconnect_failed",(function(){console.debug("Socket reconnect_failed")})),E.current.on("connect",(function(){console.debug("Socket on: "+q+" is connected!"),E.current.emit("login",{accessKeyId:"".concat(N),token:_,uaType:U})})),E.current.on("authe_ok",(function(){console.debug("Socket authentication success!"),a.eventDispatch("phone-island-socket-authorized",{}),x.current&&clearInterval(x.current),x.current=setInterval((function(){E.current.volatile.emit("ping",s.withTimeout((function(){O.current=0,setTimeout((function(){j.alerts.removeAlert("socket_down"),a.eventDispatch("phone-island-alert-removed",{type:"socket_down"}),a.eventDispatch("phone-island-socket-disconnected-popup-close",{})}),0)}),(function(){O.current++,console.debug("Socket ping timeout (".concat(O.current,"/").concat(3,"), connected: ").concat(E.current.connected)),setTimeout((function(){var e,n,t=E.current.connected&&O.current>=3;if(!E.current.connected||t){var r=l.store.getState().webrtc.sipcall,i=l.store.getState().currentCall,o=i.accepted,c=i.outgoing,u=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||c)&&("connected"===u||"completed"===u))return void console.debug("Socket unreachable but active call with ICE connected - skipping socket_down alert",{iceState:u,accepted:o,outgoing:c,isStaleConnection:t,timestamp:(new Date).toISOString()});t&&(console.warn("Stale socket connection detected - forcing reconnection"),E.current.disconnect()),j.alerts.setAlert("socket_down"),a.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}}),0)}),5e3))}),5e3)})),E.current.on("userMainPresenceUpdate",(function(n){l.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),g.dispatchMainPresence(n)})),E.current.on("extenHangup",(function(e){var n,t,r=l.store.getState().currentUser,i=r.endpoints,o=r.username,u=l.store.getState().conference,s=u.isActive,d=u.conferenceStartedFrom,p=l.store.getState().island,v=p.view,m=p.previewCallFromMobileOrNethlink,g=((null==i?void 0:i.extension)||[]).find((function(n){return n.id===e.callerNum})),f=null==g?void 0:g.type,h=l.store.getState().currentUser.conversations,b=void 0,S=!1;if(e.callerNum&&h[e.callerNum]){var k=h[e.callerNum],y=Object.keys(k);if(y.length>0){for(var w=null,C=0,q=y;C<q.length;C++){var N=q[C],_=null==k?void 0:k[N];if(_)if(w){var T=!!w.connected,I=!!_.connected;if(!I||T){var D=null!==(n=w.startTime)&&void 0!==n?n:0,U=null!==(t=_.startTime)&&void 0!==t?t:0;I===T&&U>D&&(w=_)}else w=_}else w=_}b=null==w?void 0:w.linkedId,S=(null==w?void 0:w.connected)||!1}}if(b&&S&&a.eventDispatch("phone-island-summary-call-check",{linkedid:b}),"normal_clearing"===e.cause&&("physical"===f||"mobile"===f)||"normal_clearing"===e.cause&&("webrtc"===f||"nethlink"===f)&&m||"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(){l.store.dispatch.island.toggleAvoidToShow(!1),l.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!1)}),500),s&&d!==o&&l.store.dispatch.conference.resetConference()):"normal_circuit_congestion"===(null==e?void 0:e.cause)&&s&&d===o?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"!==f&&"nethlink"!==f||!s||d===o||l.store.dispatch.conference.resetConference(),("normal_clearing"===e.cause&&("webrtc"===f||"nethlink"===f)||"call_rejected"===(null==e?void 0:e.cause))&&s&&d===o){var j=l.store.getState().conference,x=j.usersList,E=j.pendingUsers,P=x&&Object.keys(x).length>0,O=E&&Object.keys(E).length>0;P||O?setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800):l.store.dispatch.conference.resetConference()}if("interworking"===(null==e?void 0:e.cause)&&s&&d===o&&"waitingConference"!==v&&setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),"user_busy"===(null==e?void 0:e.cause)){var F=l.store.getState().currentUser,A=F.endpoints,V=F.username,R=((null==A?void 0:A.extension)||[]).map((function(e){return e.id})),M=l.store.getState().currentCall,L=M.incoming,Q=M.accepted,W=M.transferring,B=l.store.getState().conference,H=B.isActive,z=B.conferenceStartedFrom;!(L&&e.callerNum&&R.includes(e.callerNum))&&(!Q||H||W)&&(l.store.dispatch.island.setOperatorBusyActive({callerNumber:e.callerNum||"Unknown"}),setTimeout((function(){l.store.dispatch.player.stopAudioPlayer()}),4e3),setTimeout((function(){l.store.dispatch.player.updateStartAudioPlayer({src:c.default,loop:!0}),l.store.dispatch.island.setIslandView("operatorBusy")}),600),H&&z===V&&setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var J=l.store.getState().conference,K=J.isActive,G=J.conferenceStartedFrom,X=l.store.getState().currentUser.username;if(K&&G===X){var Y=l.store.getState().conference;x=Y.usersList,E=Y.pendingUsers,P=x&&Object.keys(x).length>0,O=E&&Object.keys(E).length>0,P||O?(setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),E&&E[e.callerNum]&&l.store.dispatch.conference.removePendingUser(e.callerNum)):l.store.dispatch.conference.resetConference()}}})),E.current.on("extenConnected",(function(e){var n=l.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)&&(l.store.dispatch.island.toggleAvoidToShow(!0),l.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0),a.eventDispatch("phone-island-call-answered",{extensionType:o}))})),E.current.on("extenUpdate",(function(e){var n,t;j.users.updateExtension(e);var r=l.store.getState().users.extensions,i={},o=l.store.getState().currentUser;for(var c in r){var u=r[c].username,a=r[c].exten;i[u]||(i[u]=[]),i[u].push(a)}var s=i[e.username],d=e.conversations[Object.keys(e.conversations)[0]]||{},p=!1;if((null==e?void 0:e.username)===N&&!v.isEmpty(d)&&(null==d?void 0:d.owner)){var m=null===(t=null===(n=null==o?void 0:o.endpoints)||void 0===n?void 0:n.extension)||void 0===t?void 0:t.find((function(e){return e.id===d.owner}));m&&"mobile"===m.type&&(p=!0)}if(g.dispatchExtensions(e),v.isEmpty(d)){var f=null==s?void 0:s.some((function(e){var n,t=null===(n=r[e])||void 0===n?void 0:n.conversations;return!v.isEmpty(t)}));f||g.dispatchConversations(e)}else p||g.dispatchConversations(e);p&&"busy"===(null==e?void 0:e.status)&&(null==e?void 0:e.username)===N&&(l.store.dispatch.island.toggleAvoidToShow(!0),l.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0)),e.username===N&&(w(e,d),j.currentUser.updateConversations(e))})),E.current.on("queueUpdate",(function(e){j.queue.updateQueue(e);var n,t,r,i=(n=l.store.getState().currentUser.conversations,t=l.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&&y(i),g.dispatchQueueUpdate(e)})),E.current.on("queueMemberUpdate",(function(e){j.queue.updateQueueMember(e),g.dispatchQueueMemberUpdate(e)})),E.current.on("takeOver",(function(){g.dispatchAlreadyLogin()})),E.current.on("serverReloaded",(function(){g.dispatchServerReload()})),E.current.on("parkingUpdate",(function(e){g.dispatchParkingUpdate(e)})),E.current.on("actionNethLink",(function(e,n){g.dispatchUrlCall(e,n)})),E.current.on("satellite/summary",(function(e){(null==e?void 0:e.uniqueid)&&a.eventDispatch("phone-island-summary-ready",{linkedid:null==e?void 0:e.uniqueid,display_name:null==e?void 0:e.display_name,display_number:null==e?void 0:e.display_number})})),E.current.on("message",(function(e){switch(e.message){case"screenSharingStart":j.island.toggleSideViewVisible(!1),j.island.toggleTranscriptionViewVisible(!1),j.island.setIslandView("video"),j.screenShare.update({isJoiningScreenShare:!0,room:e.roomId});break;case"screenSharingStop":j.island.toggleSideViewVisible(!1),j.island.toggleTranscriptionViewVisible(!1),j.island.setIslandView("video"),j.screenShare.update({isLeavingScreenShare:!0});break;default:console.warn("Socket: unknown message type ",e.message)}})),E.current.on("updateDefaultDevice",(function(n){g.dispatchDefaultDeviceUpdate(n);var t=l.store.getState().users.extensions,r=l.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],c=r.extension.find((function(e){return e.id===o.exten}));c&&(o=e.__assign(e.__assign({},o),{type:c.type})),l.store.dispatch.currentUser.updateCurrentDefaultDevice(o),d.checkMediaPermissions()}}})),E.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=l.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}))})),l.store.dispatch.conference.updateConferenceUsersList(o),l.store.dispatch.conference.updateConferenceId(t)}})),E.current.on("confBridgeEnd",(function(e){e&&(null==e?void 0:e.id)&&(l.store.dispatch.conference.resetConference(),a.eventDispatch("phone-island-conference-finished",{}))})),E.current.on("callWebrtc",(function(e){a.eventDispatch("phone-island-call-start",{number:e})})),E.current.on("newVoiceMessageCounter",(function(e){a.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})})),E.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){l.store.getState().island.isFromStreaming;var i=l.store.getState().currentCall.streamingSourceNumber;m.getStreamingSourceId(i),j.streaming.updateSourceImage({source:t,image:r})}}})),E.current.on("satellite/transcription",(function(e){a.eventDispatch("phone-island-conversation-transcription",e)})),function(){clearInterval(x.current),E.current.close()}}),[q,N,_,U,j]),n.useEffect((function(){var e;if(T){console.info("Socket reload requested");var n=l.store.getState().alerts.data,t=l.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&&l.store.dispatch.island.setForceReload(!1),x.current&&(clearInterval(x.current),x.current=null),setTimeout((function(){E.current.disconnect(),E.current.connect(),I()}),100)):(console.info("Socket already connected (no alert active), skipping reconnection"),I())}}),[T]),C.default.createElement(C.default.Fragment,null,D)};
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"),c=require("../static/busy_ringtone.js"),u=require("../utils/customHooks/useEventListener.js"),a=require("../utils/genericFunctions/eventDispatch.js"),s=require("../utils/genericFunctions/withTimeout.js"),l=require("../store/index.js");require("../lib/webrtc/janus.js"),require("../node_modules/webrtc-adapter/src/js/adapter_core.js");var d=require("../lib/devices/devices.js"),p=require("../lib/user/default_device.js"),v=require("../utils/genericFunctions/isEmpty.js"),m=require("../utils/streaming/getStreamingSourceId.js"),g=require("../events/SocketEvents.js"),f=require("../utils/genericFunctions/timestamp.js"),h=require("../lib/user/extensions.js"),b=require("../utils/streaming/isFromStreaming.js"),S=require("../lib/phone/queue.js"),k=require("../lib/phone/trunk.js"),y=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 q=w.hostName,N=w.username,_=w.authToken,T=w.reload,I=w.reloadedCallback,U=w.children,D=w.uaType,j=y.useDispatch(),x=n.useRef(),E=n.useRef(),P=n.useRef(!1),O=n.useRef(0),F=n.useRef(null);u.useEventListener("phone-island-start-transcription",(function(e){if(E.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.uniqueid)||null;if(!n)return;E.current.emit("start_transcription",{linkedid:n,uniqueid:(null==e?void 0:e.uniqueid)||n})}})),u.useEventListener("phone-island-stop-transcription",(function(e){if(E.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.uniqueid)||null;if(!n)return;E.current.emit("stop_transcription",{linkedid:n,uniqueid:(null==e?void 0:e.uniqueid)||n})}})),u.useEventListener("phone-island-current-user-queue-call-waiting",(function(e){j.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})})),u.useEventListener("phone-island-current-user-queue-call-connected",(function(e){j.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,u=function(e){if(e.counterpartNum&&b.isFromStreaming(e.counterpartNum)){j.island.setIsFromStreaming(!0),j.currentCall.updateCurrentCall({streamingSourceNumber:e.counterpartNum});var n=m.getStreamingSourceId(e.counterpartNum);n&&o.subscribe({id:n}).catch((function(e){return console.error("Error subscribing to streaming source:",e)}))}},y=function(e){var n,t,r,i;if(e){var o=function(e){return S.getCurrentCallQueueContext(e,l.store.getState().queue)}(e),c=function(e,n){var t=l.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(c.queueId||c.queueName||c.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))&&(g.dispatchCurrentUserQueueCallConnected(c),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))&&(g.dispatchCurrentUserQueueCallWaiting(c),F.current={conversationId:e.id,phase:"waiting"});else F.current=null}else F.current=null},w=function(n,t){var r=l.store.getState().currentCall,c=r.transferring,s=r.transferSwitching,d=r.transferCalls,v=l.store.getState().island.view;if(Object.keys(t).length>0){if(n.status){var m=l.store.getState().users.extensions,g=l.store.getState().currentUser.default_device,b=l.store.getState().currentUser,S=b.endpoints,w=b.username,C=l.store.getState().currentCall;C.incoming,C.outgoing;var q=function(){if(!m||!w)return!1;var e=Object.values(m).filter((function(e){return(null==e?void 0:e.username)===w}));return null==e?void 0:e.some((function(e){var n=null==S?void 0:S.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=l.store.getState().currentCall,t=n.accepted,r=n.ownerExtension;return t&&!!r&&!!e&&r!==e}(t.owner))break;y(t),u(t),("mobile"===D&&q()||"desktop"===D&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!q()||!q()&&"physical"===(null==g?void 0:g.type)))&&(j.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}),l.store.dispatch.island.setIslandView("call")),P.current||(P.current=!0,o.getCurrentUserInfo().then((function(n){n&&(j.currentUser.updateCurrentUser(n),a.eventDispatch("phone-island-user-informations-update",e.__assign({},n)),n.settings&&n.settings.open_param_url?j.paramUrl.setOpenParamUrlType(n.settings.open_param_url):j.paramUrl.setOpenParamUrlType("never"))})).catch((function(e){console.error("Error getting current user info:",e)})).finally((function(){setTimeout((function(){P.current=!1}),100)})));var N=l.store.getState().paramUrl.openParamUrlType,_=l.store.getState().island.urlOpened;if("ringing"===N&&!_){var T=k.isFromTrunk(t.counterpartNum);l.store.dispatch.paramUrl.setThroughTrunk(T),l.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:T,direction:t.direction,connected:t.connected})}break;case"busy":if(y(t),u(t),"mobile"===D&&q()||"desktop"===D&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!q()||!q()&&"physical"===(null==g?void 0:g.type))){if(t&&t.connected)j.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)||{}}),j.currentCall.checkAcceptedUpdate({acceptedSocket:!0}),j.currentCall.addTransferCalls({type:"transferred",displayName:i.getDisplayName(t),number:"".concat(t.counterpartNum),startTime:"".concat(f.getTimestampInSeconds())}),l.store.getState().island.isFromStreaming&&"out"===t.direction&&setTimeout((function(){j.island.setIslandView("streamingAnswer")}),200),p.isPhysical()&&function(e){j.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),a.eventDispatch("phone-island-call-answered",{}),l.store.dispatch.player.stopAudioPlayer(),l.store.dispatch.player.setAudioPlayerLoop(!1)}(t),"call"===v&&c&&j.currentCall.updateCurrentCall({transferring:!1});if(d.length>1)j.currentCall.deleteTransferCalls();else if(t&&!t.connected){if(c&&!s){var I=d.find((function(e){return e.number===t.counterpartNum}));!t.connected&&I&&(j.currentCall.updateCurrentCall({transferring:!1}),a.eventDispatch("phone-island-call-transfer-failed",{}),j.currentCall.updateTransferSwitching(!1))}"REC"===(null==t?void 0:t.counterpartName)&&j.physicalRecorder.setRecordingTempVariable(!0)}t&&!t.connected&&"out"===t.direction&&j.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":y(t);var U=t.counterpartName,x=t.counterpartNum,E=t.startTime;c&&x&&U&&"<unknown>"!==U&&(j.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:x,startTime:"".concat(f.getTimestampInSeconds())}),j.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:x,startTime:"".concat(E/1e3),conversationId:t.id}),j.island.setIslandView("call"));break;case"busy_ringing":a.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&h.userTotallyFree()&&(y(null),j.player.stopAudioPlayer(),j.currentCall.reset(),j.physicalRecorder.setRecordingTempVariable(!1),j.island.setIsFromStreaming(!1))};return n={upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3},"new"===r.getApiMode(N)&&(n.path="/api/ws"),E.current=t.io("https://"+q,n),j.websocket.update({socket:E.current}),E.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(E.current.id)),a.eventDispatch("phone-island-socket-connected",{})})),E.current.on("disconnect",(function(e){console.debug("Socket disconnect - reason: ".concat(e)),x.current&&(clearInterval(x.current),x.current=null),e.includes("server disconnect")?a.eventDispatch("phone-island-server-disconnected",{}):a.eventDispatch("phone-island-socket-disconnected",{})})),E.current.io.on("error",(function(e){console.debug("Socket error: ",e)})),E.current.on("connect_error",(function(e){console.debug("Socket connect_error: ",e)})),E.current.io.on("reconnect",(function(e){O.current=0,a.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(E.current.id,")"))})),E.current.io.on("reconnect_attempt",(function(e){console.debug("Socket reconnect_attempt ".concat(e))})),E.current.io.on("reconnect_error",(function(e){console.debug("Socket reconnect_error: ",e)})),E.current.io.on("reconnect_failed",(function(){console.debug("Socket reconnect_failed")})),E.current.on("connect",(function(){console.debug("Socket on: "+q+" is connected!"),E.current.emit("login",{accessKeyId:"".concat(N),token:_,uaType:D})})),E.current.on("authe_ok",(function(){console.debug("Socket authentication success!"),a.eventDispatch("phone-island-socket-authorized",{}),x.current&&clearInterval(x.current),x.current=setInterval((function(){E.current.volatile.emit("ping",s.withTimeout((function(){O.current=0,setTimeout((function(){j.alerts.removeAlert("socket_down"),a.eventDispatch("phone-island-alert-removed",{type:"socket_down"}),a.eventDispatch("phone-island-socket-disconnected-popup-close",{})}),0)}),(function(){O.current++,console.debug("Socket ping timeout (".concat(O.current,"/").concat(3,"), connected: ").concat(E.current.connected)),setTimeout((function(){var e,n,t=E.current.connected&&O.current>=3;if(!E.current.connected||t){var r=l.store.getState().webrtc.sipcall,i=l.store.getState().currentCall,o=i.accepted,c=i.outgoing,u=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||c)&&("connected"===u||"completed"===u))return void console.debug("Socket unreachable but active call with ICE connected - skipping socket_down alert",{iceState:u,accepted:o,outgoing:c,isStaleConnection:t,timestamp:(new Date).toISOString()});t&&(console.warn("Stale socket connection detected - forcing reconnection"),E.current.disconnect()),j.alerts.setAlert("socket_down"),a.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}}),0)}),5e3))}),5e3)})),E.current.on("userMainPresenceUpdate",(function(n){l.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),g.dispatchMainPresence(n)})),E.current.on("extenHangup",(function(e){var n,t,r=l.store.getState().currentUser,i=r.endpoints,o=r.username,u=l.store.getState().conference,s=u.isActive,d=u.conferenceStartedFrom,p=l.store.getState().island,v=p.view,m=p.previewCallFromMobileOrNethlink,g=((null==i?void 0:i.extension)||[]).find((function(n){return n.id===e.callerNum})),f=null==g?void 0:g.type,h=l.store.getState().currentUser.conversations,b=void 0,S=!1;if(e.callerNum&&h[e.callerNum]){var k=h[e.callerNum],y=Object.keys(k);if(y.length>0){for(var w=null,C=0,q=y;C<q.length;C++){var N=q[C],_=null==k?void 0:k[N];if(_)if(w){var T=!!w.connected,I=!!_.connected;if(!I||T){var U=null!==(n=w.startTime)&&void 0!==n?n:0,D=null!==(t=_.startTime)&&void 0!==t?t:0;I===T&&D>U&&(w=_)}else w=_}else w=_}b=null==w?void 0:w.linkedId,S=(null==w?void 0:w.connected)||!1}}if(b&&S&&a.eventDispatch("phone-island-summary-call-check",{linkedid:b}),"normal_clearing"===e.cause&&("physical"===f||"mobile"===f)||"normal_clearing"===e.cause&&("webrtc"===f||"nethlink"===f)&&m||"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(){l.store.dispatch.island.toggleAvoidToShow(!1),l.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!1)}),500),s&&d!==o&&l.store.dispatch.conference.resetConference()):"normal_circuit_congestion"===(null==e?void 0:e.cause)&&s&&d===o?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"!==f&&"nethlink"!==f||!s||d===o||l.store.dispatch.conference.resetConference(),("normal_clearing"===e.cause&&("webrtc"===f||"nethlink"===f)||"call_rejected"===(null==e?void 0:e.cause))&&s&&d===o){var j=l.store.getState().conference,x=j.usersList,E=j.pendingUsers,P=x&&Object.keys(x).length>0,O=E&&Object.keys(E).length>0;P||O?setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800):l.store.dispatch.conference.resetConference()}if("interworking"===(null==e?void 0:e.cause)&&s&&d===o&&"waitingConference"!==v&&setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),"user_busy"===(null==e?void 0:e.cause)){var F=l.store.getState().currentUser,V=F.endpoints,A=F.username,R=((null==V?void 0:V.extension)||[]).map((function(e){return e.id})),M=l.store.getState().currentCall,L=M.incoming,Q=M.accepted,W=M.transferring,B=l.store.getState().conference,H=B.isActive,z=B.conferenceStartedFrom;!(L&&e.callerNum&&R.includes(e.callerNum))&&(!Q||H||W)&&(l.store.dispatch.island.setOperatorBusyActive({callerNumber:e.callerNum||"Unknown"}),setTimeout((function(){l.store.dispatch.player.stopAudioPlayer()}),4e3),setTimeout((function(){l.store.dispatch.player.updateStartAudioPlayer({src:c.default,loop:!0}),l.store.dispatch.island.setIslandView("operatorBusy")}),600),H&&z===A&&setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var J=l.store.getState().conference,K=J.isActive,G=J.conferenceStartedFrom,X=l.store.getState().currentUser.username;if(K&&G===X){var Y=l.store.getState().conference;x=Y.usersList,E=Y.pendingUsers,P=x&&Object.keys(x).length>0,O=E&&Object.keys(E).length>0,P||O?(setTimeout((function(){a.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),E&&E[e.callerNum]&&l.store.dispatch.conference.removePendingUser(e.callerNum)):l.store.dispatch.conference.resetConference()}}})),E.current.on("extenConnected",(function(e){var n=l.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)&&(l.store.dispatch.island.toggleAvoidToShow(!0),l.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0),a.eventDispatch("phone-island-call-answered",{extensionType:o}))})),E.current.on("extenUpdate",(function(e){var n,t;j.users.updateExtension(e);var r=l.store.getState().users.extensions,i={},o=l.store.getState().currentUser;for(var c in r){var u=r[c].username,a=r[c].exten;i[u]||(i[u]=[]),i[u].push(a)}var s=i[e.username],d=e.conversations[Object.keys(e.conversations)[0]]||{},p=!1;if((null==e?void 0:e.username)===N&&!v.isEmpty(d)&&(null==d?void 0:d.owner)){var m=null===(t=null===(n=null==o?void 0:o.endpoints)||void 0===n?void 0:n.extension)||void 0===t?void 0:t.find((function(e){return e.id===d.owner}));m&&"mobile"===m.type&&(p=!0)}if(g.dispatchExtensions(e),v.isEmpty(d)){var f=null==s?void 0:s.some((function(e){var n,t=null===(n=r[e])||void 0===n?void 0:n.conversations;return!v.isEmpty(t)}));f||g.dispatchConversations(e)}else p||g.dispatchConversations(e);p&&"busy"===(null==e?void 0:e.status)&&(null==e?void 0:e.username)===N&&(l.store.dispatch.island.toggleAvoidToShow(!0),l.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0)),e.username===N&&(w(e,d),j.currentUser.updateConversations(e))})),E.current.on("queueUpdate",(function(e){j.queue.updateQueue(e);var n,t,r,i=(n=l.store.getState().currentUser.conversations,t=l.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&&y(i),g.dispatchQueueUpdate(e)})),E.current.on("queueMemberUpdate",(function(e){j.queue.updateQueueMember(e),g.dispatchQueueMemberUpdate(e)})),E.current.on("takeOver",(function(){g.dispatchAlreadyLogin()})),E.current.on("serverReloaded",(function(){g.dispatchServerReload()})),E.current.on("parkingUpdate",(function(e){g.dispatchParkingUpdate(e)})),E.current.on("actionNethLink",(function(e,n){g.dispatchUrlCall(e,n)})),E.current.on("satellite/summary",(function(e){(null==e?void 0:e.uniqueid)&&a.eventDispatch("phone-island-summary-ready",{linkedid:null==e?void 0:e.uniqueid,display_name:null==e?void 0:e.display_name,display_number:null==e?void 0:e.display_number})})),E.current.on("message",(function(e){switch(e.message){case"videoCallStart":var n=l.store.getState(),t=n.currentCall,r=t.incoming,i=t.outgoing,o=t.accepted,c=n.currentUser.default_device,u=n.island,a=u.isFromStreaming,s=u.view;("webrtc"===(null==c?void 0:c.type)||"nethlink"===(null==c?void 0:c.type))&&(r||i||o)&&!a&&"video"!==s&&(j.island.toggleSideViewVisible(!1),j.island.toggleTranscriptionViewVisible(!1),j.island.setIslandView("video")),g.dispatchVideoCallStarted({initiator:"remote",callUser:e.callUser,destUser:e.destUser});break;case"screenSharingStart":j.island.toggleSideViewVisible(!1),j.island.toggleTranscriptionViewVisible(!1),j.island.setIslandView("video"),j.screenShare.update({isJoiningScreenShare:!0,room:e.roomId});break;case"screenSharingStop":j.island.toggleSideViewVisible(!1),j.island.toggleTranscriptionViewVisible(!1),j.island.setIslandView("video"),j.screenShare.update({isLeavingScreenShare:!0});break;default:console.warn("Socket: unknown message type ",e.message)}})),E.current.on("updateDefaultDevice",(function(n){g.dispatchDefaultDeviceUpdate(n);var t=l.store.getState().users.extensions,r=l.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],c=r.extension.find((function(e){return e.id===o.exten}));c&&(o=e.__assign(e.__assign({},o),{type:c.type})),l.store.dispatch.currentUser.updateCurrentDefaultDevice(o),d.checkMediaPermissions()}}})),E.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=l.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}))})),l.store.dispatch.conference.updateConferenceUsersList(o),l.store.dispatch.conference.updateConferenceId(t)}})),E.current.on("confBridgeEnd",(function(e){e&&(null==e?void 0:e.id)&&(l.store.dispatch.conference.resetConference(),a.eventDispatch("phone-island-conference-finished",{}))})),E.current.on("callWebrtc",(function(e){a.eventDispatch("phone-island-call-start",{number:e})})),E.current.on("newVoiceMessageCounter",(function(e){a.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})})),E.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){l.store.getState().island.isFromStreaming;var i=l.store.getState().currentCall.streamingSourceNumber;m.getStreamingSourceId(i),j.streaming.updateSourceImage({source:t,image:r})}}})),E.current.on("satellite/transcription",(function(e){a.eventDispatch("phone-island-conversation-transcription",e)})),function(){clearInterval(x.current),E.current.close()}}),[q,N,_,D,j]),n.useEffect((function(){var e;if(T){console.info("Socket reload requested");var n=l.store.getState().alerts.data,t=l.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&&l.store.dispatch.island.setForceReload(!1),x.current&&(clearInterval(x.current),x.current=null),setTimeout((function(){E.current.disconnect(),E.current.connect(),I()}),100)):(console.info("Socket already connected (no alert active), skipping reconnection"),I())}}),[T]),C.default.createElement(C.default.Fragment,null,U)};
2
2
  //# sourceMappingURL=Socket.js.map