@nethesis/phone-island 1.0.12 → 1.0.14

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 (36) hide show
  1. package/dist/App.js +1 -1
  2. package/dist/App.js.map +1 -1
  3. package/dist/components/CallView/index.js +1 -1
  4. package/dist/components/CallView/index.js.map +1 -1
  5. package/dist/components/Socket.js +1 -1
  6. package/dist/components/Socket.js.map +1 -1
  7. package/dist/components/WebRTC.js +1 -1
  8. package/dist/components/WebRTC.js.map +1 -1
  9. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js +1 -1
  10. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js.map +1 -1
  11. package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs.js +1 -1
  12. package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs.js.map +1 -1
  13. package/dist/node_modules/js-base64/base64.mjs.js +1 -1
  14. package/dist/node_modules/js-base64/base64.mjs.js.map +1 -1
  15. package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs.js.map +1 -1
  16. package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs.js.map +1 -1
  17. package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.mjs.js +1 -1
  18. package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.mjs.js.map +1 -1
  19. package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js +1 -1
  20. package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js.map +1 -1
  21. package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.mjs.js +1 -1
  22. package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.mjs.js.map +1 -1
  23. package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js +1 -1
  24. package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js.map +1 -1
  25. package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.mjs.js +1 -1
  26. package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.mjs.js.map +1 -1
  27. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js +1 -1
  28. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js.map +1 -1
  29. package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.mjs.js +1 -1
  30. package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.mjs.js.map +1 -1
  31. package/dist/node_modules/motion-dom/dist/es/utils/border-radius.mjs.js +2 -0
  32. package/dist/node_modules/motion-dom/dist/es/utils/border-radius.mjs.js.map +1 -0
  33. package/dist/package.json.js +1 -1
  34. package/package.json +1 -1
  35. package/dist/node_modules/motion-dom/dist/es/stats/buffer.mjs.js +0 -2
  36. package/dist/node_modules/motion-dom/dist/es/stats/buffer.mjs.js.map +0 -1
@@ -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"),n=require("../../utils/streaming/streamingUtils.js"),a=require("../../lib/phone/call.js");require("../../node_modules/tslib/tslib.es6.js"),require("../../store/index.js"),require("../../node_modules/socket.io-client/build/esm/index.js");var l=require("../../lib/user/default_device.js");require("../../node_modules/mic-check/lib/index.js"),require("../../lib/webrtc/janus.js"),require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../Island.js");var r=require("../Button.js"),o=require("../AudioBars.js");require("../../node_modules/i18next/dist/esm/i18next.js");var s=require("../CustomThemedTooltip.js");require("../TranscriptionView/TranscriptionView.js");var u=require("./Timer.js"),c=require("./Number.js"),d=require("./DisplayName.js"),p=require("./Avatar.js"),m=require("./Actions.js"),f=require("../Hangup.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 g=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var x=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js"),v=require("../StreamingImage/index.js"),E=require("../VideoStreamingSkeleton/index.js"),w=require("../VideoStreamingEmptyState/index.js"),h=require("../../node_modules/react-redux/es/hooks/useDispatch.js"),j=require("../../node_modules/react-redux/es/hooks/useSelector.js");function b(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var N=b(e);function y(e,t){return!e&&!t}var q=e.memo((function(e){var t=e.children,i=e.className,n=void 0===i?"pi-gap-1 pi-grid-rows-2":i;return N.default.createElement("div",{className:"pi-grid pi-min-w-0 pi-self-center pi-grid-cols-1 ".concat(n)},t)}));q.displayName="Details";var _=e.memo((function(e){var n=e.label,a=e.tooltipContent;return n?N.default.createElement("span",{className:"pi-inline-flex pi-flex-none pi-items-center pi-justify-center pi-text-iconSecondary","data-tooltip-id":a?"tooltip-queue":void 0,"data-tooltip-content":a||""},N.default.createElement(t.FontAwesomeIcon,{icon:i.faUsers,className:"pi-h-4 pi-w-4"})):null}));_.displayName="QueueBadge";var T=e.memo((function(e){var n=e.label,a=e.tooltipContent;return n?N.default.createElement("span",{className:"pi-inline-flex pi-w-fit pi-max-w-full pi-flex-none pi-items-center pi-gap-1.5 pi-self-start pi-rounded-full pi-bg-iconSecondary pi-px-2.5 pi-py-1 pi-text-xs pi-font-medium pi-leading-none pi-text-iconWhite dark:pi-bg-iconSecondaryDark","data-tooltip-id":a?"tooltip-queue":void 0,"data-tooltip-content":a||"","aria-label":a||n},N.default.createElement(t.FontAwesomeIcon,{icon:i.faUsers,className:"pi-h-3 pi-w-3 pi-flex-none"}),N.default.createElement("span",{className:"pi-block pi-max-w-28 pi-truncate"},n)):null}));T.displayName="IncomingQueueBadge";var k=e.memo((function(){var b,k=g.useTranslation().t,A=h.useDispatch(),C=j.useSelector((function(e){return e.currentCall})),S=C.incoming,I=C.accepted,F=C.outgoing,P=C.startTime,M=C.paused,B=C.number,O=C.isRecording,U=C.username,L=C.streamingSourceNumber,V=C.queueName,W=C.queueNumber,D=C.throughQueue,z=j.useSelector((function(e){return e.island})),H=z.isOpen,Q=z.isFromStreaming,R=j.useSelector((function(e){return e.webrtc})).remoteAudioStream,G=j.useSelector((function(e){return e.listen})),J=G.isListen,K=G.isIntrude,X=G.isListenExtension,Y=G.isIntrudeExtension,Z=j.useSelector((function(e){return e.alerts})).data,$=j.useSelector((function(e){return e.currentUser})),ee=j.useSelector((function(e){return e.streaming})),te=ee.videoSources,ie=ee.sourceImages,ne=e.useMemo((function(){return Object.values(Z).filter((function(e){return e.active}))}),[Z]),ae=e.useMemo((function(){return ne.length>0?ne[ne.length-1]:null}),[ne]),le=e.useMemo((function(){return Q&&L&&!I}),[Q,L,I]),re=e.useMemo((function(){if(!L||!te)return{canUnlock:!1,tooltipText:""};var e=Object.values(te).find((function(e){return(null==e?void 0:e.extension)===L})),t=Boolean((null==e?void 0:e.cmdOpen)&&""!==(null==e?void 0:e.cmdOpen.trim()));return{canUnlock:t,tooltipText:t&&e?"".concat(k("VideoStreaming.Open"),": ").concat(null==e?void 0:e.description):""}}),[L,te,k]),oe=e.useMemo((function(){return""!==U&&"undefined"!==U}),[U]),se=e.useMemo((function(){return V||W||""}),[V,W]),ue=e.useMemo((function(){return D&&se?"".concat(k("Common.Queue"),": ").concat(se):""}),[D,se,k]),ce=e.useMemo((function(){return Boolean(S&&!I&&D&&se)}),[I,S,D,se]),de=e.useCallback((function(){var e;return N.default.createElement("div",{className:"pi-text-gray-600 dark:pi-text-gray-300 pi-font-normal pi-text-sm pi-flex pi-items-center pi-truncate"},N.default.createElement(t.FontAwesomeIcon,{size:"sm",icon:x.faOfficePhone,className:"pi-mr-1"}),N.default.createElement("span",{className:"pi-max-w-16 pi-truncate"},(null===(e=null==$?void 0:$.default_device)||void 0===e?void 0:e.description)||k("Common.Physical phone")))}),[null===(b=null==$?void 0:$.default_device)||void 0===b?void 0:b.description,k]),pe=e.useCallback((function(e){var n=H?"pi-h-12 pi-w-12":"pi-h-6 pi-w-6",a=H?"pi-h-8":"pi-h-4 pi-w-4 pi-rounded-full",l=H?"pi-w-8 pi-h-8":"pi-h-6 pi-w-6",r="red"===e?"pi-bg-red-400":"pi-bg-green-400",o="red"===e?"pi-text-red-500":"pi-text-green-500";return N.default.createElement("div",{className:"".concat(n," pi-flex pi-justify-center pi-items-center")},N.default.createElement("div",{className:"".concat(a," pi-w-fit pi-flex pi-justify-center pi-items-center pi-gap-1 pi-overflow-hidden")},N.default.createElement("span",{className:"".concat(l," pi-animate-ping pi-absolute pi-inline-flex pi-rounded-full ").concat(r," pi-opacity-75")}),N.default.createElement(t.FontAwesomeIcon,{className:"pi-w-4 pi-h-6 pi-rotate-45 ".concat(o),icon:i.faCircle})))}),[H]),me=e.useMemo((function(){var e="pi-grid pi-items-center";return H&&(e=ce?"pi-grid pi-items-center":"pi-grid pi-items-start",I?e+=" pi-grid-rows-[72px_1fr]":S?e+=" pi-grid-cols-[256px_114px]":F&&(e+=" pi-grid-cols-[1fr_84px]")),le?"pi-flex pi-flex-col":e}),[H,I,S,F,le,ce]),fe=e.useMemo((function(){var e=H&&!ce?"start":"center";return"pi-grid ".concat(H&&!I&&F?"pi-grid-cols-[48px_1fr]":H&&!I&&S?"pi-grid-cols-[48px_1fr_1px]":H&&I?"pi-grid-cols-[48px_164px_48px]":H||I?"pi-grid-cols-[24px_66px_24px]":"pi-grid-cols-[24px_102px]"," pi-gap-").concat(H?"5":"3"," pi-items-").concat(e," pi-justify-center pi-w-full")}),[H,I,S,F,ce]),ge=e.useMemo((function(){return le?"pi-grid-cols-3":y(F,I)?"pi-grid-cols-2":I?"pi-grid-cols-1 pi-justify-items-center":"pi-grid-cols-1 pi-justify-items-end"}),[le,F,I]),xe=e.useCallback((function(){var e=H?"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-rounded-sm pi-bg-cover":"pi-relative pi-z-30 pi-h-6 pi-w-6 pi-rounded-sm pi-bg-cover";return J?N.default.createElement(t.FontAwesomeIcon,{className:e,icon:i.faEarListen}):K?N.default.createElement(t.FontAwesomeIcon,{className:e,icon:i.faHandPointUp}):""!==B&&oe?N.default.createElement(p.default,null):S&&!oe?N.default.createElement(t.FontAwesomeIcon,{className:"".concat(e," pi--rotate-45"),icon:i.faArrowLeft}):!I||F||oe?F&&!oe?N.default.createElement(t.FontAwesomeIcon,{className:"".concat(e," pi-rotate-[135deg]"),icon:i.faArrowLeft}):null:N.default.createElement(t.FontAwesomeIcon,{className:"".concat(e," pi--rotate-45"),icon:i.faArrowLeft})}),[H,J,K,B,oe,S,F,I]),ve=e.useCallback((function(){return H?K?N.default.createElement(q,null,N.default.createElement("span",{className:"pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base"},k("Common.Intrude"),Y?" - ".concat(Y):""),I?l.isPhysical()?de():N.default.createElement(u.default,{startTime:P,isNotAlwaysWhite:!0}):Y?"".concat(Y):""):J?N.default.createElement(q,null,N.default.createElement("span",{className:"pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base"},k("Common.Listen"),X?" - ".concat(X):""),I?l.isPhysical()?de():N.default.createElement(u.default,{startTime:P,isNotAlwaysWhite:!0}):X?"".concat(X):""):ce?N.default.createElement(q,{className:"pi-grid-rows-[20px_24px_24px] pi-gap-0.5"},N.default.createElement(T,{label:se,tooltipContent:ue}),N.default.createElement(d.default,null),N.default.createElement(c.default,null)):N.default.createElement(q,null,I&&D&&se?N.default.createElement("div",{className:"pi-flex pi-min-w-0 pi-items-center pi-gap-2"},N.default.createElement("div",{className:"pi-min-w-0 pi-flex-1"},N.default.createElement(d.default,null)),N.default.createElement(_,{label:se,tooltipContent:ue})):N.default.createElement(d.default,null),I?l.isPhysical()?de():N.default.createElement(u.default,{startTime:P,isNotAlwaysWhite:!0}):N.default.createElement(c.default,null)):null}),[H,K,J,I,P,Y,X,k,de,I,D,se,ue,ce]),Ee=e.useCallback((function(){return I&&O?pe("red"):I&&R&&!l.isPhysical()?N.default.createElement(o.AudioBars,{audioStream:R,paused:M,size:H?"large":"small"}):I&&l.isPhysical()?pe("green"):null}),[I,O,R,H,M,pe]),we=e.useCallback((function(){if(!te||0===Object.keys(te).length||!L)return N.default.createElement(E.default,{className:"pi-w-full pi-h-40 pi-mt-4"});var e=Object.values(te).find((function(e){return e.extension===L}));return e&&(ie[e.id]||e.image)?N.default.createElement(v.default,null):N.default.createElement(w.default,{className:"pi-w-full pi-h-40 pi-mt-4"})}),[L,te,ie]);if(null!==ae)return null;return N.default.createElement("div",{className:"pi-bg-red pi-content-center pi-justify-center"},N.default.createElement("div",{className:me},le?N.default.createElement(N.default.Fragment,null,N.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between"},N.default.createElement("div",{className:"pi-flex pi-items-center pi-gap-4"},xe(),N.default.createElement("div",{className:"pi-flex pi-flex-col pi-justify-center pi-space-y-2"},N.default.createElement(d.default,null),N.default.createElement(c.default,null))),N.default.createElement("div",{className:"pi-flex pi-gap-2"},N.default.createElement(f.default,{description:k("Tooltip.Hangup")}),!F&&N.default.createElement(r.Button,{onClick:function(){return a.answerIncomingCall(),void setTimeout((function(){A.island.setIslandView("streamingAnswer")}),200)},variant:"green","data-tooltip-id":"tooltip-answer","data-tooltip-content":k("Tooltip.Answer")||""},N.default.createElement(t.FontAwesomeIcon,{className:"pi-w-5 pi-h-5",icon:i.faPhone})),(null==re?void 0:re.canUnlock)&&N.default.createElement(r.Button,{variant:"default",onClick:n.handleStreamingUnlock,"data-tooltip-id":"tooltip-unlock","data-tooltip-content":null==re?void 0:re.tooltipText},N.default.createElement(t.FontAwesomeIcon,{className:"pi-w-5 pi-h-5",icon:i.faUnlock})))),we()):N.default.createElement(N.default.Fragment,null,N.default.createElement("div",{className:fe},xe(),ve(),!H&&!I&&N.default.createElement(d.default,null),!H&&I&&N.default.createElement(u.default,{startTime:P,isNotAlwaysWhite:!0}),Ee()),H&&N.default.createElement(N.default.Fragment,null,N.default.createElement("div",{className:"".concat(J||K?"":"pi-grid pi-gap-y-5")},I&&N.default.createElement(m.default,null),N.default.createElement("div",{className:"pi-grid ".concat(ge," pi-gap-3.5")},N.default.createElement(f.default,{description:k("Tooltip.Hangup and transfer")}),y(F,I)&&N.default.createElement(r.Button,{onClick:a.answerIncomingCall,variant:"green","data-tooltip-id":"tooltip-answer-left","data-tooltip-content":k("Tooltip.Answer")||""},N.default.createElement(t.FontAwesomeIcon,{className:"pi-w-6 pi-h-6",icon:i.faPhone}))))))),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-answer-left",place:"left"}),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-answer",place:"left"}),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-unlock",place:"left"}),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-display-name",place:"bottom"}),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-queue",place:"bottom"}))}));exports.default=k;
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"),n=require("../../utils/streaming/streamingUtils.js"),a=require("../../lib/phone/call.js");require("../../node_modules/tslib/tslib.es6.js"),require("../../store/index.js"),require("../../node_modules/socket.io-client/build/esm/index.js");var l=require("../../lib/user/default_device.js");require("../../node_modules/mic-check/lib/index.js"),require("../../lib/webrtc/janus.js"),require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../Island.js");var r=require("../Button.js"),o=require("../AudioBars.js");require("../../node_modules/i18next/dist/esm/i18next.js");var s=require("../CustomThemedTooltip.js");require("../TranscriptionView/TranscriptionView.js");var u=require("./Timer.js"),c=require("./Number.js"),d=require("./DisplayName.js"),p=require("./Avatar.js"),m=require("./Actions.js"),f=require("../Hangup.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 g=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var x=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js"),v=require("../StreamingImage/index.js"),E=require("../VideoStreamingSkeleton/index.js"),w=require("../VideoStreamingEmptyState/index.js"),h=require("../../node_modules/react-redux/es/hooks/useDispatch.js"),j=require("../../node_modules/react-redux/es/hooks/useSelector.js");function b(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var N=b(e);function y(e,t){return!e&&!t}var q=e.memo((function(e){var t=e.children,i=e.className,n=void 0===i?"pi-gap-1 pi-grid-rows-2":i;return N.default.createElement("div",{className:"pi-grid pi-min-w-0 pi-self-center pi-grid-cols-1 ".concat(n)},t)}));q.displayName="Details";var _=e.memo((function(e){var n=e.label,a=e.tooltipContent;return n?N.default.createElement("span",{className:"pi-inline-flex pi-flex-none pi-items-center pi-justify-center pi-text-iconSecondary","data-tooltip-id":a?"tooltip-queue":void 0,"data-tooltip-content":a||""},N.default.createElement(t.FontAwesomeIcon,{icon:i.faUsers,className:"pi-h-4 pi-w-4"})):null}));_.displayName="QueueBadge";var T=e.memo((function(e){var n=e.label,a=e.tooltipContent;return n?N.default.createElement("span",{className:"pi-inline-flex pi-w-fit pi-max-w-full pi-flex-none pi-items-center pi-gap-1.5 pi-self-start pi-rounded-full pi-bg-iconSecondary pi-px-2.5 pi-py-1 pi-text-xs pi-font-medium pi-leading-none pi-text-iconWhite dark:pi-bg-iconSecondaryDark","data-tooltip-id":a?"tooltip-queue":void 0,"data-tooltip-content":a||"","aria-label":a||n},N.default.createElement(t.FontAwesomeIcon,{icon:i.faUsers,className:"pi-h-3 pi-w-3 pi-flex-none"}),N.default.createElement("span",{className:"pi-block pi-max-w-28 pi-truncate"},n)):null}));T.displayName="IncomingQueueBadge";var k=e.memo((function(){var b,k=g.useTranslation().t,A=h.useDispatch(),C=j.useSelector((function(e){return e.currentCall})),S=C.incoming,I=C.accepted,F=C.outgoing,P=C.startTime,M=C.paused,B=C.number,O=C.isRecording,U=C.username,L=C.streamingSourceNumber,V=C.queueName,W=C.queueNumber,D=C.throughQueue,z=j.useSelector((function(e){return e.island})),H=z.isOpen,Q=z.isFromStreaming,R=j.useSelector((function(e){return e.webrtc})).remoteAudioStream,G=j.useSelector((function(e){return e.listen})),J=G.isListen,K=G.isIntrude,X=G.isListenExtension,Y=G.isIntrudeExtension,Z=j.useSelector((function(e){return e.alerts})).data,$=j.useSelector((function(e){return e.currentUser})),ee=j.useSelector((function(e){return e.streaming})),te=ee.videoSources,ie=ee.sourceImages,ne=e.useMemo((function(){return Object.values(Z).filter((function(e){return e.active}))}),[Z]),ae=e.useMemo((function(){return ne.length>0?ne[ne.length-1]:null}),[ne]),le=e.useMemo((function(){return Q&&L&&!I}),[Q,L,I]),re=e.useMemo((function(){if(!L||!te)return{canUnlock:!1,tooltipText:""};var e=Object.values(te).find((function(e){return(null==e?void 0:e.extension)===L})),t=Boolean((null==e?void 0:e.cmdOpen)&&""!==(null==e?void 0:e.cmdOpen.trim()));return{canUnlock:t,tooltipText:t&&e?"".concat(k("VideoStreaming.Open"),": ").concat(null==e?void 0:e.description):""}}),[L,te,k]),oe=e.useMemo((function(){return""!==U&&"undefined"!==U}),[U]),se=e.useMemo((function(){return V||W||""}),[V,W]),ue=e.useMemo((function(){return D&&se?"".concat(k("Common.Queue"),": ").concat(se):""}),[D,se,k]),ce=e.useMemo((function(){return Boolean(S&&!I&&D&&se)}),[I,S,D,se]),de=e.useCallback((function(){var e;return N.default.createElement("div",{className:"pi-text-gray-600 dark:pi-text-gray-300 pi-font-normal pi-text-sm pi-flex pi-items-center pi-truncate"},N.default.createElement(t.FontAwesomeIcon,{size:"sm",icon:x.faOfficePhone,className:"pi-mr-1"}),N.default.createElement("span",{className:"pi-max-w-16 pi-truncate"},(null===(e=null==$?void 0:$.default_device)||void 0===e?void 0:e.description)||k("Common.Physical phone")))}),[null===(b=null==$?void 0:$.default_device)||void 0===b?void 0:b.description,k]),pe=e.useCallback((function(e){var n=H?"pi-h-12 pi-w-12":"pi-h-6 pi-w-6",a=H?"pi-h-8":"pi-h-4 pi-w-4 pi-rounded-full",l=H?"pi-w-8 pi-h-8":"pi-h-6 pi-w-6",r="red"===e?"pi-bg-red-400":"pi-bg-green-400",o="red"===e?"pi-text-red-500":"pi-text-green-500";return N.default.createElement("div",{className:"".concat(n," pi-flex pi-justify-center pi-items-center")},N.default.createElement("div",{className:"".concat(a," pi-w-fit pi-flex pi-justify-center pi-items-center pi-gap-1 pi-overflow-hidden")},N.default.createElement("span",{className:"".concat(l," pi-animate-ping pi-absolute pi-inline-flex pi-rounded-full ").concat(r," pi-opacity-75")}),N.default.createElement(t.FontAwesomeIcon,{className:"pi-w-4 pi-h-6 pi-rotate-45 ".concat(o),icon:i.faCircle})))}),[H]),me=e.useMemo((function(){var e="pi-grid pi-items-center";return H&&(e=ce?"pi-grid pi-items-center":"pi-grid pi-items-start",I?e+=" pi-grid-rows-[72px_1fr]":S?e+=" pi-grid-cols-[256px_114px]":F&&(e+=" pi-grid-cols-[1fr_84px]")),le?"pi-flex pi-flex-col":e}),[H,I,S,F,le,ce]),fe=e.useMemo((function(){var e=H&&!ce?"start":"center";return"pi-grid ".concat(H&&!I&&F?"pi-grid-cols-[48px_1fr]":H&&!I&&S?"pi-grid-cols-[48px_1fr_1px]":H&&I?"pi-grid-cols-[48px_164px_48px]":H||I?"pi-grid-cols-[24px_66px_24px]":"pi-grid-cols-[24px_102px]"," pi-gap-").concat(H?"5":"3"," pi-items-").concat(e," pi-justify-center pi-w-full")}),[H,I,S,F,ce]),ge=e.useMemo((function(){return le?"pi-grid-cols-3":y(F,I)?"pi-grid-cols-2":I?"pi-grid-cols-1 pi-justify-items-center":"pi-grid-cols-1 pi-justify-items-end"}),[le,F,I]),xe=e.useCallback((function(){var e=H?"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-rounded-sm pi-bg-cover":"pi-relative pi-z-30 pi-h-6 pi-w-6 pi-rounded-sm pi-bg-cover";return J?N.default.createElement(t.FontAwesomeIcon,{className:e,icon:i.faEarListen}):K?N.default.createElement(t.FontAwesomeIcon,{className:e,icon:i.faHandPointUp}):""!==B&&oe?N.default.createElement(p.default,null):S&&!oe?N.default.createElement(t.FontAwesomeIcon,{className:"".concat(e," pi--rotate-45"),icon:i.faArrowLeft}):!I||F||oe?F&&!oe?N.default.createElement(t.FontAwesomeIcon,{className:"".concat(e," pi-rotate-[135deg]"),icon:i.faArrowLeft}):null:N.default.createElement(t.FontAwesomeIcon,{className:"".concat(e," pi--rotate-45"),icon:i.faArrowLeft})}),[H,J,K,B,oe,S,F,I]),ve=e.useCallback((function(){return H?K?N.default.createElement(q,null,N.default.createElement("span",{className:"pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base"},k("Common.Intrude"),Y?" - ".concat(Y):""),I?l.isPhysical()?de():N.default.createElement(u.default,{startTime:P,isNotAlwaysWhite:!0}):Y?"".concat(Y):""):J?N.default.createElement(q,null,N.default.createElement("span",{className:"pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base"},k("Common.Listen"),X?" - ".concat(X):""),I?l.isPhysical()?de():N.default.createElement(u.default,{startTime:P,isNotAlwaysWhite:!0}):X?"".concat(X):""):ce?N.default.createElement(q,{className:"pi-grid-rows-[20px_24px_24px] pi-gap-0.5"},N.default.createElement(T,{label:se,tooltipContent:ue}),N.default.createElement(d.default,null),N.default.createElement(c.default,null)):N.default.createElement(q,null,I&&D&&se?N.default.createElement("div",{className:"pi-flex pi-min-w-0 pi-items-center pi-gap-2"},N.default.createElement("div",{className:"pi-min-w-0 pi-flex-1"},N.default.createElement(d.default,null)),N.default.createElement(_,{label:se,tooltipContent:ue})):N.default.createElement(d.default,null),I?l.isPhysical()?de():N.default.createElement(u.default,{startTime:P,isNotAlwaysWhite:!0}):N.default.createElement(c.default,null)):null}),[H,K,J,I,P,Y,X,k,de,I,D,se,ue,ce]),Ee=e.useCallback((function(){return I&&O?pe("red"):I&&R&&!l.isPhysical()?N.default.createElement(o.AudioBars,{audioStream:R,paused:M,size:H?"large":"small"}):I&&l.isPhysical()?pe("green"):null}),[I,O,R,H,M,pe]),we=e.useCallback((function(){if(!te||0===Object.keys(te).length||!L)return N.default.createElement(E.default,{className:"pi-w-full pi-h-40 pi-mt-4"});var e=Object.values(te).find((function(e){return e.extension===L}));return e&&(ie[e.id]||e.image)?N.default.createElement(v.default,null):N.default.createElement(w.default,{className:"pi-w-full pi-h-40 pi-mt-4"})}),[L,te,ie]);if(null!==ae)return null;return N.default.createElement("div",{className:"pi-bg-red pi-content-center pi-justify-center"},N.default.createElement("div",{className:me},le?N.default.createElement(N.default.Fragment,null,N.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between pi-w-full pi-gap-2"},N.default.createElement("div",{className:"pi-flex pi-items-center pi-gap-4 pi-min-w-0 pi-flex-1"},xe(),N.default.createElement("div",{className:"pi-flex pi-flex-col pi-justify-center pi-space-y-2 pi-min-w-0"},N.default.createElement(d.default,null),N.default.createElement(c.default,null))),N.default.createElement("div",{className:"pi-flex pi-gap-2 pi-flex-shrink-0"},N.default.createElement(f.default,{description:k("Tooltip.Hangup")}),!F&&N.default.createElement(r.Button,{onClick:function(){return a.answerIncomingCall(),void setTimeout((function(){A.island.setIslandView("streamingAnswer")}),200)},variant:"green","data-tooltip-id":"tooltip-answer","data-tooltip-content":k("Tooltip.Answer")||""},N.default.createElement(t.FontAwesomeIcon,{className:"pi-w-5 pi-h-5",icon:i.faPhone})),(null==re?void 0:re.canUnlock)&&N.default.createElement(r.Button,{variant:"default",onClick:n.handleStreamingUnlock,"data-tooltip-id":"tooltip-unlock","data-tooltip-content":null==re?void 0:re.tooltipText},N.default.createElement(t.FontAwesomeIcon,{className:"pi-w-5 pi-h-5",icon:i.faUnlock})))),we()):N.default.createElement(N.default.Fragment,null,N.default.createElement("div",{className:fe},xe(),ve(),!H&&!I&&N.default.createElement(d.default,null),!H&&I&&N.default.createElement(u.default,{startTime:P,isNotAlwaysWhite:!0}),Ee()),H&&N.default.createElement(N.default.Fragment,null,N.default.createElement("div",{className:"".concat(J||K?"":"pi-grid pi-gap-y-5")},I&&N.default.createElement(m.default,null),N.default.createElement("div",{className:"pi-grid ".concat(ge," pi-gap-3.5")},N.default.createElement(f.default,{description:k("Tooltip.Hangup and transfer")}),y(F,I)&&N.default.createElement(r.Button,{onClick:a.answerIncomingCall,variant:"green","data-tooltip-id":"tooltip-answer-left","data-tooltip-content":k("Tooltip.Answer")||""},N.default.createElement(t.FontAwesomeIcon,{className:"pi-w-6 pi-h-6",icon:i.faPhone}))))))),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-answer-left",place:"left"}),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-answer",place:"left"}),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-unlock",place:"left"}),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-display-name",place:"bottom"}),N.default.createElement(s.CustomThemedTooltip,{id:"tooltip-queue",place:"bottom"}))}));exports.default=k;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/CallView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useMemo, useCallback, memo } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState, Dispatch } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faPhone,\n faEarListen,\n faHandPointUp,\n faArrowLeft,\n faCircle,\n faUnlock,\n faUsers,\n} from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../'\nimport Timer from './Timer'\nimport Number from './Number'\nimport DisplayName from './DisplayName'\nimport { AudioBars } from '../'\nimport { answerIncomingCall } from '../../lib/phone/call'\nimport Avatar from './Avatar'\nimport Actions from './Actions'\nimport Hangup from '../Hangup'\nimport { useTranslation } from 'react-i18next'\nimport { faOfficePhone } from '@nethesis/nethesis-solid-svg-icons'\nimport { isPhysical } from '../../lib/user/default_device'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport StreamingImage from '../StreamingImage'\nimport VideoStreamingSkeleton from '../VideoStreamingSkeleton'\nimport VideoStreamingEmptyState from '../VideoStreamingEmptyState'\nimport { handleStreamingUnlock } from '../../utils'\nimport { useDispatch } from 'react-redux'\n\nfunction isAnswerVisible(outgoing: boolean, accepted: boolean): boolean {\n return !outgoing && !accepted\n}\n\nconst Details = memo(\n ({\n children,\n className = 'pi-gap-1 pi-grid-rows-2',\n }: {\n children: React.ReactNode\n className?: string\n }) => (\n <div className={`pi-grid pi-min-w-0 pi-self-center pi-grid-cols-1 ${className}`}>\n {children}\n </div>\n ),\n)\nDetails.displayName = 'Details'\n\nconst QueueBadge = memo(\n ({\n label,\n tooltipContent,\n }: {\n label: string\n tooltipContent?: string\n }) => {\n if (!label) {\n return null\n }\n\n return (\n <span\n className='pi-inline-flex pi-flex-none pi-items-center pi-justify-center pi-text-iconSecondary'\n data-tooltip-id={tooltipContent ? 'tooltip-queue' : undefined}\n data-tooltip-content={tooltipContent || ''}\n >\n <FontAwesomeIcon icon={faUsers} className='pi-h-4 pi-w-4' />\n </span>\n )\n },\n)\nQueueBadge.displayName = 'QueueBadge'\n\nconst IncomingQueueBadge = memo(\n ({\n label,\n tooltipContent,\n }: {\n label: string\n tooltipContent?: string\n }) => {\n if (!label) {\n return null\n }\n\n return (\n <span\n className='pi-inline-flex pi-w-fit pi-max-w-full pi-flex-none pi-items-center pi-gap-1.5 pi-self-start pi-rounded-full pi-bg-iconSecondary pi-px-2.5 pi-py-1 pi-text-xs pi-font-medium pi-leading-none pi-text-iconWhite dark:pi-bg-iconSecondaryDark'\n data-tooltip-id={tooltipContent ? 'tooltip-queue' : undefined}\n data-tooltip-content={tooltipContent || ''}\n aria-label={tooltipContent || label}\n >\n <FontAwesomeIcon icon={faUsers} className='pi-h-3 pi-w-3 pi-flex-none' />\n <span className='pi-block pi-max-w-28 pi-truncate'>{label}</span>\n </span>\n )\n },\n)\nIncomingQueueBadge.displayName = 'IncomingQueueBadge'\n\n/**\n * The main view to manage calls, the starting point for calls actions flows\n */\nconst CallView: FC<CallViewProps> = () => {\n const { t } = useTranslation()\n const dispatch = useDispatch<Dispatch>()\n\n const currentCall = useSelector((state: RootState) => state.currentCall)\n const {\n incoming,\n accepted,\n outgoing,\n startTime,\n paused,\n number,\n isRecording,\n username,\n streamingSourceNumber,\n queueName,\n queueNumber,\n throughQueue,\n } = currentCall\n\n const { isOpen, isFromStreaming } = useSelector((state: RootState) => state.island)\n const { remoteAudioStream } = useSelector((state: RootState) => state.webrtc)\n const listenState = useSelector((state: RootState) => state.listen)\n const { isListen, isIntrude, isListenExtension, isIntrudeExtension } = listenState\n const { data: alertsData } = useSelector((state: RootState) => state.alerts)\n const currentUser = useSelector((state: RootState) => state.currentUser)\n const { videoSources, sourceImages } = useSelector((state: RootState) => state.streaming)\n\n const activeAlerts = useMemo(\n () => Object.values(alertsData).filter((alert: any) => alert.active),\n [alertsData],\n )\n\n const latestAlert = useMemo(\n () => (activeAlerts.length > 0 ? activeAlerts[activeAlerts.length - 1] : null),\n [activeAlerts],\n )\n\n const shouldShowStreamingImage = useMemo(\n () => isFromStreaming && streamingSourceNumber && !accepted,\n [isFromStreaming, streamingSourceNumber, accepted],\n )\n\n // Check if unlock button should be shown and get tooltip text\n const unlockData = useMemo(() => {\n if (!streamingSourceNumber || !videoSources) return { canUnlock: false, tooltipText: '' }\n\n const source = Object.values(videoSources).find(\n (source) => source?.extension === streamingSourceNumber,\n )\n\n const canUnlock = Boolean(source?.cmdOpen && source?.cmdOpen.trim() !== '')\n const tooltipText =\n canUnlock && source ? `${t('VideoStreaming.Open')}: ${source?.description}` : ''\n\n return { canUnlock, tooltipText }\n }, [streamingSourceNumber, videoSources, t])\n\n const hasValidUsername = useMemo(() => username !== '' && username !== 'undefined', [username])\n\n const queueLabel = useMemo(() => queueName || queueNumber || '', [queueName, queueNumber])\n\n const queueTooltipContent = useMemo(() => {\n if (!throughQueue || !queueLabel) {\n return ''\n }\n\n return `${t('Common.Queue')}: ${queueLabel}`\n }, [throughQueue, queueLabel, t])\n\n const shouldShowIncomingQueueBadge = useMemo(\n () => Boolean(incoming && !accepted && throughQueue && queueLabel),\n [accepted, incoming, throughQueue, queueLabel],\n )\n\n const renderLandlinePhoneDiv = useCallback(\n () => (\n <div className='pi-text-gray-600 dark:pi-text-gray-300 pi-font-normal pi-text-sm pi-flex pi-items-center pi-truncate'>\n <FontAwesomeIcon size='sm' icon={faOfficePhone} className='pi-mr-1' />\n <span className='pi-max-w-16 pi-truncate'>\n {currentUser?.default_device?.description || t('Common.Physical phone')}\n </span>\n </div>\n ),\n [currentUser?.default_device?.description, t],\n )\n\n const renderPulseIcon = useCallback(\n (color: string) => {\n const sizeClasses = !isOpen ? 'pi-h-6 pi-w-6' : 'pi-h-12 pi-w-12'\n const innerSizeClasses = !isOpen ? 'pi-h-4 pi-w-4 pi-rounded-full' : 'pi-h-8'\n const animationSizeClasses = !isOpen ? 'pi-h-6 pi-w-6' : 'pi-w-8 pi-h-8'\n const colorClasses = color === 'red' ? 'pi-bg-red-400' : 'pi-bg-green-400'\n const textColorClasses = color === 'red' ? 'pi-text-red-500' : 'pi-text-green-500'\n\n return (\n <div className={`${sizeClasses} pi-flex pi-justify-center pi-items-center`}>\n <div\n className={`${innerSizeClasses} pi-w-fit pi-flex pi-justify-center pi-items-center pi-gap-1 pi-overflow-hidden`}\n >\n <span\n className={`${animationSizeClasses} pi-animate-ping pi-absolute pi-inline-flex pi-rounded-full ${colorClasses} pi-opacity-75`}\n ></span>\n <FontAwesomeIcon\n className={`pi-w-4 pi-h-6 pi-rotate-45 ${textColorClasses}`}\n icon={faCircle}\n />\n </div>\n </div>\n )\n },\n [isOpen],\n )\n\n const callViewClasses = useMemo(() => {\n let baseClasses = 'pi-grid pi-items-center'\n\n if (isOpen) {\n baseClasses = shouldShowIncomingQueueBadge ? 'pi-grid pi-items-center' : 'pi-grid pi-items-start'\n\n if (accepted) {\n baseClasses += ' pi-grid-rows-[72px_1fr]'\n } else if (incoming) {\n baseClasses += ' pi-grid-cols-[256px_114px]'\n } else if (outgoing) {\n baseClasses += ' pi-grid-cols-[1fr_84px]'\n }\n }\n\n return shouldShowStreamingImage ? 'pi-flex pi-flex-col' : baseClasses\n }, [isOpen, accepted, incoming, outgoing, shouldShowStreamingImage, shouldShowIncomingQueueBadge])\n\n const topContentClasses = useMemo(() => {\n let columns = ''\n\n if (isOpen && !accepted && outgoing) {\n columns = 'pi-grid-cols-[48px_1fr]'\n } else if (isOpen && !accepted && incoming) {\n columns = 'pi-grid-cols-[48px_1fr_1px]'\n } else if (isOpen && accepted) {\n columns = 'pi-grid-cols-[48px_164px_48px]'\n } else if (!isOpen && !accepted) {\n columns = 'pi-grid-cols-[24px_102px]'\n } else {\n columns = 'pi-grid-cols-[24px_66px_24px]'\n }\n\n const itemsAlign = isOpen && !shouldShowIncomingQueueBadge ? 'start' : 'center'\n\n return `pi-grid ${columns} pi-gap-${isOpen ? '5' : '3'} pi-items-${itemsAlign} pi-justify-center pi-w-full`\n }, [isOpen, accepted, incoming, outgoing, shouldShowIncomingQueueBadge])\n\n const getGridClasses = useMemo(() => {\n if (shouldShowStreamingImage) return 'pi-grid-cols-3'\n if (isAnswerVisible(outgoing, accepted)) return 'pi-grid-cols-2'\n if (accepted) return 'pi-grid-cols-1 pi-justify-items-center'\n return 'pi-grid-cols-1 pi-justify-items-end'\n }, [shouldShowStreamingImage, outgoing, accepted])\n\n const renderStatusIcon = useCallback(() => {\n const iconSizeClass = isOpen\n ? 'pi-relative pi-z-30 pi-h-12 pi-w-12 pi-rounded-sm pi-bg-cover'\n : 'pi-relative pi-z-30 pi-h-6 pi-w-6 pi-rounded-sm pi-bg-cover'\n\n if (isListen) {\n return <FontAwesomeIcon className={iconSizeClass} icon={faEarListen} />\n }\n\n if (isIntrude) {\n return <FontAwesomeIcon className={iconSizeClass} icon={faHandPointUp} />\n }\n\n if (number !== '' && hasValidUsername) {\n return <Avatar />\n }\n\n if (incoming && !hasValidUsername) {\n return <FontAwesomeIcon className={`${iconSizeClass} pi--rotate-45`} icon={faArrowLeft} />\n }\n\n if (accepted && !outgoing && !hasValidUsername) {\n return <FontAwesomeIcon className={`${iconSizeClass} pi--rotate-45`} icon={faArrowLeft} />\n }\n\n if (outgoing && !hasValidUsername) {\n return (\n <FontAwesomeIcon className={`${iconSizeClass} pi-rotate-[135deg]`} icon={faArrowLeft} />\n )\n }\n\n return null\n }, [isOpen, isListen, isIntrude, number, hasValidUsername, incoming, outgoing, accepted])\n\n const renderDetails = useCallback(() => {\n if (!isOpen) return null\n\n if (isIntrude) {\n return (\n <Details>\n <span className='pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base'>\n {t('Common.Intrude')}\n {isIntrudeExtension ? ` - ${isIntrudeExtension}` : ''}\n </span>\n {accepted ? (\n !isPhysical() ? (\n <Timer startTime={startTime} isNotAlwaysWhite />\n ) : (\n renderLandlinePhoneDiv()\n )\n ) : isIntrudeExtension ? (\n `${isIntrudeExtension}`\n ) : (\n ''\n )}\n </Details>\n )\n }\n\n if (isListen) {\n return (\n <Details>\n <span className='pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base'>\n {t('Common.Listen')}\n {isListenExtension ? ` - ${isListenExtension}` : ''}\n </span>\n {accepted ? (\n !isPhysical() ? (\n <Timer startTime={startTime} isNotAlwaysWhite />\n ) : (\n renderLandlinePhoneDiv()\n )\n ) : isListenExtension ? (\n `${isListenExtension}`\n ) : (\n ''\n )}\n </Details>\n )\n }\n\n if (shouldShowIncomingQueueBadge) {\n return (\n <Details className='pi-grid-rows-[20px_24px_24px] pi-gap-0.5'>\n <IncomingQueueBadge label={queueLabel} tooltipContent={queueTooltipContent} />\n <DisplayName />\n <Number />\n </Details>\n )\n }\n\n return (\n <Details>\n {accepted && throughQueue && queueLabel ? (\n <div className='pi-flex pi-min-w-0 pi-items-center pi-gap-2'>\n <div className='pi-min-w-0 pi-flex-1'>\n <DisplayName />\n </div>\n <QueueBadge label={queueLabel} tooltipContent={queueTooltipContent} />\n </div>\n ) : (\n <DisplayName />\n )}\n {accepted ? (\n !isPhysical() ? (\n <Timer startTime={startTime} isNotAlwaysWhite />\n ) : (\n renderLandlinePhoneDiv()\n )\n ) : (\n <Number />\n )}\n </Details>\n )\n }, [\n isOpen,\n isIntrude,\n isListen,\n accepted,\n startTime,\n isIntrudeExtension,\n isListenExtension,\n t,\n renderLandlinePhoneDiv,\n accepted,\n throughQueue,\n queueLabel,\n queueTooltipContent,\n shouldShowIncomingQueueBadge,\n ])\n\n const renderAudioIndicator = useCallback(() => {\n if (accepted && isRecording) {\n return renderPulseIcon('red')\n }\n\n if (accepted && remoteAudioStream && !isPhysical()) {\n return (\n <AudioBars\n audioStream={remoteAudioStream}\n paused={paused}\n size={isOpen ? 'large' : 'small'}\n />\n )\n }\n\n if (accepted && isPhysical()) {\n return renderPulseIcon('green')\n }\n\n return null\n }, [accepted, isRecording, remoteAudioStream, isOpen, paused, renderPulseIcon])\n\n const renderStreamingContent = useCallback(() => {\n // Show skeleton while videoSources are loading or if streaming source number is not set yet\n if (!videoSources || Object.keys(videoSources).length === 0 || !streamingSourceNumber) {\n return <VideoStreamingSkeleton className='pi-w-full pi-h-40 pi-mt-4' />\n }\n\n // Find the streaming source\n const source = Object.values(videoSources).find(\n (source) => source.extension === streamingSourceNumber,\n )\n\n // If source doesn't exist, show empty state\n if (!source) {\n return <VideoStreamingEmptyState className='pi-w-full pi-h-40 pi-mt-4' />\n }\n\n // Check if image is available\n const hasImage = sourceImages[source.id] || source.image\n\n // If no image available, show empty state\n if (!hasImage) {\n return <VideoStreamingEmptyState className='pi-w-full pi-h-40 pi-mt-4' />\n }\n\n // If we have an image, show StreamingImage component\n return <StreamingImage />\n }, [streamingSourceNumber, videoSources, sourceImages])\n\n // Early return AFTER all hooks have been called\n if (latestAlert !== null) {\n return null\n }\n\n const setVideoStreamingAnswer = () => {\n answerIncomingCall()\n // Set view as video streaming answer with a small delay\n setTimeout(() => {\n dispatch.island.setIslandView('streamingAnswer')\n }, 200)\n }\n\n return (\n <div className='pi-bg-red pi-content-center pi-justify-center'>\n <div className={callViewClasses}>\n {shouldShowStreamingImage ? (\n <>\n <div className='pi-flex pi-items-center pi-justify-between'>\n <div className='pi-flex pi-items-center pi-gap-4'>\n {renderStatusIcon()}\n <div className='pi-flex pi-flex-col pi-justify-center pi-space-y-2'>\n <DisplayName />\n <Number />\n </div>\n </div>\n\n <div className='pi-flex pi-gap-2'>\n <Hangup description={t('Tooltip.Hangup')} />\n {!outgoing && (\n <Button\n onClick={() => setVideoStreamingAnswer()}\n variant='green'\n data-tooltip-id='tooltip-answer'\n data-tooltip-content={t('Tooltip.Answer') || ''}\n >\n <FontAwesomeIcon className='pi-w-5 pi-h-5' icon={faPhone} />\n </Button>\n )}\n {/* Open door button - only show if cmdOpen is valid */}\n {unlockData?.canUnlock && (\n <Button\n variant='default'\n onClick={handleStreamingUnlock}\n data-tooltip-id='tooltip-unlock'\n data-tooltip-content={unlockData?.tooltipText}\n >\n <FontAwesomeIcon className='pi-w-5 pi-h-5' icon={faUnlock} />\n </Button>\n )}\n </div>\n </div>\n\n {renderStreamingContent()}\n </>\n ) : (\n <>\n <div className={topContentClasses}>\n {renderStatusIcon()}\n {renderDetails()}\n\n {!isOpen && !accepted && <DisplayName />}\n {!isOpen && accepted && <Timer startTime={startTime} isNotAlwaysWhite />}\n\n {renderAudioIndicator()}\n </div>\n\n {isOpen && (\n <>\n <div className={`${!(isListen || isIntrude) ? 'pi-grid pi-gap-y-5' : ''}`}>\n {accepted && <Actions />}\n <div className={`pi-grid ${getGridClasses} pi-gap-3.5`}>\n <Hangup description={t('Tooltip.Hangup and transfer')} />\n\n {isAnswerVisible(outgoing, accepted) && (\n <Button\n onClick={answerIncomingCall}\n variant='green'\n data-tooltip-id='tooltip-answer-left'\n data-tooltip-content={t('Tooltip.Answer') || ''}\n >\n <FontAwesomeIcon className='pi-w-6 pi-h-6' icon={faPhone} />\n </Button>\n )}\n </div>\n </div>\n </>\n )}\n </>\n )}\n </div>\n <CustomThemedTooltip id='tooltip-answer-left' place='left' />\n <CustomThemedTooltip id='tooltip-answer' place='left' />\n <CustomThemedTooltip id='tooltip-unlock' place='left' />\n <CustomThemedTooltip id='tooltip-display-name' place='bottom' />\n <CustomThemedTooltip id='tooltip-queue' place='bottom' />\n </div>\n )\n}\n\nexport default memo(CallView)\n\nexport interface CallViewProps {}\n"],"names":["isAnswerVisible","outgoing","accepted","Details","memo","_a","children","_b","className","React","createElement","concat","displayName","QueueBadge","label","tooltipContent","undefined","FontAwesomeIcon","icon","faUsers","IncomingQueueBadge","t","useTranslation","dispatch","useDispatch","currentCall","useSelector","state","incoming","startTime","paused","number","isRecording","username","streamingSourceNumber","queueName","queueNumber","throughQueue","island","isOpen","isFromStreaming","remoteAudioStream","webrtc","listenState","listen","isListen","isIntrude","isListenExtension","isIntrudeExtension","alertsData","alerts","currentUser","_c","streaming","videoSources","sourceImages","activeAlerts","useMemo","Object","values","filter","alert","active","latestAlert","length","shouldShowStreamingImage","unlockData","canUnlock","tooltipText","source","find","extension","Boolean","cmdOpen","trim","description","hasValidUsername","queueLabel","queueTooltipContent","shouldShowIncomingQueueBadge","renderLandlinePhoneDiv","useCallback","size","faOfficePhone","default_device","renderPulseIcon","color","sizeClasses","innerSizeClasses","animationSizeClasses","colorClasses","textColorClasses","faCircle","callViewClasses","baseClasses","topContentClasses","itemsAlign","getGridClasses","renderStatusIcon","iconSizeClass","faEarListen","faHandPointUp","Avatar","faArrowLeft","renderDetails","isPhysical","Timer","isNotAlwaysWhite","DisplayName","Number","renderAudioIndicator","AudioBars","audioStream","renderStreamingContent","keys","VideoStreamingSkeleton","id","image","StreamingImage","VideoStreamingEmptyState","Fragment","Hangup","Button","onClick","answerIncomingCall","setTimeout","setIslandView","variant","faPhone","handleStreamingUnlock","faUnlock","Actions","CustomThemedTooltip","place"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/CallView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useMemo, useCallback, memo } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState, Dispatch } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faPhone,\n faEarListen,\n faHandPointUp,\n faArrowLeft,\n faCircle,\n faUnlock,\n faUsers,\n} from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../'\nimport Timer from './Timer'\nimport Number from './Number'\nimport DisplayName from './DisplayName'\nimport { AudioBars } from '../'\nimport { answerIncomingCall } from '../../lib/phone/call'\nimport Avatar from './Avatar'\nimport Actions from './Actions'\nimport Hangup from '../Hangup'\nimport { useTranslation } from 'react-i18next'\nimport { faOfficePhone } from '@nethesis/nethesis-solid-svg-icons'\nimport { isPhysical } from '../../lib/user/default_device'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport StreamingImage from '../StreamingImage'\nimport VideoStreamingSkeleton from '../VideoStreamingSkeleton'\nimport VideoStreamingEmptyState from '../VideoStreamingEmptyState'\nimport { handleStreamingUnlock } from '../../utils'\nimport { useDispatch } from 'react-redux'\n\nfunction isAnswerVisible(outgoing: boolean, accepted: boolean): boolean {\n return !outgoing && !accepted\n}\n\nconst Details = memo(\n ({\n children,\n className = 'pi-gap-1 pi-grid-rows-2',\n }: {\n children: React.ReactNode\n className?: string\n }) => (\n <div className={`pi-grid pi-min-w-0 pi-self-center pi-grid-cols-1 ${className}`}>\n {children}\n </div>\n ),\n)\nDetails.displayName = 'Details'\n\nconst QueueBadge = memo(\n ({\n label,\n tooltipContent,\n }: {\n label: string\n tooltipContent?: string\n }) => {\n if (!label) {\n return null\n }\n\n return (\n <span\n className='pi-inline-flex pi-flex-none pi-items-center pi-justify-center pi-text-iconSecondary'\n data-tooltip-id={tooltipContent ? 'tooltip-queue' : undefined}\n data-tooltip-content={tooltipContent || ''}\n >\n <FontAwesomeIcon icon={faUsers} className='pi-h-4 pi-w-4' />\n </span>\n )\n },\n)\nQueueBadge.displayName = 'QueueBadge'\n\nconst IncomingQueueBadge = memo(\n ({\n label,\n tooltipContent,\n }: {\n label: string\n tooltipContent?: string\n }) => {\n if (!label) {\n return null\n }\n\n return (\n <span\n className='pi-inline-flex pi-w-fit pi-max-w-full pi-flex-none pi-items-center pi-gap-1.5 pi-self-start pi-rounded-full pi-bg-iconSecondary pi-px-2.5 pi-py-1 pi-text-xs pi-font-medium pi-leading-none pi-text-iconWhite dark:pi-bg-iconSecondaryDark'\n data-tooltip-id={tooltipContent ? 'tooltip-queue' : undefined}\n data-tooltip-content={tooltipContent || ''}\n aria-label={tooltipContent || label}\n >\n <FontAwesomeIcon icon={faUsers} className='pi-h-3 pi-w-3 pi-flex-none' />\n <span className='pi-block pi-max-w-28 pi-truncate'>{label}</span>\n </span>\n )\n },\n)\nIncomingQueueBadge.displayName = 'IncomingQueueBadge'\n\n/**\n * The main view to manage calls, the starting point for calls actions flows\n */\nconst CallView: FC<CallViewProps> = () => {\n const { t } = useTranslation()\n const dispatch = useDispatch<Dispatch>()\n\n const currentCall = useSelector((state: RootState) => state.currentCall)\n const {\n incoming,\n accepted,\n outgoing,\n startTime,\n paused,\n number,\n isRecording,\n username,\n streamingSourceNumber,\n queueName,\n queueNumber,\n throughQueue,\n } = currentCall\n\n const { isOpen, isFromStreaming } = useSelector((state: RootState) => state.island)\n const { remoteAudioStream } = useSelector((state: RootState) => state.webrtc)\n const listenState = useSelector((state: RootState) => state.listen)\n const { isListen, isIntrude, isListenExtension, isIntrudeExtension } = listenState\n const { data: alertsData } = useSelector((state: RootState) => state.alerts)\n const currentUser = useSelector((state: RootState) => state.currentUser)\n const { videoSources, sourceImages } = useSelector((state: RootState) => state.streaming)\n\n const activeAlerts = useMemo(\n () => Object.values(alertsData).filter((alert: any) => alert.active),\n [alertsData],\n )\n\n const latestAlert = useMemo(\n () => (activeAlerts.length > 0 ? activeAlerts[activeAlerts.length - 1] : null),\n [activeAlerts],\n )\n\n const shouldShowStreamingImage = useMemo(\n () => isFromStreaming && streamingSourceNumber && !accepted,\n [isFromStreaming, streamingSourceNumber, accepted],\n )\n\n // Check if unlock button should be shown and get tooltip text\n const unlockData = useMemo(() => {\n if (!streamingSourceNumber || !videoSources) return { canUnlock: false, tooltipText: '' }\n\n const source = Object.values(videoSources).find(\n (source) => source?.extension === streamingSourceNumber,\n )\n\n const canUnlock = Boolean(source?.cmdOpen && source?.cmdOpen.trim() !== '')\n const tooltipText =\n canUnlock && source ? `${t('VideoStreaming.Open')}: ${source?.description}` : ''\n\n return { canUnlock, tooltipText }\n }, [streamingSourceNumber, videoSources, t])\n\n const hasValidUsername = useMemo(() => username !== '' && username !== 'undefined', [username])\n\n const queueLabel = useMemo(() => queueName || queueNumber || '', [queueName, queueNumber])\n\n const queueTooltipContent = useMemo(() => {\n if (!throughQueue || !queueLabel) {\n return ''\n }\n\n return `${t('Common.Queue')}: ${queueLabel}`\n }, [throughQueue, queueLabel, t])\n\n const shouldShowIncomingQueueBadge = useMemo(\n () => Boolean(incoming && !accepted && throughQueue && queueLabel),\n [accepted, incoming, throughQueue, queueLabel],\n )\n\n const renderLandlinePhoneDiv = useCallback(\n () => (\n <div className='pi-text-gray-600 dark:pi-text-gray-300 pi-font-normal pi-text-sm pi-flex pi-items-center pi-truncate'>\n <FontAwesomeIcon size='sm' icon={faOfficePhone} className='pi-mr-1' />\n <span className='pi-max-w-16 pi-truncate'>\n {currentUser?.default_device?.description || t('Common.Physical phone')}\n </span>\n </div>\n ),\n [currentUser?.default_device?.description, t],\n )\n\n const renderPulseIcon = useCallback(\n (color: string) => {\n const sizeClasses = !isOpen ? 'pi-h-6 pi-w-6' : 'pi-h-12 pi-w-12'\n const innerSizeClasses = !isOpen ? 'pi-h-4 pi-w-4 pi-rounded-full' : 'pi-h-8'\n const animationSizeClasses = !isOpen ? 'pi-h-6 pi-w-6' : 'pi-w-8 pi-h-8'\n const colorClasses = color === 'red' ? 'pi-bg-red-400' : 'pi-bg-green-400'\n const textColorClasses = color === 'red' ? 'pi-text-red-500' : 'pi-text-green-500'\n\n return (\n <div className={`${sizeClasses} pi-flex pi-justify-center pi-items-center`}>\n <div\n className={`${innerSizeClasses} pi-w-fit pi-flex pi-justify-center pi-items-center pi-gap-1 pi-overflow-hidden`}\n >\n <span\n className={`${animationSizeClasses} pi-animate-ping pi-absolute pi-inline-flex pi-rounded-full ${colorClasses} pi-opacity-75`}\n ></span>\n <FontAwesomeIcon\n className={`pi-w-4 pi-h-6 pi-rotate-45 ${textColorClasses}`}\n icon={faCircle}\n />\n </div>\n </div>\n )\n },\n [isOpen],\n )\n\n const callViewClasses = useMemo(() => {\n let baseClasses = 'pi-grid pi-items-center'\n\n if (isOpen) {\n baseClasses = shouldShowIncomingQueueBadge ? 'pi-grid pi-items-center' : 'pi-grid pi-items-start'\n\n if (accepted) {\n baseClasses += ' pi-grid-rows-[72px_1fr]'\n } else if (incoming) {\n baseClasses += ' pi-grid-cols-[256px_114px]'\n } else if (outgoing) {\n baseClasses += ' pi-grid-cols-[1fr_84px]'\n }\n }\n\n return shouldShowStreamingImage ? 'pi-flex pi-flex-col' : baseClasses\n }, [isOpen, accepted, incoming, outgoing, shouldShowStreamingImage, shouldShowIncomingQueueBadge])\n\n const topContentClasses = useMemo(() => {\n let columns = ''\n\n if (isOpen && !accepted && outgoing) {\n columns = 'pi-grid-cols-[48px_1fr]'\n } else if (isOpen && !accepted && incoming) {\n columns = 'pi-grid-cols-[48px_1fr_1px]'\n } else if (isOpen && accepted) {\n columns = 'pi-grid-cols-[48px_164px_48px]'\n } else if (!isOpen && !accepted) {\n columns = 'pi-grid-cols-[24px_102px]'\n } else {\n columns = 'pi-grid-cols-[24px_66px_24px]'\n }\n\n const itemsAlign = isOpen && !shouldShowIncomingQueueBadge ? 'start' : 'center'\n\n return `pi-grid ${columns} pi-gap-${isOpen ? '5' : '3'} pi-items-${itemsAlign} pi-justify-center pi-w-full`\n }, [isOpen, accepted, incoming, outgoing, shouldShowIncomingQueueBadge])\n\n const getGridClasses = useMemo(() => {\n if (shouldShowStreamingImage) return 'pi-grid-cols-3'\n if (isAnswerVisible(outgoing, accepted)) return 'pi-grid-cols-2'\n if (accepted) return 'pi-grid-cols-1 pi-justify-items-center'\n return 'pi-grid-cols-1 pi-justify-items-end'\n }, [shouldShowStreamingImage, outgoing, accepted])\n\n const renderStatusIcon = useCallback(() => {\n const iconSizeClass = isOpen\n ? 'pi-relative pi-z-30 pi-h-12 pi-w-12 pi-rounded-sm pi-bg-cover'\n : 'pi-relative pi-z-30 pi-h-6 pi-w-6 pi-rounded-sm pi-bg-cover'\n\n if (isListen) {\n return <FontAwesomeIcon className={iconSizeClass} icon={faEarListen} />\n }\n\n if (isIntrude) {\n return <FontAwesomeIcon className={iconSizeClass} icon={faHandPointUp} />\n }\n\n if (number !== '' && hasValidUsername) {\n return <Avatar />\n }\n\n if (incoming && !hasValidUsername) {\n return <FontAwesomeIcon className={`${iconSizeClass} pi--rotate-45`} icon={faArrowLeft} />\n }\n\n if (accepted && !outgoing && !hasValidUsername) {\n return <FontAwesomeIcon className={`${iconSizeClass} pi--rotate-45`} icon={faArrowLeft} />\n }\n\n if (outgoing && !hasValidUsername) {\n return (\n <FontAwesomeIcon className={`${iconSizeClass} pi-rotate-[135deg]`} icon={faArrowLeft} />\n )\n }\n\n return null\n }, [isOpen, isListen, isIntrude, number, hasValidUsername, incoming, outgoing, accepted])\n\n const renderDetails = useCallback(() => {\n if (!isOpen) return null\n\n if (isIntrude) {\n return (\n <Details>\n <span className='pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base'>\n {t('Common.Intrude')}\n {isIntrudeExtension ? ` - ${isIntrudeExtension}` : ''}\n </span>\n {accepted ? (\n !isPhysical() ? (\n <Timer startTime={startTime} isNotAlwaysWhite />\n ) : (\n renderLandlinePhoneDiv()\n )\n ) : isIntrudeExtension ? (\n `${isIntrudeExtension}`\n ) : (\n ''\n )}\n </Details>\n )\n }\n\n if (isListen) {\n return (\n <Details>\n <span className='pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base'>\n {t('Common.Listen')}\n {isListenExtension ? ` - ${isListenExtension}` : ''}\n </span>\n {accepted ? (\n !isPhysical() ? (\n <Timer startTime={startTime} isNotAlwaysWhite />\n ) : (\n renderLandlinePhoneDiv()\n )\n ) : isListenExtension ? (\n `${isListenExtension}`\n ) : (\n ''\n )}\n </Details>\n )\n }\n\n if (shouldShowIncomingQueueBadge) {\n return (\n <Details className='pi-grid-rows-[20px_24px_24px] pi-gap-0.5'>\n <IncomingQueueBadge label={queueLabel} tooltipContent={queueTooltipContent} />\n <DisplayName />\n <Number />\n </Details>\n )\n }\n\n return (\n <Details>\n {accepted && throughQueue && queueLabel ? (\n <div className='pi-flex pi-min-w-0 pi-items-center pi-gap-2'>\n <div className='pi-min-w-0 pi-flex-1'>\n <DisplayName />\n </div>\n <QueueBadge label={queueLabel} tooltipContent={queueTooltipContent} />\n </div>\n ) : (\n <DisplayName />\n )}\n {accepted ? (\n !isPhysical() ? (\n <Timer startTime={startTime} isNotAlwaysWhite />\n ) : (\n renderLandlinePhoneDiv()\n )\n ) : (\n <Number />\n )}\n </Details>\n )\n }, [\n isOpen,\n isIntrude,\n isListen,\n accepted,\n startTime,\n isIntrudeExtension,\n isListenExtension,\n t,\n renderLandlinePhoneDiv,\n accepted,\n throughQueue,\n queueLabel,\n queueTooltipContent,\n shouldShowIncomingQueueBadge,\n ])\n\n const renderAudioIndicator = useCallback(() => {\n if (accepted && isRecording) {\n return renderPulseIcon('red')\n }\n\n if (accepted && remoteAudioStream && !isPhysical()) {\n return (\n <AudioBars\n audioStream={remoteAudioStream}\n paused={paused}\n size={isOpen ? 'large' : 'small'}\n />\n )\n }\n\n if (accepted && isPhysical()) {\n return renderPulseIcon('green')\n }\n\n return null\n }, [accepted, isRecording, remoteAudioStream, isOpen, paused, renderPulseIcon])\n\n const renderStreamingContent = useCallback(() => {\n // Show skeleton while videoSources are loading or if streaming source number is not set yet\n if (!videoSources || Object.keys(videoSources).length === 0 || !streamingSourceNumber) {\n return <VideoStreamingSkeleton className='pi-w-full pi-h-40 pi-mt-4' />\n }\n\n // Find the streaming source\n const source = Object.values(videoSources).find(\n (source) => source.extension === streamingSourceNumber,\n )\n\n // If source doesn't exist, show empty state\n if (!source) {\n return <VideoStreamingEmptyState className='pi-w-full pi-h-40 pi-mt-4' />\n }\n\n // Check if image is available\n const hasImage = sourceImages[source.id] || source.image\n\n // If no image available, show empty state\n if (!hasImage) {\n return <VideoStreamingEmptyState className='pi-w-full pi-h-40 pi-mt-4' />\n }\n\n // If we have an image, show StreamingImage component\n return <StreamingImage />\n }, [streamingSourceNumber, videoSources, sourceImages])\n\n // Early return AFTER all hooks have been called\n if (latestAlert !== null) {\n return null\n }\n\n const setVideoStreamingAnswer = () => {\n answerIncomingCall()\n // Set view as video streaming answer with a small delay\n setTimeout(() => {\n dispatch.island.setIslandView('streamingAnswer')\n }, 200)\n }\n\n return (\n <div className='pi-bg-red pi-content-center pi-justify-center'>\n <div className={callViewClasses}>\n {shouldShowStreamingImage ? (\n <>\n <div className='pi-flex pi-items-center pi-justify-between pi-w-full pi-gap-2'>\n <div className='pi-flex pi-items-center pi-gap-4 pi-min-w-0 pi-flex-1'>\n {renderStatusIcon()}\n <div className='pi-flex pi-flex-col pi-justify-center pi-space-y-2 pi-min-w-0'>\n <DisplayName />\n <Number />\n </div>\n </div>\n\n <div className='pi-flex pi-gap-2 pi-flex-shrink-0'>\n <Hangup description={t('Tooltip.Hangup')} />\n {!outgoing && (\n <Button\n onClick={() => setVideoStreamingAnswer()}\n variant='green'\n data-tooltip-id='tooltip-answer'\n data-tooltip-content={t('Tooltip.Answer') || ''}\n >\n <FontAwesomeIcon className='pi-w-5 pi-h-5' icon={faPhone} />\n </Button>\n )}\n {/* Open door button - only show if cmdOpen is valid */}\n {unlockData?.canUnlock && (\n <Button\n variant='default'\n onClick={handleStreamingUnlock}\n data-tooltip-id='tooltip-unlock'\n data-tooltip-content={unlockData?.tooltipText}\n >\n <FontAwesomeIcon className='pi-w-5 pi-h-5' icon={faUnlock} />\n </Button>\n )}\n </div>\n </div>\n\n {renderStreamingContent()}\n </>\n ) : (\n <>\n <div className={topContentClasses}>\n {renderStatusIcon()}\n {renderDetails()}\n\n {!isOpen && !accepted && <DisplayName />}\n {!isOpen && accepted && <Timer startTime={startTime} isNotAlwaysWhite />}\n\n {renderAudioIndicator()}\n </div>\n\n {isOpen && (\n <>\n <div className={`${!(isListen || isIntrude) ? 'pi-grid pi-gap-y-5' : ''}`}>\n {accepted && <Actions />}\n <div className={`pi-grid ${getGridClasses} pi-gap-3.5`}>\n <Hangup description={t('Tooltip.Hangup and transfer')} />\n\n {isAnswerVisible(outgoing, accepted) && (\n <Button\n onClick={answerIncomingCall}\n variant='green'\n data-tooltip-id='tooltip-answer-left'\n data-tooltip-content={t('Tooltip.Answer') || ''}\n >\n <FontAwesomeIcon className='pi-w-6 pi-h-6' icon={faPhone} />\n </Button>\n )}\n </div>\n </div>\n </>\n )}\n </>\n )}\n </div>\n <CustomThemedTooltip id='tooltip-answer-left' place='left' />\n <CustomThemedTooltip id='tooltip-answer' place='left' />\n <CustomThemedTooltip id='tooltip-unlock' place='left' />\n <CustomThemedTooltip id='tooltip-display-name' place='bottom' />\n <CustomThemedTooltip id='tooltip-queue' place='bottom' />\n </div>\n )\n}\n\nexport default memo(CallView)\n\nexport interface CallViewProps {}\n"],"names":["isAnswerVisible","outgoing","accepted","Details","memo","_a","children","_b","className","React","createElement","concat","displayName","QueueBadge","label","tooltipContent","undefined","FontAwesomeIcon","icon","faUsers","IncomingQueueBadge","t","useTranslation","dispatch","useDispatch","currentCall","useSelector","state","incoming","startTime","paused","number","isRecording","username","streamingSourceNumber","queueName","queueNumber","throughQueue","island","isOpen","isFromStreaming","remoteAudioStream","webrtc","listenState","listen","isListen","isIntrude","isListenExtension","isIntrudeExtension","alertsData","alerts","currentUser","_c","streaming","videoSources","sourceImages","activeAlerts","useMemo","Object","values","filter","alert","active","latestAlert","length","shouldShowStreamingImage","unlockData","canUnlock","tooltipText","source","find","extension","Boolean","cmdOpen","trim","description","hasValidUsername","queueLabel","queueTooltipContent","shouldShowIncomingQueueBadge","renderLandlinePhoneDiv","useCallback","size","faOfficePhone","default_device","renderPulseIcon","color","sizeClasses","innerSizeClasses","animationSizeClasses","colorClasses","textColorClasses","faCircle","callViewClasses","baseClasses","topContentClasses","itemsAlign","getGridClasses","renderStatusIcon","iconSizeClass","faEarListen","faHandPointUp","Avatar","faArrowLeft","renderDetails","isPhysical","Timer","isNotAlwaysWhite","DisplayName","Number","renderAudioIndicator","AudioBars","audioStream","renderStreamingContent","keys","VideoStreamingSkeleton","id","image","StreamingImage","VideoStreamingEmptyState","Fragment","Hangup","Button","onClick","answerIncomingCall","setTimeout","setIslandView","variant","faPhone","handleStreamingUnlock","faUnlock","Actions","CustomThemedTooltip","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"),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"),q=require("../lib/phone/queue.js"),y=require("../lib/phone/trunk.js"),w=require("../node_modules/react-redux/es/hooks/useDispatch.js");function C(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=C(n);exports.Socket=function(C){var N=C.hostName,I=C.username,T=C.authToken,j=C.reload,U=C.reloadedCallback,D=C.children,x=C.uaType,E=w.useDispatch(),P=n.useRef(),O=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(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;Q.current={linkedid:n,uniqueid:t},O.current.emit("start_transcription",{linkedid:n,uniqueid:t})}})),a.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;Q.current={linkedid:null,uniqueid:null},O.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)}))}},w=function(e){return(e||"").replace(/\D/g,"")},C=function(e){var n=i.getDisplayName(e),t=((null==e?void 0:e.counterpartNum)||"").trim();return n&&n!==t?n:(t?R.current.get(w(t)):void 0)||n},_=function(e){return q.getCurrentCallQueueContext(e,v.store.getState().queue)},j=function(e,n){var t=v.store.getState().currentCall,r=(null==n?void 0:n.queueId)||t.queueId||"",i=(null==n?void 0:n.queueName)||t.queueName||"",o=(null==n?void 0:n.queueNumber)||t.queueNumber||"";return{conversationId:e.id,linkedId:e.linkedId,uniqueId:e.uniqueId,ownerExtension:e.owner,number:"".concat(e.counterpartNum||""),queueId:r,queueName:i,queueNumber:o,queuePosition:(null==n?void 0:n.queuePosition)||"",queueWaitingTime:(null==n?void 0:n.queueWaitingTime)||0}},U=function(e){var n,t,r,i;if(e){var o=_(e),u=j(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},D=function(e){return(null==e?void 0:e.linkedId)||(null==e?void 0:e.linkedid)||""},W=function(e){return(null==e?void 0:e.uniqueId)||(null==e?void 0:e.uniqueid)||""},B=function(e){return!!(null==e?void 0:e.connected)&&!!D(e)&&!!W(e)},K=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=B(t),a=B(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(B(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&&B(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||{})})},z=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,q=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==q?void 0:q.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;var D=_(t),P=j(t,D);U(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=w(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=w(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;w(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:C(t),number:"".concat(t.counterpartNum),incomingSocket:!0,incoming:!0,throughQueue:Boolean(P.queueId||P.queueName||P.queueNumber),queueId:P.queueId,queueName:P.queueName,queueNumber:P.queueNumber,queuePosition:P.queuePosition,queueWaitingTime:P.queueWaitingTime,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 O=v.store.getState().paramUrl.openParamUrlType,A=v.store.getState().island.urlOpened;if("ringing"===O&&!A){var V=y.isFromTrunk(t.counterpartNum);v.store.dispatch.paramUrl.setThroughTrunk(V),v.store.dispatch.island.setUrlOpened(!1),s.eventDispatch("phone-island-url-parameter-opened",{counterpartNum:t.counterpartNum,counterpartName:C(t),owner:t.owner,uniqueId:t.uniqueId,linkedId:t.linkedId,throughQueue:t.throughQueue,throughTrunk:V,direction:t.direction,connected:t.connected})}break;case"busy":if(U(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:C(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:C(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 M=d.find((function(e){return e.number===t.counterpartNum}));!t.connected&&M&&(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":U(t);var Q=t.counterpartName,W=t.counterpartNum,B=t.startTime;c&&W&&Q&&"<unknown>"!==Q&&(E.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:W,startTime:"".concat(b.getTimestampInSeconds())}),E.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:W,startTime:"".concat(B/1e3),conversationId:t.id}),E.island.setIslandView("call"));break;case"busy_ringing":s.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&k.userTotallyFree()&&(U(null),E.player.stopAudioPlayer(),E.currentCall.reset(),E.listen.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"),O.current=t.io("https://"+N,n),E.websocket.update({socket:O.current}),O.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(O.current.id)),s.eventDispatch("phone-island-socket-connected",{})})),O.current.on("disconnect",(function(e){console.debug("Socket disconnect - reason: ".concat(e)),P.current&&(clearInterval(P.current),P.current=null),e.includes("server disconnect")?s.eventDispatch("phone-island-server-disconnected",{}):s.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,s.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: "+N+" is connected!"),O.current.emit("login",{accessKeyId:"".concat(I),token:T,uaType:x})})),O.current.on("authe_ok",(function(){console.debug("Socket authentication success!"),s.eventDispatch("phone-island-socket-authorized",{}),P.current&&clearInterval(P.current),P.current=setInterval((function(){O.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(O.current.connected)),setTimeout((function(){var e,n,t=O.current.connected&&A.current>=3;if(!O.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"),O.current.disconnect()),E.alerts.setAlert("socket_down"),s.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}}),0)}),5e3))}),5e3)})),O.current.on("userMainPresenceUpdate",(function(n){v.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),h.dispatchMainPresence(n)})),O.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=K(f).conversation,k=D(b),S=W(b),q=(null==b?void 0:b.connected)||!1;if(S&&k&&q&&(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 y=v.store.getState().conference,w=y.usersList,C=y.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).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,j=I.username,U=((null==T?void 0:T.extension)||[]).map((function(e){return e.id})),x=v.store.getState().currentCall,E=x.incoming,P=x.accepted,O=x.transferring,F=v.store.getState().conference,A=F.isActive,V=F.conferenceStartedFrom;!(E&&e.callerNum&&U.includes(e.callerNum))&&(!P||A||O)&&(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),A&&V===j&&setTimeout((function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var R=v.store.getState().conference,L=R.isActive,Q=R.conferenceStartedFrom,B=v.store.getState().currentUser.username;if(L&&Q===B){var z=v.store.getState().conference;w=z.usersList,C=z.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).length>0,_||N?(setTimeout((function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),C&&C[e.callerNum]&&v.store.dispatch.conference.removePendingUser(e.callerNum)):v.store.dispatch.conference.resetConference()}}})),O.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}))})),O.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){B(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 q=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)}));q||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&&(z(e,b),E.currentUser.updateConversations(e))})),O.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&&U(i),h.dispatchQueueUpdate(e)})),O.current.on("queueMemberUpdate",(function(e){E.queue.updateQueueMember(e),h.dispatchQueueMemberUpdate(e)})),O.current.on("takeOver",(function(){h.dispatchAlreadyLogin()})),O.current.on("serverReloaded",(function(){h.dispatchServerReload()})),O.current.on("parkingUpdate",(function(e){h.dispatchParkingUpdate(e)})),O.current.on("actionNethLink",(function(e,n){h.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&&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"})})),O.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)}})),O.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()}}})),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=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)}})),O.current.on("confBridgeEnd",(function(e){e&&(null==e?void 0:e.id)&&(v.store.dispatch.conference.resetConference(),s.eventDispatch("phone-island-conference-finished",{}))})),O.current.on("callWebrtc",(function(e){s.eventDispatch("phone-island-call-start",{number:e})})),O.current.on("newVoiceMessageCounter",(function(e){s.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})})),O.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})}}})),O.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(P.current),R.current.clear(),L.current.clear(),O.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),P.current&&(clearInterval(P.current),P.current=null),setTimeout((function(){O.current.disconnect(),O.current.connect(),U()}),100)):(console.info("Socket already connected (no alert active), skipping reconnection"),U())}}),[j]),_.default.createElement(_.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/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"),q=require("../lib/phone/queue.js"),y=require("../lib/phone/trunk.js"),w=require("../node_modules/react-redux/es/hooks/useDispatch.js");function C(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=C(n);exports.Socket=function(C){var N=C.hostName,I=C.username,T=C.authToken,j=C.reload,U=C.reloadedCallback,D=C.children,x=C.uaType,E=w.useDispatch(),P=n.useRef(),O=n.useRef(),A=n.useRef(!1),F=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(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;Q.current={linkedid:n,uniqueid:t},O.current.emit("start_transcription",{linkedid:n,uniqueid:t})}})),a.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;Q.current={linkedid:null,uniqueid:null},O.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)}))}},w=function(e){return(e||"").replace(/\D/g,"")},C=function(e){var n=i.getDisplayName(e),t=((null==e?void 0:e.counterpartNum)||"").trim();return n&&n!==t?n:(t?R.current.get(w(t)):void 0)||n},_=function(e){return q.getCurrentCallQueueContext(e,v.store.getState().queue)},j=function(e,n){var t=v.store.getState().currentCall,r=(null==n?void 0:n.queueId)||t.queueId||"",i=(null==n?void 0:n.queueName)||t.queueName||"",o=(null==n?void 0:n.queueNumber)||t.queueNumber||"";return{conversationId:e.id,linkedId:e.linkedId,uniqueId:e.uniqueId,ownerExtension:e.owner,number:"".concat(e.counterpartNum||""),queueId:r,queueName:i,queueNumber:o,queuePosition:(null==n?void 0:n.queuePosition)||"",queueWaitingTime:(null==n?void 0:n.queueWaitingTime)||0}},U=function(e){var n,t,r,i;if(e){var o=_(e),u=j(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},D=function(e){return(null==e?void 0:e.linkedId)||(null==e?void 0:e.linkedid)||""},W=function(e){return(null==e?void 0:e.uniqueId)||(null==e?void 0:e.uniqueid)||""},B=function(e){return!!(null==e?void 0:e.connected)&&!!D(e)&&!!W(e)},K=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=B(t),a=B(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(B(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&&B(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||{})})},z=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,q=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==q?void 0:q.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;var D=_(t),P=j(t,D);U(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=w(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=w(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;w(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:C(t),number:"".concat(t.counterpartNum),incomingSocket:!0,incoming:!0,throughQueue:Boolean(P.queueId||P.queueName||P.queueNumber),queueId:P.queueId,queueName:P.queueName,queueNumber:P.queueNumber,queuePosition:P.queuePosition,queueWaitingTime:P.queueWaitingTime,username:"".concat(f&&f[t.counterpartNum]&&f[t.counterpartNum].username)||"",ownerExtension:t.owner}),v.store.dispatch.island.setIslandView("call")),A.current||(A.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(){A.current=!1}),100)})));var O=v.store.getState().paramUrl.openParamUrlType,F=v.store.getState().island.urlOpened;if("ringing"===O&&!F){var V=y.isFromTrunk(t.counterpartNum);v.store.dispatch.paramUrl.setThroughTrunk(V),v.store.dispatch.island.setUrlOpened(!1),s.eventDispatch("phone-island-url-parameter-opened",{counterpartNum:t.counterpartNum,counterpartName:C(t),owner:t.owner,uniqueId:t.uniqueId,linkedId:t.linkedId,throughQueue:t.throughQueue,throughTrunk:V,direction:t.direction,connected:t.connected})}break;case"busy":if(U(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:C(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:C(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 M=d.find((function(e){return e.number===t.counterpartNum}));!t.connected&&M&&(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":U(t);var Q=t.counterpartName,W=t.counterpartNum,B=t.startTime;c&&W&&Q&&"<unknown>"!==Q&&(E.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:W,startTime:"".concat(b.getTimestampInSeconds())}),E.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:W,startTime:"".concat(B/1e3),conversationId:t.id}),E.island.setIslandView("call"));break;case"busy_ringing":s.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&k.userTotallyFree()&&(U(null),E.player.stopAudioPlayer(),E.currentCall.reset(),E.listen.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"),O.current=t.io("https://"+N,n),E.websocket.update({socket:O.current}),O.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(O.current.id)),s.eventDispatch("phone-island-socket-connected",{})})),O.current.on("disconnect",(function(e){console.debug("Socket disconnect - reason: ".concat(e)),P.current&&(clearInterval(P.current),P.current=null),e.includes("server disconnect")?s.eventDispatch("phone-island-server-disconnected",{}):s.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){F.current=0,s.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: "+N+" is connected!"),O.current.emit("login",{accessKeyId:"".concat(I),token:T,uaType:x})})),O.current.on("authe_ok",(function(){console.debug("Socket authentication success!"),s.eventDispatch("phone-island-socket-authorized",{}),P.current&&clearInterval(P.current),P.current=setInterval((function(){O.current.volatile.emit("ping",l.withTimeout((function(){F.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(){F.current++,console.debug("Socket ping timeout (".concat(F.current,"/").concat(3,"), connected: ").concat(O.current.connected)),setTimeout((function(){var e,n,t=O.current.connected&&F.current>=3;if(!O.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"),O.current.disconnect(),O.current.connect()),E.alerts.setAlert("socket_down"),s.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}}),0)}),5e3))}),5e3)})),O.current.on("userMainPresenceUpdate",(function(n){v.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),h.dispatchMainPresence(n)})),O.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=K(f).conversation,k=D(b),S=W(b),q=(null==b?void 0:b.connected)||!1;if(S&&k&&q&&(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 y=v.store.getState().conference,w=y.usersList,C=y.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).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,j=I.username,U=((null==T?void 0:T.extension)||[]).map((function(e){return e.id})),x=v.store.getState().currentCall,E=x.incoming,P=x.accepted,O=x.transferring,A=v.store.getState().conference,F=A.isActive,V=A.conferenceStartedFrom;!(E&&e.callerNum&&U.includes(e.callerNum))&&(!P||F||O)&&(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),F&&V===j&&setTimeout((function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var R=v.store.getState().conference,L=R.isActive,Q=R.conferenceStartedFrom,B=v.store.getState().currentUser.username;if(L&&Q===B){var z=v.store.getState().conference;w=z.usersList,C=z.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).length>0,_||N?(setTimeout((function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})}),800),C&&C[e.callerNum]&&v.store.dispatch.conference.removePendingUser(e.callerNum)):v.store.dispatch.conference.resetConference()}}})),O.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}))})),O.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){B(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 q=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)}));q||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&&(z(e,b),E.currentUser.updateConversations(e))})),O.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&&U(i),h.dispatchQueueUpdate(e)})),O.current.on("queueMemberUpdate",(function(e){E.queue.updateQueueMember(e),h.dispatchQueueMemberUpdate(e)})),O.current.on("takeOver",(function(){h.dispatchAlreadyLogin()})),O.current.on("serverReloaded",(function(){h.dispatchServerReload()})),O.current.on("parkingUpdate",(function(e){h.dispatchParkingUpdate(e)})),O.current.on("actionNethLink",(function(e,n){h.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&&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"})})),O.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)}})),O.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()}}})),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=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)}})),O.current.on("confBridgeEnd",(function(e){e&&(null==e?void 0:e.id)&&(v.store.dispatch.conference.resetConference(),s.eventDispatch("phone-island-conference-finished",{}))})),O.current.on("callWebrtc",(function(e){s.eventDispatch("phone-island-call-start",{number:e})})),O.current.on("newVoiceMessageCounter",(function(e){s.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})})),O.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})}}})),O.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(P.current),R.current.clear(),L.current.clear(),O.current.close()}}),[N,I,T,x,E]),n.useEffect((function(){var e,n;if(j){console.info("Socket reload requested");var t=v.store.getState().alerts.data,r=v.store.getState().island.forceReload,i=(null===(e=t.socket_down)||void 0===e?void 0:e.active)||!1,o=!(null===(n=O.current)||void 0===n?void 0:n.connected);i||o||r?(console.info(r?"Force reload requested, performing Socket reconnection":"Socket down detected (alert active or disconnected), performing reconnection"),P.current&&(clearInterval(P.current),P.current=null),setTimeout((function(){O.current.disconnect(),O.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