@nethesis/phone-island 0.8.29 → 0.8.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/App.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("./components/Events.js"),n=require("./components/Socket.js"),s=require("./components/WebRTC.js"),a=require("./components/Island.js"),i=require("./components/RestAPI.js"),o=require("./utils/customHooks/useEventListener.js"),r=require("./utils/genericFunctions/eventDispatch.js"),d=require("./utils/genericFunctions/localStorage.js");require("./node_modules/react-redux/es/index.js");var u=require("./store/index.js");require("./node_modules/@fortawesome/react-fontawesome/index.es.js"),require("./node_modules/i18next/dist/esm/i18next.js");var c=require("./node_modules/js-base64/base64.mjs.js"),l=require("./workers/wake_up.js"),p=require("./lib/i18n.js");require("./node_modules/react-tooltip/dist/react-tooltip.min.css.js");var h=require("./lib/webrtc/messages.js"),v=require("./lib/darkTheme.js"),f=require("./services/user.js"),m=require("./node_modules/react-redux/es/components/Provider.js");function g(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("./node_modules/react-redux/node_modules/react-is/index.js"),require("./node_modules/react-redux/es/components/Context.js");var j=g(e),E=function(g){var E=g.dataConfig,I=g.i18nLoadPath,q=void 0===I?void 0:I,D=g.showAlways,k=void 0!==D&&D,S=g.uaType,w=c.Base64.atob(E||"").split(":"),x=w[0],b=w[1],y=w[2],L=w[3],_=w[4],T=w[5],O=w[6],C=e.useState(!1),P=C[0],A=C[1],N=e.useState(!1),R=N[0],V=N[1],F=e.useState(!1),H=F[0],J=F[1];e.useEffect((function(){var e=new Worker(l.default,{type:"module"});return e.onmessage=function(e){"wakeup"===e.data&&A(!0)},function(){e.terminate()}}),[]),e.useEffect((function(){H&&R&&(A(!1),V(!1),J(!1))}),[H,R]),o.useEventListener("phone-island-expand",(function(){u.store.dispatch.island.toggleIsOpen(!0),r.eventDispatch("phone-island-expanded",{})})),o.useEventListener("phone-island-compress",(function(){u.store.dispatch.island.toggleIsOpen(!1),r.eventDispatch("phone-island-compressed",{})})),o.useEventListener("phone-island-call-keypad-close",(function(){u.store.dispatch.island.setIslandView("call"),r.eventDispatch("phone-island-call-keypad-closed",{})})),o.useEventListener("phone-island-call-transfer-close",(function(){u.store.dispatch.island.setIslandView("call"),r.eventDispatch("phone-island-call-transfer-closed",{})})),o.useEventListener("phone-island-recording-close",(function(){u.store.dispatch.island.setIslandView(null),r.eventDispatch("phone-island-recording-closed",{})})),o.useEventListener("phone-island-audio-player-close",(function(){u.store.dispatch.island.setIslandView(null),r.eventDispatch("phone-island-audio-player-closed",{})})),o.useEventListener("phone-island-detach",(function(e){h.detach(),u.store.dispatch.currentUser.updateCurrentDefaultDevice(null==e?void 0:e.deviceInformationObject),r.eventDispatch("phone-island-detached",{})})),o.useEventListener("phone-island-audio-input-change",(function(e){d.setJSONItem("phone-island-audio-input-device",{deviceId:e.deviceId}),r.eventDispatch("phone-island-audio-input-changed",{})})),o.useEventListener("phone-island-audio-output-change",(function(e){var t=u.store.getState().player.remoteAudio;null==t||t.current.setSinkId(e.deviceId).then((function(){console.info("Default audio output device change with success!"),d.setJSONItem("phone-island-audio-output-device",{deviceId:e.deviceId}),r.eventDispatch("phone-island-audio-output-changed",{})})).catch((function(e){console.error("Default audio output device change error:",e)}))})),o.useEventListener("phone-island-presence-change",(function(e){f.changeOperatorStatus(e),r.eventDispatch("phone-island-presence-changed",{})}));var W=e.useState(!0),U=W[0],B=W[1],M=e.useState(!0),z=M[0],G=M[1];e.useEffect((function(){U&&(p.loadI18n(q),B(!1))}),[U]);var K=u.store.getState().player.remoteAudio;return e.useEffect((function(){var e;if(z&&K){var t=null===(e=d.getJSONItem("phone-island-audio-output-device"))||void 0===e?void 0:e.deviceId;r.eventDispatch("phone-island-audio-output-change",{deviceId:t}),G(!1)}}),[z,K]),e.useEffect((function(){v.checkDarkTheme()}),[]),o.useEventListener("phone-island-theme-change",(function(e){v.setTheme(null==e?void 0:e.selectedTheme)})),o.useEventListener("phone-island-default-device-change",(function(e){u.store.dispatch.currentUser.updateCurrentDefaultDevice(null==e?void 0:e.deviceInformationObject),r.eventDispatch("phone-island-default-device-changed",{})})),o.useEventListener("phone-island-alert",(function(e){u.store.dispatch.alerts.setAlert(e.toString())})),j.default.createElement(j.default.Fragment,null,j.default.createElement(m.default,{store:u.store},j.default.createElement(s.WebRTC,{hostName:x,sipExten:L,sipSecret:_,sipHost:T,sipPort:O,reload:P,reloadedCallback:function(){return V(!0)},uaType:S},j.default.createElement(i.RestAPI,{hostName:x,username:b,authToken:y},j.default.createElement(n.Socket,{hostName:x,username:b,authToken:y,reload:P,reloadedCallback:function(){return J(!0)},uaType:S},j.default.createElement(t.Events,{sipHost:T},j.default.createElement(a.Island,{showAlways:k})))))))};E.displayName="PhoneIsland",exports.PhoneIsland=E;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("./components/Events.js"),n=require("./components/Socket.js"),s=require("./components/WebRTC.js"),i=require("./components/Island.js"),a=require("./components/RestAPI.js"),o=require("./utils/customHooks/useEventListener.js"),r=require("./utils/genericFunctions/eventDispatch.js"),d=require("./utils/genericFunctions/localStorage.js");require("./node_modules/react-redux/es/index.js");var u=require("./store/index.js");require("./node_modules/@fortawesome/react-fontawesome/index.es.js"),require("./node_modules/i18next/dist/esm/i18next.js");var c=require("./node_modules/js-base64/base64.mjs.js"),l=require("./workers/wake_up.js"),p=require("./lib/i18n.js");require("./node_modules/react-tooltip/dist/react-tooltip.min.css.js");var h=require("./lib/webrtc/messages.js"),v=require("./lib/darkTheme.js"),f=require("./services/user.js"),m=require("./utils/genericFunctions/isEmpty.js"),g=require("./node_modules/react-redux/es/components/Provider.js");function E(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("./node_modules/react-redux/node_modules/react-is/index.js"),require("./node_modules/react-redux/es/components/Context.js");var j=E(e),I=function(E){var I=E.dataConfig,q=E.i18nLoadPath,D=void 0===q?void 0:q,S=E.showAlways,k=void 0!==S&&S,y=E.uaType,w=c.Base64.atob(I||"").split(":"),x=w[0],L=w[1],b=w[2],P=w[3],_=w[4],T=w[5],O=w[6],C=e.useState(!1),A=C[0],N=C[1],U=e.useState(!1),F=U[0],R=U[1],V=e.useState(!1),H=V[0],J=V[1];e.useEffect((function(){var e=new Worker(l.default,{type:"module"});return e.onmessage=function(e){"wakeup"===e.data&&N(!0)},function(){e.terminate()}}),[]),e.useEffect((function(){H&&F&&(N(!1),R(!1),J(!1))}),[H,F]),o.useEventListener("phone-island-expand",(function(){u.store.dispatch.island.toggleIsOpen(!0),r.eventDispatch("phone-island-expanded",{})})),o.useEventListener("phone-island-compress",(function(){u.store.dispatch.island.toggleIsOpen(!1),r.eventDispatch("phone-island-compressed",{})})),o.useEventListener("phone-island-call-keypad-close",(function(){u.store.dispatch.island.setIslandView("call"),r.eventDispatch("phone-island-call-keypad-closed",{})})),o.useEventListener("phone-island-call-transfer-close",(function(){u.store.dispatch.island.setIslandView("call"),r.eventDispatch("phone-island-call-transfer-closed",{})})),o.useEventListener("phone-island-recording-close",(function(){u.store.dispatch.island.setIslandView(null),r.eventDispatch("phone-island-recording-closed",{})})),o.useEventListener("phone-island-audio-player-close",(function(){u.store.dispatch.island.setIslandView(null),r.eventDispatch("phone-island-audio-player-closed",{})})),o.useEventListener("phone-island-detach",(function(e){h.detach(),u.store.dispatch.currentUser.updateCurrentDefaultDevice(null==e?void 0:e.deviceInformationObject),r.eventDispatch("phone-island-detached",{})})),o.useEventListener("phone-island-audio-input-change",(function(e){d.setJSONItem("phone-island-audio-input-device",{deviceId:e.deviceId}),r.eventDispatch("phone-island-audio-input-changed",{})})),o.useEventListener("phone-island-audio-output-change",(function(e){var t=u.store.getState().player.remoteAudio;null==t||t.current.setSinkId(e.deviceId).then((function(){console.info("Default audio output device change with success!"),d.setJSONItem("phone-island-audio-output-device",{deviceId:e.deviceId}),r.eventDispatch("phone-island-audio-output-changed",{})})).catch((function(e){console.error("Default audio output device change error:",e)}))})),o.useEventListener("phone-island-presence-change",(function(e){f.changeOperatorStatus(e),r.eventDispatch("phone-island-presence-changed",{})}));var W=e.useState(!0),M=W[0],B=W[1],z=e.useState(!0),G=z[0],K=z[1];e.useEffect((function(){M&&(p.loadI18n(D),B(!1))}),[M]);var Q=u.store.getState().player.remoteAudio;return e.useEffect((function(){var e;if(G&&Q){var t=null===(e=d.getJSONItem("phone-island-audio-output-device"))||void 0===e?void 0:e.deviceId;r.eventDispatch("phone-island-audio-output-change",{deviceId:t}),K(!1)}}),[G,Q]),e.useEffect((function(){v.checkDarkTheme()}),[]),o.useEventListener("phone-island-theme-change",(function(e){v.setTheme(null==e?void 0:e.selectedTheme)})),o.useEventListener("phone-island-default-device-change",(function(e){u.store.dispatch.currentUser.updateCurrentDefaultDevice(null==e?void 0:e.deviceInformationObject),r.eventDispatch("phone-island-default-device-changed",{})})),o.useEventListener("phone-island-alert",(function(e){u.store.dispatch.alerts.setAlert(e.toString())})),o.useEventListener("phone-island-main-presence",(function(e){var t,n,s,i,a=null===(t=u.store.getState().currentUser)||void 0===t?void 0:t.username,o=u.store.getState().currentUser,d=null==o?void 0:o.mainPresence;if(void 0!==a&&""!==a&&!m.isEmpty(e[a])&&void 0!==(null===(n=e[a])||void 0===n?void 0:n.mainPresence)){var c=null===(s=e[a])||void 0===s?void 0:s.mainPresence;u.store.dispatch.currentUser.updateMainPresence(null===(i=e[a])||void 0===i?void 0:i.mainPresence),"online"===c&&"online"!==d&&r.eventDispatch("phone-island-call-ended",{})}})),j.default.createElement(j.default.Fragment,null,j.default.createElement(g.default,{store:u.store},j.default.createElement(s.WebRTC,{hostName:x,sipExten:P,sipSecret:_,sipHost:T,sipPort:O,reload:A,reloadedCallback:function(){return R(!0)},uaType:y},j.default.createElement(a.RestAPI,{hostName:x,username:L,authToken:b},j.default.createElement(n.Socket,{hostName:x,username:L,authToken:b,reload:A,reloadedCallback:function(){return J(!0)},uaType:y},j.default.createElement(t.Events,{sipHost:T},j.default.createElement(i.Island,{showAlways:k})))))))};I.displayName="PhoneIsland",exports.PhoneIsland=I;
2
2
  //# sourceMappingURL=App.js.map
package/dist/App.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sources":["../src/App.tsx"],"sourcesContent":["import React, { type FC, useState, useEffect } from 'react'\nimport { Events, Socket, WebRTC, Island, RestAPI } from './components'\nimport { Provider } from 'react-redux'\nimport { store } from './store'\nimport { Base64 } from 'js-base64'\nimport wakeUpWorker from './workers/wake_up'\nimport loadI18n from './lib/i18n'\nimport i18next, { i18n } from 'i18next'\n\nimport 'react-tooltip/dist/react-tooltip.css'\nimport { useEventListener, eventDispatch, setJSONItem, getJSONItem } from './utils'\nimport { detach } from './lib/webrtc/messages'\nimport { checkDarkTheme, setTheme } from './lib/darkTheme'\nimport { changeOperatorStatus } from './services/user'\n\ninterface PhoneIslandProps {\n dataConfig: string\n i18nLoadPath?: string\n showAlways?: boolean\n uaType: string\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport const PhoneIsland: FC<PhoneIslandProps> = ({\n dataConfig,\n i18nLoadPath = undefined,\n showAlways = false,\n uaType,\n}: PhoneIslandProps) => {\n const CONFIG: string[] = Base64.atob(dataConfig || '').split(':')\n const HOST_NAME: string = CONFIG[0]\n const USERNAME: string = CONFIG[1]\n const AUTH_TOKEN: string = CONFIG[2]\n const SIP_EXTEN: string = CONFIG[3]\n const SIP_SECRET: string = CONFIG[4]\n const SIP_HOST: string = CONFIG[5]\n const SIP_PORT: string = CONFIG[6]\n\n // Initialize the state to manage the reload events\n const [reload, setReload] = useState<boolean>(false)\n const [reloadedWebRTC, setReloadedWebRTC] = useState<boolean>(false)\n const [reloadedSocket, setReloadedSocket] = useState<boolean>(false)\n\n useEffect(() => {\n const worker = new Worker(wakeUpWorker, { type: 'module' })\n worker.onmessage = (event: MessageEvent<string>) => {\n // Handle wakeup message\n if (event.data === 'wakeup') {\n setReload(true)\n }\n }\n\n return () => {\n worker.terminate()\n }\n }, [])\n\n useEffect(() => {\n if (reloadedSocket && reloadedWebRTC) {\n setReload(false)\n setReloadedWebRTC(false)\n setReloadedSocket(false)\n }\n }, [reloadedSocket, reloadedWebRTC])\n\n useEventListener('phone-island-expand', () => {\n store.dispatch.island.toggleIsOpen(true)\n eventDispatch('phone-island-expanded', {})\n })\n useEventListener('phone-island-compress', () => {\n store.dispatch.island.toggleIsOpen(false)\n eventDispatch('phone-island-compressed', {})\n })\n\n useEventListener('phone-island-call-keypad-close', () => {\n store.dispatch.island.setIslandView('call')\n eventDispatch('phone-island-call-keypad-closed', {})\n })\n useEventListener('phone-island-call-transfer-close', () => {\n store.dispatch.island.setIslandView('call')\n eventDispatch('phone-island-call-transfer-closed', {})\n })\n useEventListener('phone-island-recording-close', () => {\n store.dispatch.island.setIslandView(null)\n eventDispatch('phone-island-recording-closed', {})\n })\n useEventListener('phone-island-audio-player-close', () => {\n store.dispatch.island.setIslandView(null)\n eventDispatch('phone-island-audio-player-closed', {})\n })\n\n useEventListener('phone-island-detach', (data) => {\n detach()\n store.dispatch.currentUser.updateCurrentDefaultDevice(data?.deviceInformationObject)\n eventDispatch('phone-island-detached', {})\n })\n\n useEventListener('phone-island-audio-input-change', (data: DeviceInputOutputTypes) => {\n setJSONItem('phone-island-audio-input-device', { deviceId: data.deviceId })\n eventDispatch('phone-island-audio-input-changed', {})\n })\n\n useEventListener('phone-island-audio-output-change', (data: DeviceInputOutputTypes) => {\n const remoteAudioElement: any = store.getState().player.remoteAudio\n // set audio output\n remoteAudioElement?.current\n .setSinkId(data.deviceId)\n .then(function () {\n console.info('Default audio output device change with success!')\n // set device to localstorage\n setJSONItem('phone-island-audio-output-device', { deviceId: data.deviceId })\n\n // dispatch event\n eventDispatch('phone-island-audio-output-changed', {})\n })\n .catch(function (err) {\n console.error('Default audio output device change error:', err)\n })\n })\n\n // Listen for the operator status change\n useEventListener('phone-island-presence-change', (data: any) => {\n changeOperatorStatus(data)\n eventDispatch('phone-island-presence-changed', {})\n })\n\n const [firstRenderI18n, setFirstRenderI18n] = useState(true)\n const [firstAudioOutputInit, setFirstAudioOutputInit] = useState(true)\n\n //initialize i18n\n useEffect(() => {\n if (firstRenderI18n) {\n loadI18n(i18nLoadPath)\n setFirstRenderI18n(false)\n }\n }, [firstRenderI18n])\n\n const remoteAudioElement: any = store.getState().player.remoteAudio\n\n //get output device from localstorage\n useEffect(() => {\n if (firstAudioOutputInit && remoteAudioElement) {\n const defaultAudioOutputDevice: any = getJSONItem(\n `phone-island-audio-output-device`,\n )?.deviceId\n eventDispatch('phone-island-audio-output-change', { deviceId: defaultAudioOutputDevice })\n setFirstAudioOutputInit(false)\n }\n }, [firstAudioOutputInit, remoteAudioElement])\n\n useEffect(() => {\n checkDarkTheme()\n }, [])\n\n useEventListener('phone-island-theme-change', (theme: any) => {\n setTheme(theme?.selectedTheme)\n })\n\n useEventListener('phone-island-default-device-change', (data) => {\n store.dispatch.currentUser.updateCurrentDefaultDevice(data?.deviceInformationObject)\n eventDispatch('phone-island-default-device-changed', {})\n })\n\n useEventListener('phone-island-alert', (alertType: any) => {\n store.dispatch.alerts.setAlert(alertType.toString())\n })\n\n return (\n <>\n <Provider store={store}>\n <WebRTC\n hostName={HOST_NAME}\n sipExten={SIP_EXTEN}\n sipSecret={SIP_SECRET}\n sipHost={SIP_HOST}\n sipPort={SIP_PORT}\n reload={reload}\n reloadedCallback={() => setReloadedWebRTC(true)}\n uaType={uaType}\n >\n <RestAPI hostName={HOST_NAME} username={USERNAME} authToken={AUTH_TOKEN}>\n <Socket\n hostName={HOST_NAME}\n username={USERNAME}\n authToken={AUTH_TOKEN}\n reload={reload}\n reloadedCallback={() => setReloadedSocket(true)}\n uaType={uaType}\n >\n <Events sipHost={SIP_HOST}>\n <Island showAlways={showAlways} />\n </Events>\n </Socket>\n </RestAPI>\n </WebRTC>\n </Provider>\n </>\n )\n}\n\nPhoneIsland.displayName = 'PhoneIsland'\n"],"names":["PhoneIsland","_a","dataConfig","_b","i18nLoadPath","undefined","_c","showAlways","uaType","CONFIG","Base64","atob","split","HOST_NAME","USERNAME","AUTH_TOKEN","SIP_EXTEN","SIP_SECRET","SIP_HOST","SIP_PORT","_d","useState","reload","setReload","_e","reloadedWebRTC","setReloadedWebRTC","_f","reloadedSocket","setReloadedSocket","useEffect","worker","Worker","wakeUpWorker","type","onmessage","event","data","terminate","useEventListener","store","dispatch","island","toggleIsOpen","eventDispatch","setIslandView","detach","currentUser","updateCurrentDefaultDevice","deviceInformationObject","setJSONItem","deviceId","remoteAudioElement","getState","player","remoteAudio","current","setSinkId","then","console","info","catch","err","error","changeOperatorStatus","_g","firstRenderI18n","setFirstRenderI18n","_h","firstAudioOutputInit","setFirstAudioOutputInit","loadI18n","defaultAudioOutputDevice","getJSONItem","checkDarkTheme","theme","setTheme","selectedTheme","alertType","alerts","setAlert","toString","React","createElement","Fragment","Provider","WebRTC","hostName","sipExten","sipSecret","sipHost","sipPort","reloadedCallback","RestAPI","username","authToken","Socket","Events","Island","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"App.js","sources":["../src/App.tsx"],"sourcesContent":["import React, { type FC, useState, useEffect } from 'react'\nimport { Events, Socket, WebRTC, Island, RestAPI } from './components'\nimport { Provider } from 'react-redux'\nimport { store } from './store'\nimport { Base64 } from 'js-base64'\nimport wakeUpWorker from './workers/wake_up'\nimport loadI18n from './lib/i18n'\nimport i18next, { i18n } from 'i18next'\n\nimport 'react-tooltip/dist/react-tooltip.css'\nimport { useEventListener, eventDispatch, setJSONItem, getJSONItem } from './utils'\nimport { detach } from './lib/webrtc/messages'\nimport { checkDarkTheme, setTheme } from './lib/darkTheme'\nimport { changeOperatorStatus } from './services/user'\nimport { isEmpty } from './utils/genericFunctions/isEmpty'\n\ninterface PhoneIslandProps {\n dataConfig: string\n i18nLoadPath?: string\n showAlways?: boolean\n uaType: string\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport const PhoneIsland: FC<PhoneIslandProps> = ({\n dataConfig,\n i18nLoadPath = undefined,\n showAlways = false,\n uaType,\n}: PhoneIslandProps) => {\n const CONFIG: string[] = Base64.atob(dataConfig || '').split(':')\n const HOST_NAME: string = CONFIG[0]\n const USERNAME: string = CONFIG[1]\n const AUTH_TOKEN: string = CONFIG[2]\n const SIP_EXTEN: string = CONFIG[3]\n const SIP_SECRET: string = CONFIG[4]\n const SIP_HOST: string = CONFIG[5]\n const SIP_PORT: string = CONFIG[6]\n\n // Initialize the state to manage the reload events\n const [reload, setReload] = useState<boolean>(false)\n const [reloadedWebRTC, setReloadedWebRTC] = useState<boolean>(false)\n const [reloadedSocket, setReloadedSocket] = useState<boolean>(false)\n\n useEffect(() => {\n const worker = new Worker(wakeUpWorker, { type: 'module' })\n worker.onmessage = (event: MessageEvent<string>) => {\n // Handle wakeup message\n if (event.data === 'wakeup') {\n setReload(true)\n }\n }\n\n return () => {\n worker.terminate()\n }\n }, [])\n\n useEffect(() => {\n if (reloadedSocket && reloadedWebRTC) {\n setReload(false)\n setReloadedWebRTC(false)\n setReloadedSocket(false)\n }\n }, [reloadedSocket, reloadedWebRTC])\n\n useEventListener('phone-island-expand', () => {\n store.dispatch.island.toggleIsOpen(true)\n eventDispatch('phone-island-expanded', {})\n })\n useEventListener('phone-island-compress', () => {\n store.dispatch.island.toggleIsOpen(false)\n eventDispatch('phone-island-compressed', {})\n })\n\n useEventListener('phone-island-call-keypad-close', () => {\n store.dispatch.island.setIslandView('call')\n eventDispatch('phone-island-call-keypad-closed', {})\n })\n useEventListener('phone-island-call-transfer-close', () => {\n store.dispatch.island.setIslandView('call')\n eventDispatch('phone-island-call-transfer-closed', {})\n })\n useEventListener('phone-island-recording-close', () => {\n store.dispatch.island.setIslandView(null)\n eventDispatch('phone-island-recording-closed', {})\n })\n useEventListener('phone-island-audio-player-close', () => {\n store.dispatch.island.setIslandView(null)\n eventDispatch('phone-island-audio-player-closed', {})\n })\n\n useEventListener('phone-island-detach', (data) => {\n detach()\n store.dispatch.currentUser.updateCurrentDefaultDevice(data?.deviceInformationObject)\n eventDispatch('phone-island-detached', {})\n })\n\n useEventListener('phone-island-audio-input-change', (data: DeviceInputOutputTypes) => {\n setJSONItem('phone-island-audio-input-device', { deviceId: data.deviceId })\n eventDispatch('phone-island-audio-input-changed', {})\n })\n\n useEventListener('phone-island-audio-output-change', (data: DeviceInputOutputTypes) => {\n const remoteAudioElement: any = store.getState().player.remoteAudio\n // set audio output\n remoteAudioElement?.current\n .setSinkId(data.deviceId)\n .then(function () {\n console.info('Default audio output device change with success!')\n // set device to localstorage\n setJSONItem('phone-island-audio-output-device', { deviceId: data.deviceId })\n\n // dispatch event\n eventDispatch('phone-island-audio-output-changed', {})\n })\n .catch(function (err) {\n console.error('Default audio output device change error:', err)\n })\n })\n\n // Listen for the operator status change\n useEventListener('phone-island-presence-change', (data: any) => {\n changeOperatorStatus(data)\n eventDispatch('phone-island-presence-changed', {})\n })\n\n const [firstRenderI18n, setFirstRenderI18n] = useState(true)\n const [firstAudioOutputInit, setFirstAudioOutputInit] = useState(true)\n\n //initialize i18n\n useEffect(() => {\n if (firstRenderI18n) {\n loadI18n(i18nLoadPath)\n setFirstRenderI18n(false)\n }\n }, [firstRenderI18n])\n\n const remoteAudioElement: any = store.getState().player.remoteAudio\n\n //get output device from localstorage\n useEffect(() => {\n if (firstAudioOutputInit && remoteAudioElement) {\n const defaultAudioOutputDevice: any = getJSONItem(\n `phone-island-audio-output-device`,\n )?.deviceId\n eventDispatch('phone-island-audio-output-change', { deviceId: defaultAudioOutputDevice })\n setFirstAudioOutputInit(false)\n }\n }, [firstAudioOutputInit, remoteAudioElement])\n\n useEffect(() => {\n checkDarkTheme()\n }, [])\n\n useEventListener('phone-island-theme-change', (theme: any) => {\n setTheme(theme?.selectedTheme)\n })\n\n useEventListener('phone-island-default-device-change', (data) => {\n store.dispatch.currentUser.updateCurrentDefaultDevice(data?.deviceInformationObject)\n eventDispatch('phone-island-default-device-changed', {})\n })\n\n useEventListener('phone-island-alert', (alertType: any) => {\n store.dispatch.alerts.setAlert(alertType.toString())\n })\n\n useEventListener('phone-island-main-presence', (data: any) => {\n const currentUsernameInformation: any = store.getState().currentUser?.username\n const currentUserObject: any = store.getState().currentUser\n let mainPresenceValueBeforeUpdate = currentUserObject?.mainPresence\n if (\n currentUsernameInformation !== undefined &&\n currentUsernameInformation !== '' &&\n !isEmpty(data[currentUsernameInformation]) &&\n data[currentUsernameInformation]?.mainPresence !== undefined\n ) {\n let newMainPresenceValue = data[currentUsernameInformation]?.mainPresence\n store.dispatch.currentUser.updateMainPresence(data[currentUsernameInformation]?.mainPresence)\n let mainPresenceValueAfterUpdate = newMainPresenceValue\n if (mainPresenceValueAfterUpdate === 'online' && mainPresenceValueBeforeUpdate !== 'online') {\n eventDispatch('phone-island-call-ended', {})\n }\n }\n })\n\n return (\n <>\n <Provider store={store}>\n <WebRTC\n hostName={HOST_NAME}\n sipExten={SIP_EXTEN}\n sipSecret={SIP_SECRET}\n sipHost={SIP_HOST}\n sipPort={SIP_PORT}\n reload={reload}\n reloadedCallback={() => setReloadedWebRTC(true)}\n uaType={uaType}\n >\n <RestAPI hostName={HOST_NAME} username={USERNAME} authToken={AUTH_TOKEN}>\n <Socket\n hostName={HOST_NAME}\n username={USERNAME}\n authToken={AUTH_TOKEN}\n reload={reload}\n reloadedCallback={() => setReloadedSocket(true)}\n uaType={uaType}\n >\n <Events sipHost={SIP_HOST}>\n <Island showAlways={showAlways} />\n </Events>\n </Socket>\n </RestAPI>\n </WebRTC>\n </Provider>\n </>\n )\n}\n\nPhoneIsland.displayName = 'PhoneIsland'\n"],"names":["PhoneIsland","_a","dataConfig","_b","i18nLoadPath","undefined","_c","showAlways","uaType","CONFIG","Base64","atob","split","HOST_NAME","USERNAME","AUTH_TOKEN","SIP_EXTEN","SIP_SECRET","SIP_HOST","SIP_PORT","_d","useState","reload","setReload","_e","reloadedWebRTC","setReloadedWebRTC","_f","reloadedSocket","setReloadedSocket","useEffect","worker","Worker","wakeUpWorker","type","onmessage","event","data","terminate","useEventListener","store","dispatch","island","toggleIsOpen","eventDispatch","setIslandView","detach","currentUser","updateCurrentDefaultDevice","deviceInformationObject","setJSONItem","deviceId","remoteAudioElement","getState","player","remoteAudio","current","setSinkId","then","console","info","catch","err","error","changeOperatorStatus","_g","firstRenderI18n","setFirstRenderI18n","_h","firstAudioOutputInit","setFirstAudioOutputInit","loadI18n","defaultAudioOutputDevice","getJSONItem","checkDarkTheme","theme","setTheme","selectedTheme","alertType","alerts","setAlert","toString","currentUsernameInformation","username","currentUserObject","mainPresenceValueBeforeUpdate","mainPresence","isEmpty","newMainPresenceValue","updateMainPresence","React","createElement","Fragment","Provider","WebRTC","hostName","sipExten","sipSecret","sipHost","sipPort","reloadedCallback","RestAPI","authToken","Socket","Events","Island","displayName"],"mappings":"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"}
@@ -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"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),a=require("../Button.js"),i=require("../../node_modules/i18next/dist/esm/i18next.js"),s=require("../../utils/genericFunctions/eventDispatch.js"),l=require("../../node_modules/react-redux/es/hooks/useSelector.js"),n=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=o(e);exports.default=function(){var e=l.useSelector((function(e){return e.alerts})).data,o=n.useDispatch(),u=Object.values(e).filter((function(e){return e.active})),c=u.length>0?u[u.length-1]:null;return c&&d.default.createElement("div",{className:"pi-relative pi-rounded-md pi-w-full pi-flex"},d.default.createElement("div",{className:"pi-flex pi-items-center"},d.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 ".concat("call_transfered"===(null==c?void 0:c.type)?"pi-bg-green-200 dark:pi-bg-green-900":"pi-bg-rose-200 dark:pi-bg-rose-900")},d.default.createElement(t.FontAwesomeIcon,{icon:"call_transfered"===(null==c?void 0:c.type)?r.faCircleCheck:r.faCircleXmark,className:"pi-h-[1.1rem] pi-w-10 ".concat("call_transfered"===(null==c?void 0:c.type)?"pi-text-green-700 dark:pi-text-green-200":"pi-text-rose-700 dark:pi-text-rose-200"),"aria-hidden":"true"})),d.default.createElement("div",{className:"ml-3"},d.default.createElement("h3",{className:"pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100 margin-block-property"},i.t("Errors.".concat(null==c?void 0:c.type))),d.default.createElement("div",{className:"pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5"},i.t("Errors.".concat(null==c?void 0:c.message))))),d.default.createElement(a.Button,{variant:"transparent",onClick:function(){return o.alerts.removeAllAlerts(),void s.eventDispatch("phone-island-all-alerts-removed",{})},className:"pi-absolute pi-right-[-1.28rem] pi-top-[8%] pi-transform pi--translate-y-[57%]"},d.default.createElement(t.FontAwesomeIcon,{icon:r.faTimes,className:"pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4"})))};
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"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),i=require("../Button.js"),a=require("../../node_modules/i18next/dist/esm/i18next.js"),n=require("../../utils/genericFunctions/eventDispatch.js"),l=require("../../node_modules/react-redux/es/hooks/useSelector.js"),s=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=o(e);exports.default=function(){var e=l.useSelector((function(e){return e.alerts})).data,o=l.useSelector((function(e){return e.currentUser})).default_device,u=s.useDispatch(),c=Object.values(e).filter((function(e){return e.active})),p=c.length>0?c[c.length-1]:null;return p&&d.default.createElement("div",{className:"pi-relative pi-rounded-md pi-w-full pi-flex"},d.default.createElement("div",{className:"pi-flex pi-items-center"},d.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 ".concat("call_transfered"===(null==p?void 0:p.type)?"pi-bg-green-200 dark:pi-bg-green-900":"pi-bg-rose-200 dark:pi-bg-rose-900")},d.default.createElement(t.FontAwesomeIcon,{icon:"call_transfered"===(null==p?void 0:p.type)?r.faCircleCheck:r.faCircleXmark,className:"pi-h-[1.1rem] pi-w-10 ".concat("call_transfered"===(null==p?void 0:p.type)?"pi-text-green-700 dark:pi-text-green-200":"pi-text-rose-700 dark:pi-text-rose-200"),"aria-hidden":"true"})),d.default.createElement("div",{className:"ml-3"},d.default.createElement("h3",{className:"pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100 margin-block-property"},a.t("Errors.".concat("nethlink"===(null==o?void 0:o.type)&&"webrtc_down"===(null==p?void 0:p.type)?null==p?void 0:p.nethlink_message:null==p?void 0:p.type))),d.default.createElement("div",{className:"pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5"},a.t("Errors.".concat(null==p?void 0:p.message))))),d.default.createElement(i.Button,{variant:"transparent",onClick:function(){return u.alerts.removeAllAlerts(),void n.eventDispatch("phone-island-all-alerts-removed",{})},className:"pi-absolute pi-right-[-1.28rem] pi-top-[8%] pi-transform pi--translate-y-[57%]"},d.default.createElement(t.FontAwesomeIcon,{icon:r.faTimes,className:"pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4"})))};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/AlertView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { FC } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCircleXmark, faCircleCheck } from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport { t } from 'i18next'\nimport { eventDispatch } from '../../utils'\n\n/**\n * Shows user alerts\n */\nconst AlertView: FC = () => {\n const { data } = useSelector((state: RootState) => state.alerts)\n const dispatch = useDispatch<Dispatch>()\n\n // Extract active alerts\n const activeAlerts = Object.values(data).filter((alert: any) => alert.active)\n\n // Display the latest active alert\n const latestAlert = activeAlerts.length > 0 ? activeAlerts[activeAlerts.length - 1] : null\n\n const handleClearAllAlerts = () => {\n dispatch.alerts.removeAllAlerts()\n eventDispatch('phone-island-all-alerts-removed', {})\n }\n\n return (\n latestAlert && (\n <div className='pi-relative pi-rounded-md pi-w-full pi-flex'>\n <div className='pi-flex pi-items-center'>\n <div\n className={`pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-bg-green-200 dark:pi-bg-green-900'\n : 'pi-bg-rose-200 dark:pi-bg-rose-900'\n }`}\n >\n {/* Icon */}\n <FontAwesomeIcon\n icon={latestAlert?.type === 'call_transfered' ? faCircleCheck : faCircleXmark}\n className={`pi-h-[1.1rem] pi-w-10 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-text-green-700 dark:pi-text-green-200'\n : 'pi-text-rose-700 dark:pi-text-rose-200'\n }`}\n aria-hidden='true'\n />\n </div>\n\n <div className='ml-3'>\n <h3 className='pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100 margin-block-property'>\n {t(`Errors.${latestAlert?.type}`)}\n </h3>\n <div className='pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5'>\n {t(`Errors.${latestAlert?.message}`)}\n </div>\n </div>\n </div>\n\n {/* Close button */}\n <Button\n variant='transparent'\n onClick={() => handleClearAllAlerts()}\n className='pi-absolute pi-right-[-1.28rem] pi-top-[8%] pi-transform pi--translate-y-[57%]'\n >\n <FontAwesomeIcon\n icon={faTimes}\n className='pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4'\n />\n </Button>\n </div>\n )\n )\n}\n\nexport default AlertView\n"],"names":["data","useSelector","state","alerts","dispatch","useDispatch","activeAlerts","Object","values","filter","alert","active","latestAlert","length","React","createElement","className","concat","type","FontAwesomeIcon","icon","faCircleCheck","faCircleXmark","t","message","Button","variant","onClick","removeAllAlerts","eventDispatch","faTimes"],"mappings":"2qBAesB,WACZ,IAAAA,EAASC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,eACnDC,EAAWC,EAAAA,cAGXC,EAAeC,OAAOC,OAAOR,GAAMS,QAAO,SAACC,GAAe,OAAAA,EAAMC,MAAM,IAGtEC,EAAcN,EAAaO,OAAS,EAAIP,EAAaA,EAAaO,OAAS,GAAK,KAOtF,OACED,GACEE,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,+CACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAA,QAAAC,cAAA,MAAA,CACEC,UAAW,sGACTC,OAAsB,qBAAtBL,aAAW,EAAXA,EAAaM,MACT,uCACA,uCAINJ,EAAAA,QAAAC,cAACI,EAAAA,gBAAe,CACdC,KAA4B,qBAAtBR,aAAW,EAAXA,EAAaM,MAA6BG,EAAaA,cAAGC,EAAaA,cAC7EN,UAAW,yBACTC,OAAsB,qBAAtBL,aAAA,EAAAA,EAAaM,MACT,2CACA,0CAEM,cAAA,UAIhBJ,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,QACbF,EAAA,QAAAC,cAAA,KAAA,CAAIC,UAAU,+GACXO,EAACA,EAAC,UAAUN,OAAAL,eAAAA,EAAaM,QAE5BJ,UAAAC,cAAA,MAAA,CAAKC,UAAU,uGACZO,EAAAA,EAAE,iBAAUX,aAAW,EAAXA,EAAaY,aAMhCV,EAAAA,QAAAC,cAACU,EAAAA,OACC,CAAAC,QAAQ,cACRC,QAAS,WAAM,OAxCrBvB,EAASD,OAAOyB,uBAChBC,gBAAc,kCAAmC,CAAA,IAwC3Cb,UAAU,kFAEVF,UAAAC,cAACI,EAAeA,gBAAA,CACdC,KAAMU,UACNd,UAAU,yDAMtB"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/AlertView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { FC } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCircleXmark, faCircleCheck } from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport { t } from 'i18next'\nimport { eventDispatch } from '../../utils'\nimport { store } from '../../store'\n\n/**\n * Shows user alerts\n */\nconst AlertView: FC = () => {\n const { data } = useSelector((state: RootState) => state.alerts)\n const { default_device } = useSelector((state: RootState) => state.currentUser)\n const dispatch = useDispatch<Dispatch>()\n\n // Extract active alerts\n const activeAlerts = Object.values(data).filter((alert: any) => alert.active)\n\n // Display the latest active alert\n const latestAlert = activeAlerts.length > 0 ? activeAlerts[activeAlerts.length - 1] : null\n\n const handleClearAllAlerts = () => {\n dispatch.alerts.removeAllAlerts()\n eventDispatch('phone-island-all-alerts-removed', {})\n }\n\n return (\n latestAlert && (\n <div className='pi-relative pi-rounded-md pi-w-full pi-flex'>\n <div className='pi-flex pi-items-center'>\n <div\n className={`pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-bg-green-200 dark:pi-bg-green-900'\n : 'pi-bg-rose-200 dark:pi-bg-rose-900'\n }`}\n >\n {/* Icon */}\n <FontAwesomeIcon\n icon={latestAlert?.type === 'call_transfered' ? faCircleCheck : faCircleXmark}\n className={`pi-h-[1.1rem] pi-w-10 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-text-green-700 dark:pi-text-green-200'\n : 'pi-text-rose-700 dark:pi-text-rose-200'\n }`}\n aria-hidden='true'\n />\n </div>\n\n <div className='ml-3'>\n <h3 className='pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100 margin-block-property'>\n {t(\n `Errors.${\n default_device?.type === 'nethlink' && latestAlert?.type === 'webrtc_down'\n ? latestAlert?.nethlink_message\n : latestAlert?.type\n }`,\n )}\n </h3>\n <div className='pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5'>\n {t(`Errors.${latestAlert?.message}`)}\n </div>\n </div>\n </div>\n\n {/* Close button */}\n <Button\n variant='transparent'\n onClick={() => handleClearAllAlerts()}\n className='pi-absolute pi-right-[-1.28rem] pi-top-[8%] pi-transform pi--translate-y-[57%]'\n >\n <FontAwesomeIcon\n icon={faTimes}\n className='pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4'\n />\n </Button>\n </div>\n )\n )\n}\n\nexport default AlertView\n"],"names":["data","useSelector","state","alerts","default_device","currentUser","dispatch","useDispatch","activeAlerts","Object","values","filter","alert","active","latestAlert","length","React","createElement","className","concat","type","FontAwesomeIcon","icon","faCircleCheck","faCircleXmark","t","nethlink_message","message","Button","variant","onClick","removeAllAlerts","eventDispatch","faTimes"],"mappings":"2qBAgBsB,WACZ,IAAAA,EAASC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,eACjDC,EAAmBH,eAAY,SAACC,GAAqB,OAAAA,EAAMG,8BAC7DC,EAAWC,EAAAA,cAGXC,EAAeC,OAAOC,OAAOV,GAAMW,QAAO,SAACC,GAAe,OAAAA,EAAMC,MAAM,IAGtEC,EAAcN,EAAaO,OAAS,EAAIP,EAAaA,EAAaO,OAAS,GAAK,KAOtF,OACED,GACEE,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,+CACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAA,QAAAC,cAAA,MAAA,CACEC,UAAW,sGACTC,OAAsB,qBAAtBL,aAAW,EAAXA,EAAaM,MACT,uCACA,uCAINJ,EAAAA,QAAAC,cAACI,EAAAA,gBAAe,CACdC,KAA4B,qBAAtBR,aAAW,EAAXA,EAAaM,MAA6BG,EAAaA,cAAGC,EAAaA,cAC7EN,UAAW,yBACTC,OAAsB,qBAAtBL,aAAA,EAAAA,EAAaM,MACT,2CACA,0CAEM,cAAA,UAIhBJ,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,QACbF,EAAAA,QAAIC,cAAA,KAAA,CAAAC,UAAU,+GACXO,IACC,UAAAN,OAC2B,cAAzBf,aAAA,EAAAA,EAAgBgB,OAA6C,iBAAtBN,aAAW,EAAXA,EAAaM,MAChDN,aAAA,EAAAA,EAAaY,iBACbZ,aAAW,EAAXA,EAAaM,QAIvBJ,UAAAC,cAAA,MAAA,CAAKC,UAAU,uGACZO,EAAAA,EAAE,iBAAUX,aAAW,EAAXA,EAAaa,aAMhCX,EAAAA,QAAAC,cAACW,EAAAA,OACC,CAAAC,QAAQ,cACRC,QAAS,WAAM,OA9CrBxB,EAASH,OAAO4B,uBAChBC,gBAAc,kCAAmC,CAAA,IA8C3Cd,UAAU,kFAEVF,UAAAC,cAACI,EAAeA,gBAAA,CACdC,KAAMW,UACNf,UAAU,yDAMtB"}
@@ -59,5 +59,6 @@ export interface AlertTypes {
59
59
  break?: boolean;
60
60
  success?: boolean;
61
61
  type: string;
62
+ nethlink_message?: string;
62
63
  }
63
64
  export {};
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),s=require("../node_modules/@rematch/core/dist/core.esm.js").createModel()({state:{data:{browser_permissions:{active:!1,break:!0,message:"No microphone or camera permissions.",type:"browser_permissions"},user_permissions:{active:!1,break:!0,message:"You must accept audio and video permissions.",type:"user_permissions"},unknown_media_permissions:{active:!1,break:!0,message:"Unknown audio or camera permissions.",type:"unknown_media_permissions"},webrtc_down:{active:!1,break:!0,message:"Web Phone connection is down.",type:"webrtc_down"},socket_down:{active:!1,break:!1,message:"Server connection is down.",type:"socket_down"},busy_camera:{active:!1,message:"Camera is already used.",type:"busy_camera"},call_transfered:{active:!1,success:!0,message:"Call transferred successfully.",type:"call_transfered"}},status:{activeAlertsCount:0,breakActiveAlertsCount:0}},reducers:{setAlert:function(s,t){var a;if(!s.data[t].active){var r=s.status.activeAlertsCount+1,i=s.data[t].break?s.status.breakActiveAlertsCount+1:s.status.breakActiveAlertsCount;return e.__assign(e.__assign({},s),{data:e.__assign(e.__assign({},s.data),(a={},a[t]=e.__assign(e.__assign({},s.data[t]),{active:!0}),a)),status:e.__assign(e.__assign({},s.status),{activeAlertsCount:r,breakActiveAlertsCount:i})})}},removeAlert:function(s,t){var a;if(s.data[t].active){var r=s.status.activeAlertsCount-1,i=s.data[t].break?s.status.breakActiveAlertsCount-1:s.status.breakActiveAlertsCount;return{data:e.__assign(e.__assign({},s.data),(a={},a[t]=e.__assign(e.__assign({},s.data[t]),{active:!1,activeAlertsCount:r,breakActiveAlertsCount:i}),a)),status:e.__assign(e.__assign({},s.status),{activeAlertsCount:r,breakActiveAlertsCount:i})}}},removeAllAlerts:function(e){for(var s in e.data)e.data[s].active=!1;e.status.activeAlertsCount=0,e.status.breakActiveAlertsCount=0}}});exports.alerts=s;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),s=require("../node_modules/@rematch/core/dist/core.esm.js").createModel()({state:{data:{browser_permissions:{active:!1,break:!0,message:"No microphone or camera permissions.",type:"browser_permissions"},user_permissions:{active:!1,break:!0,message:"You must accept audio and video permissions.",type:"user_permissions"},unknown_media_permissions:{active:!1,break:!0,message:"Unknown audio or camera permissions.",type:"unknown_media_permissions"},webrtc_down:{active:!1,break:!0,message:"Web Phone connection is down.",nethlink_message:"NethLink connection is down.",type:"webrtc_down"},socket_down:{active:!1,break:!1,message:"Server connection is down.",type:"socket_down"},busy_camera:{active:!1,message:"Camera is already used.",type:"busy_camera"},call_transfered:{active:!1,success:!0,message:"Call transferred successfully.",type:"call_transfered"}},status:{activeAlertsCount:0,breakActiveAlertsCount:0}},reducers:{setAlert:function(s,t){var a;if(!s.data[t].active){var r=s.status.activeAlertsCount+1,i=s.data[t].break?s.status.breakActiveAlertsCount+1:s.status.breakActiveAlertsCount;return e.__assign(e.__assign({},s),{data:e.__assign(e.__assign({},s.data),(a={},a[t]=e.__assign(e.__assign({},s.data[t]),{active:!0}),a)),status:e.__assign(e.__assign({},s.status),{activeAlertsCount:r,breakActiveAlertsCount:i})})}},removeAlert:function(s,t){var a;if(s.data[t].active){var r=s.status.activeAlertsCount-1,i=s.data[t].break?s.status.breakActiveAlertsCount-1:s.status.breakActiveAlertsCount;return{data:e.__assign(e.__assign({},s.data),(a={},a[t]=e.__assign(e.__assign({},s.data[t]),{active:!1,activeAlertsCount:r,breakActiveAlertsCount:i}),a)),status:e.__assign(e.__assign({},s.status),{activeAlertsCount:r,breakActiveAlertsCount:i})}}},removeAllAlerts:function(e){for(var s in e.data)e.data[s].active=!1;e.status.activeAlertsCount=0,e.status.breakActiveAlertsCount=0}}});exports.alerts=s;
2
2
  //# sourceMappingURL=alerts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alerts.js","sources":["../../src/models/alerts.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { createModel } from '@rematch/core'\nimport type { RootModel } from '.'\n\nconst defaultState: AlertsTypes = {\n data: {\n // Alerts that break calls\n browser_permissions: {\n active: false,\n break: true,\n message: \"No microphone or camera permissions.\",\n type: 'browser_permissions',\n },\n user_permissions: {\n active: false,\n break: true,\n message: 'You must accept audio and video permissions.',\n type: 'user_permissions',\n },\n unknown_media_permissions: {\n active: false,\n break: true,\n message: \"Unknown audio or camera permissions.\",\n type: 'unknown_media_permissions',\n },\n webrtc_down: {\n active: false,\n break: true,\n message: 'Web Phone connection is down.',\n type: 'webrtc_down',\n },\n socket_down: {\n active: false,\n break: false,\n message: 'Server connection is down.',\n type: 'socket_down',\n },\n // Warning alerts\n busy_camera: {\n active: false,\n message: 'Camera is already used.',\n type: 'busy_camera',\n },\n // Success alerts\n call_transfered: {\n active: false,\n success: true,\n message: 'Call transferred successfully.',\n type: 'call_transfered',\n },\n },\n status: {\n activeAlertsCount: 0,\n breakActiveAlertsCount: 0,\n },\n}\n\nexport const alerts = createModel<RootModel>()({\n state: defaultState,\n reducers: {\n setAlert: (state, payload: AlertsKeys) => {\n if (!state.data[payload].active) {\n const newActiveAlertsCount = state.status.activeAlertsCount + 1\n const newBreakActiveAlertsCount = state.data[payload].break\n ? state.status.breakActiveAlertsCount + 1\n : state.status.breakActiveAlertsCount\n\n return {\n ...state,\n data: {\n ...state.data,\n [payload]: {\n ...state.data[payload],\n active: true,\n },\n },\n status: {\n ...state.status,\n activeAlertsCount: newActiveAlertsCount,\n breakActiveAlertsCount: newBreakActiveAlertsCount,\n },\n }\n }\n },\n removeAlert: (state, payload: AlertsKeys) => {\n if (state.data[payload].active) {\n const newActiveAlertsCount = state.status.activeAlertsCount - 1\n const newBreakActiveAlertsCount = state.data[payload].break\n ? state.status.breakActiveAlertsCount - 1\n : state.status.breakActiveAlertsCount\n\n return {\n data: {\n ...state.data,\n [payload]: {\n ...state.data[payload],\n active: false,\n activeAlertsCount: newActiveAlertsCount,\n breakActiveAlertsCount: newBreakActiveAlertsCount,\n },\n },\n status: {\n ...state.status,\n activeAlertsCount: newActiveAlertsCount,\n breakActiveAlertsCount: newBreakActiveAlertsCount,\n },\n }\n }\n },\n //remove all alerts\n removeAllAlerts: (state) => {\n for (const key in state.data) {\n state.data[key].active = false\n }\n state.status.activeAlertsCount = 0\n state.status.breakActiveAlertsCount = 0\n },\n },\n})\n\nexport type AlertsTypes = {\n data: { [key in AlertsKeys]: AlertTypes }\n status: {\n activeAlertsCount: number\n breakActiveAlertsCount: number\n }\n}\n\ntype AlertsKeys =\n | 'browser_permissions'\n | 'user_permissions'\n | 'busy_camera'\n | 'unknown_media_permissions'\n | 'webrtc_down'\n | 'socket_down'\n | 'call_transfered'\n\nexport interface AlertTypes {\n active: boolean\n message: string\n break?: boolean // This means that it brokes WebRTC audio calls or Socket connection\n success?: boolean\n type: string\n}\n"],"names":["alerts","createModel","state","data","browser_permissions","active","break","message","type","user_permissions","unknown_media_permissions","webrtc_down","socket_down","busy_camera","call_transfered","success","status","activeAlertsCount","breakActiveAlertsCount","reducers","setAlert","payload","newActiveAlertsCount","newBreakActiveAlertsCount","__assign","_a","removeAlert","removeAllAlerts","key"],"mappings":"wHA2DaA,4DAAoBC,aAAXA,CAAyB,CAC7CC,MAtDgC,CAChCC,KAAM,CAEJC,oBAAqB,CACnBC,QAAQ,EACRC,OAAO,EACPC,QAAS,uCACTC,KAAM,uBAERC,iBAAkB,CAChBJ,QAAQ,EACRC,OAAO,EACPC,QAAS,+CACTC,KAAM,oBAERE,0BAA2B,CACzBL,QAAQ,EACRC,OAAO,EACPC,QAAS,uCACTC,KAAM,6BAERG,YAAa,CACXN,QAAQ,EACRC,OAAO,EACPC,QAAS,gCACTC,KAAM,eAERI,YAAa,CACXP,QAAQ,EACRC,OAAO,EACPC,QAAS,6BACTC,KAAM,eAGRK,YAAa,CACXR,QAAQ,EACRE,QAAS,0BACTC,KAAM,eAGRM,gBAAiB,CACfT,QAAQ,EACRU,SAAS,EACTR,QAAS,iCACTC,KAAM,oBAGVQ,OAAQ,CACNC,kBAAmB,EACnBC,uBAAwB,IAM1BC,SAAU,CACRC,SAAU,SAAClB,EAAOmB,SAChB,IAAKnB,EAAMC,KAAKkB,GAAShB,OAAQ,CAC/B,IAAMiB,EAAuBpB,EAAMc,OAAOC,kBAAoB,EACxDM,EAA4BrB,EAAMC,KAAKkB,GAASf,MAClDJ,EAAMc,OAAOE,uBAAyB,EACtChB,EAAMc,OAAOE,uBAEjB,OAAAM,EAAAA,SAAAA,EAAAA,SAAA,GACKtB,GAAK,CACRC,KAAIqB,WAAAA,EAAAA,SAAA,CAAA,EACCtB,EAAMC,OACRsB,EAAA,CAAA,EAAAA,EAAAJ,4BACInB,EAAMC,KAAKkB,IAAQ,CACtBhB,QAAQ,IAAIoB,IAGhBT,OAAMQ,WAAAA,EAAAA,SAAA,CAAA,EACDtB,EAAMc,QACT,CAAAC,kBAAmBK,EACnBJ,uBAAwBK,KAG7B,CACF,EACDG,YAAa,SAACxB,EAAOmB,SACnB,GAAInB,EAAMC,KAAKkB,GAAShB,OAAQ,CAC9B,IAAMiB,EAAuBpB,EAAMc,OAAOC,kBAAoB,EACxDM,EAA4BrB,EAAMC,KAAKkB,GAASf,MAClDJ,EAAMc,OAAOE,uBAAyB,EACtChB,EAAMc,OAAOE,uBAEjB,MAAO,CACLf,KAAIqB,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EACCtB,EAAMC,OAAIsB,EAAA,CAAA,EAAAA,EACZJ,GACIG,EAAAA,SAAAA,EAAAA,SAAA,GAAAtB,EAAMC,KAAKkB,IACd,CAAAhB,QAAQ,EACRY,kBAAmBK,EACnBJ,uBAAwBK,IAE3BE,IACDT,OACKQ,EAAAA,SAAAA,WAAA,CAAA,EAAAtB,EAAMc,QACT,CAAAC,kBAAmBK,EACnBJ,uBAAwBK,IAG7B,CACF,EAEDI,gBAAiB,SAACzB,GAChB,IAAK,IAAM0B,KAAO1B,EAAMC,KACtBD,EAAMC,KAAKyB,GAAKvB,QAAS,EAE3BH,EAAMc,OAAOC,kBAAoB,EACjCf,EAAMc,OAAOE,uBAAyB,CACvC"}
1
+ {"version":3,"file":"alerts.js","sources":["../../src/models/alerts.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { createModel } from '@rematch/core'\nimport type { RootModel } from '.'\n\nconst defaultState: AlertsTypes = {\n data: {\n // Alerts that break calls\n browser_permissions: {\n active: false,\n break: true,\n message: \"No microphone or camera permissions.\",\n type: 'browser_permissions',\n },\n user_permissions: {\n active: false,\n break: true,\n message: 'You must accept audio and video permissions.',\n type: 'user_permissions',\n },\n unknown_media_permissions: {\n active: false,\n break: true,\n message: \"Unknown audio or camera permissions.\",\n type: 'unknown_media_permissions',\n },\n webrtc_down: {\n active: false,\n break: true,\n message: 'Web Phone connection is down.',\n nethlink_message: 'NethLink connection is down.',\n type: 'webrtc_down',\n },\n socket_down: {\n active: false,\n break: false,\n message: 'Server connection is down.',\n type: 'socket_down',\n },\n // Warning alerts\n busy_camera: {\n active: false,\n message: 'Camera is already used.',\n type: 'busy_camera',\n },\n // Success alerts\n call_transfered: {\n active: false,\n success: true,\n message: 'Call transferred successfully.',\n type: 'call_transfered',\n },\n },\n status: {\n activeAlertsCount: 0,\n breakActiveAlertsCount: 0,\n },\n}\n\nexport const alerts = createModel<RootModel>()({\n state: defaultState,\n reducers: {\n setAlert: (state, payload: AlertsKeys) => {\n if (!state.data[payload].active) {\n const newActiveAlertsCount = state.status.activeAlertsCount + 1\n const newBreakActiveAlertsCount = state.data[payload].break\n ? state.status.breakActiveAlertsCount + 1\n : state.status.breakActiveAlertsCount\n\n return {\n ...state,\n data: {\n ...state.data,\n [payload]: {\n ...state.data[payload],\n active: true,\n },\n },\n status: {\n ...state.status,\n activeAlertsCount: newActiveAlertsCount,\n breakActiveAlertsCount: newBreakActiveAlertsCount,\n },\n }\n }\n },\n removeAlert: (state, payload: AlertsKeys) => {\n if (state.data[payload].active) {\n const newActiveAlertsCount = state.status.activeAlertsCount - 1\n const newBreakActiveAlertsCount = state.data[payload].break\n ? state.status.breakActiveAlertsCount - 1\n : state.status.breakActiveAlertsCount\n\n return {\n data: {\n ...state.data,\n [payload]: {\n ...state.data[payload],\n active: false,\n activeAlertsCount: newActiveAlertsCount,\n breakActiveAlertsCount: newBreakActiveAlertsCount,\n },\n },\n status: {\n ...state.status,\n activeAlertsCount: newActiveAlertsCount,\n breakActiveAlertsCount: newBreakActiveAlertsCount,\n },\n }\n }\n },\n //remove all alerts\n removeAllAlerts: (state) => {\n for (const key in state.data) {\n state.data[key].active = false\n }\n state.status.activeAlertsCount = 0\n state.status.breakActiveAlertsCount = 0\n },\n },\n})\n\nexport type AlertsTypes = {\n data: { [key in AlertsKeys]: AlertTypes }\n status: {\n activeAlertsCount: number\n breakActiveAlertsCount: number\n }\n}\n\ntype AlertsKeys =\n | 'browser_permissions'\n | 'user_permissions'\n | 'busy_camera'\n | 'unknown_media_permissions'\n | 'webrtc_down'\n | 'socket_down'\n | 'call_transfered'\n\nexport interface AlertTypes {\n active: boolean\n message: string\n break?: boolean // This means that it brokes WebRTC audio calls or Socket connection\n success?: boolean\n type: string\n nethlink_message?: string\n}\n"],"names":["alerts","createModel","state","data","browser_permissions","active","break","message","type","user_permissions","unknown_media_permissions","webrtc_down","nethlink_message","socket_down","busy_camera","call_transfered","success","status","activeAlertsCount","breakActiveAlertsCount","reducers","setAlert","payload","newActiveAlertsCount","newBreakActiveAlertsCount","__assign","_a","removeAlert","removeAllAlerts","key"],"mappings":"wHA4DaA,4DAAoBC,aAAXA,CAAyB,CAC7CC,MAvDgC,CAChCC,KAAM,CAEJC,oBAAqB,CACnBC,QAAQ,EACRC,OAAO,EACPC,QAAS,uCACTC,KAAM,uBAERC,iBAAkB,CAChBJ,QAAQ,EACRC,OAAO,EACPC,QAAS,+CACTC,KAAM,oBAERE,0BAA2B,CACzBL,QAAQ,EACRC,OAAO,EACPC,QAAS,uCACTC,KAAM,6BAERG,YAAa,CACXN,QAAQ,EACRC,OAAO,EACPC,QAAS,gCACTK,iBAAkB,+BAClBJ,KAAM,eAERK,YAAa,CACXR,QAAQ,EACRC,OAAO,EACPC,QAAS,6BACTC,KAAM,eAGRM,YAAa,CACXT,QAAQ,EACRE,QAAS,0BACTC,KAAM,eAGRO,gBAAiB,CACfV,QAAQ,EACRW,SAAS,EACTT,QAAS,iCACTC,KAAM,oBAGVS,OAAQ,CACNC,kBAAmB,EACnBC,uBAAwB,IAM1BC,SAAU,CACRC,SAAU,SAACnB,EAAOoB,SAChB,IAAKpB,EAAMC,KAAKmB,GAASjB,OAAQ,CAC/B,IAAMkB,EAAuBrB,EAAMe,OAAOC,kBAAoB,EACxDM,EAA4BtB,EAAMC,KAAKmB,GAAShB,MAClDJ,EAAMe,OAAOE,uBAAyB,EACtCjB,EAAMe,OAAOE,uBAEjB,OAAAM,EAAAA,SAAAA,EAAAA,SAAA,GACKvB,GAAK,CACRC,KAAIsB,WAAAA,EAAAA,SAAA,CAAA,EACCvB,EAAMC,OACRuB,EAAA,CAAA,EAAAA,EAAAJ,4BACIpB,EAAMC,KAAKmB,IAAQ,CACtBjB,QAAQ,IAAIqB,IAGhBT,OAAMQ,WAAAA,EAAAA,SAAA,CAAA,EACDvB,EAAMe,QACT,CAAAC,kBAAmBK,EACnBJ,uBAAwBK,KAG7B,CACF,EACDG,YAAa,SAACzB,EAAOoB,SACnB,GAAIpB,EAAMC,KAAKmB,GAASjB,OAAQ,CAC9B,IAAMkB,EAAuBrB,EAAMe,OAAOC,kBAAoB,EACxDM,EAA4BtB,EAAMC,KAAKmB,GAAShB,MAClDJ,EAAMe,OAAOE,uBAAyB,EACtCjB,EAAMe,OAAOE,uBAEjB,MAAO,CACLhB,KAAIsB,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EACCvB,EAAMC,OAAIuB,EAAA,CAAA,EAAAA,EACZJ,GACIG,EAAAA,SAAAA,EAAAA,SAAA,GAAAvB,EAAMC,KAAKmB,IACd,CAAAjB,QAAQ,EACRa,kBAAmBK,EACnBJ,uBAAwBK,IAE3BE,IACDT,OACKQ,EAAAA,SAAAA,WAAA,CAAA,EAAAvB,EAAMe,QACT,CAAAC,kBAAmBK,EACnBJ,uBAAwBK,IAG7B,CACF,EAEDI,gBAAiB,SAAC1B,GAChB,IAAK,IAAM2B,KAAO3B,EAAMC,KACtBD,EAAMC,KAAK0B,GAAKxB,QAAS,EAE3BH,EAAMe,OAAOC,kBAAoB,EACjChB,EAAMe,OAAOE,uBAAyB,CACvC"}
@@ -29,6 +29,7 @@ export declare const currentUser: {
29
29
  currentUserReady: boolean;
30
30
  conversations: UserConversationTypes;
31
31
  };
32
+ updateMainPresence: (state: CurrentUserTypes, payload: any) => void;
32
33
  updateCurrentDefaultDevice: (state: CurrentUserTypes, payload: any) => void;
33
34
  setCurrentUserReady: (state: CurrentUserTypes, payload: boolean) => {
34
35
  currentUserReady: boolean;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),r=require("../node_modules/@rematch/core/dist/core.esm.js").createModel()({state:{currentUserReady:!1,conversations:{}},reducers:{updateCurrentUser:function(r,s){return e.__assign(e.__assign({},r),s)},updateCurrentDefaultDevice:function(e,r){e.default_device=r},setCurrentUserReady:function(r,s){return e.__assign(e.__assign({},r),{currentUserReady:s})},updateConversations:function(e,r){return e.conversations[r.exten]=r.conversations,e}}});exports.currentUser=r;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),r=require("../node_modules/@rematch/core/dist/core.esm.js").createModel()({state:{currentUserReady:!1,conversations:{}},reducers:{updateCurrentUser:function(r,s){return e.__assign(e.__assign({},r),s)},updateMainPresence:function(e,r){e.mainPresence=r},updateCurrentDefaultDevice:function(e,r){e.default_device=r},setCurrentUserReady:function(r,s){return e.__assign(e.__assign({},r),{currentUserReady:s})},updateConversations:function(e,r){return e.conversations[r.exten]=r.conversations,e}}});exports.currentUser=r;
2
2
  //# sourceMappingURL=currentUser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"currentUser.js","sources":["../../src/models/currentUser.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { createModel } from '@rematch/core'\nimport type { RootModel } from '.'\nimport type { UserInfoTypes, ExtensionTypes, ConversationsTypes } from '../types'\n\nconst defaultState: CurrentUserTypes = {\n currentUserReady: false,\n conversations: {},\n}\n\nexport const currentUser = createModel<RootModel>()({\n state: defaultState,\n reducers: {\n updateCurrentUser: (state, payload: UserInfoTypes) => {\n return {\n ...state,\n ...payload,\n }\n },\n updateCurrentDefaultDevice: (state, payload) => {\n state.default_device = payload\n },\n setCurrentUserReady: (state, payload: boolean) => {\n return {\n ...state,\n currentUserReady: payload,\n }\n },\n updateConversations: (state, payload: ExtensionTypes) => {\n // Update the conversatins of the exten\n state.conversations[payload.exten] = payload.conversations\n return state\n },\n },\n})\n\ninterface CurrentUserTypes extends UserInfoTypes {\n currentUserReady: boolean\n conversations: UserConversationTypes\n}\n\ninterface UserConversationTypes {\n [exten: string]: ConversationsTypes\n}\n"],"names":["currentUser","createModel","state","currentUserReady","conversations","reducers","updateCurrentUser","payload","__assign","updateCurrentDefaultDevice","default_device","setCurrentUserReady","updateConversations","exten"],"mappings":"wHAYaA,4DAAyBC,aAAXA,CAAyB,CAClDC,MANqC,CACrCC,kBAAkB,EAClBC,cAAe,CAAE,GAKjBC,SAAU,CACRC,kBAAmB,SAACJ,EAAOK,GACzB,OACKC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAAN,GACAK,EAEN,EACDE,2BAA4B,SAACP,EAAOK,GAClCL,EAAMQ,eAAiBH,CACxB,EACDI,oBAAqB,SAACT,EAAOK,GAC3B,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GACKN,GAAK,CACRC,iBAAkBI,GAErB,EACDK,oBAAqB,SAACV,EAAOK,GAG3B,OADAL,EAAME,cAAcG,EAAQM,OAASN,EAAQH,cACtCF,CACR"}
1
+ {"version":3,"file":"currentUser.js","sources":["../../src/models/currentUser.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { createModel } from '@rematch/core'\nimport type { RootModel } from '.'\nimport type { UserInfoTypes, ExtensionTypes, ConversationsTypes } from '../types'\n\nconst defaultState: CurrentUserTypes = {\n currentUserReady: false,\n conversations: {},\n}\n\nexport const currentUser = createModel<RootModel>()({\n state: defaultState,\n reducers: {\n updateCurrentUser: (state, payload: UserInfoTypes) => {\n return {\n ...state,\n ...payload,\n }\n },\n updateMainPresence: (state, payload) => {\n state.mainPresence = payload\n },\n updateCurrentDefaultDevice: (state, payload) => {\n state.default_device = payload\n },\n setCurrentUserReady: (state, payload: boolean) => {\n return {\n ...state,\n currentUserReady: payload,\n }\n },\n updateConversations: (state, payload: ExtensionTypes) => {\n // Update the conversatins of the exten\n state.conversations[payload.exten] = payload.conversations\n return state\n },\n },\n})\n\ninterface CurrentUserTypes extends UserInfoTypes {\n currentUserReady: boolean\n conversations: UserConversationTypes\n}\n\ninterface UserConversationTypes {\n [exten: string]: ConversationsTypes\n}\n"],"names":["currentUser","createModel","state","currentUserReady","conversations","reducers","updateCurrentUser","payload","__assign","updateMainPresence","mainPresence","updateCurrentDefaultDevice","default_device","setCurrentUserReady","updateConversations","exten"],"mappings":"wHAYaA,4DAAyBC,aAAXA,CAAyB,CAClDC,MANqC,CACrCC,kBAAkB,EAClBC,cAAe,CAAE,GAKjBC,SAAU,CACRC,kBAAmB,SAACJ,EAAOK,GACzB,OACKC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAAN,GACAK,EAEN,EACDE,mBAAoB,SAACP,EAAOK,GAC1BL,EAAMQ,aAAeH,CACtB,EACDI,2BAA4B,SAACT,EAAOK,GAClCL,EAAMU,eAAiBL,CACxB,EACDM,oBAAqB,SAACX,EAAOK,GAC3B,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GACKN,GAAK,CACRC,iBAAkBI,GAErB,EACDO,oBAAqB,SAACZ,EAAOK,GAG3B,OADAL,EAAME,cAAcG,EAAQQ,OAASR,EAAQH,cACtCF,CACR"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("../store/index.js");exports.answerPhysical=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c;return e.__generator(this,(function(u){switch(u.label){case 0:r=t.store.getState().currentUser.default_device,s={endpointId:null==r?void 0:r.id,endpointType:"extension"},u.label=1;case 1:return u.trys.push([1,3,,4]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,[4,fetch("".concat(a,"/astproxy/answer"),{method:"POST",headers:e.__assign({},o),body:JSON.stringify(s)})];case 2:if(!(i=u.sent()).ok)throw new Error(i.statusText);return[2,!0];case 3:throw c=u.sent(),new Error(c);case 4:return[2]}}))}))},exports.attendedTransfer=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/atxfer"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.callPhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u;return e.__generator(this,(function(h){switch(h.label){case 0:s=t.store.getState().currentCall.ownerExtension,n={endpointId:s,endpointTpe:"extension",number:r},h.label=1;case 1:return h.trys.push([1,3,,4]),a=t.store.getState().fetchDefaults,o=a.baseURL,i=a.headers,[4,fetch("".concat(o,"/astproxy/call"),{method:"POST",headers:e.__assign({},i),body:JSON.stringify(n)})];case 2:if(!(c=h.sent()).ok)throw new Error(c.statusText);return[2,!0];case 3:throw u=h.sent(),new Error(u);case 4:return[2]}}))}))},exports.getAllExtensions=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(i){switch(i.label){case 0:return i.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/astproxy/extensions"),{headers:e.__assign({},n)})];case 1:if(!(a=i.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,i.sent()];case 3:throw o=i.sent(),new Error(o);case 4:return[2]}}))}))},exports.hangupConversation=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.hangupPhysical=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:r=t.store.getState().currentCall,s=r.ownerExtension,n=r.conversationId,a={convid:n,endpointId:s,endpointType:"extension"},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.hangupPhysicalRecordingCall=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:r=t.store.getState().physicalRecorder,s=r.ownerExtension,n=r.conversationId,a={convid:n,endpointId:s,endpointType:"extension"},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.mutePhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h,d;return e.__generator(this,(function(f){switch(f.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,a=s.conversationId,o={convid:a,endpointId:n},f.label=1;case 1:return f.trys.push([1,3,,4]),i=t.store.getState().fetchDefaults,c=i.baseURL,u=i.headers,[4,fetch("".concat(c,"/astproxy/toggle_mute"),{method:"POST",headers:e.__assign({},u),body:JSON.stringify(o)})];case 2:if(!(h=f.sent()).ok)throw new Error(h.statusText);return t.store.dispatch.currentCall.updateCurrentCall({muted:r}),[2,!0];case 3:throw d=f.sent(),new Error(d);case 4:return[2]}}))}))},exports.parkConversation=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/park"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.pausePhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,s.conversationId,a={endpointId:n},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/toggle_hold"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return t.store.dispatch.currentCall.updateCurrentCall({paused:r}),[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.sendPhysicalDTMF=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h,d;return e.__generator(this,(function(f){switch(f.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,a=s.conversationId,o={convid:a,endpointId:n,tone:r.toString()},f.label=1;case 1:return f.trys.push([1,3,,4]),i=t.store.getState().fetchDefaults,c=i.baseURL,u=i.headers,[4,fetch("".concat(c,"/astproxy/dtmf"),{method:"POST",headers:e.__assign({},u),body:JSON.stringify(o)})];case 2:if(!(h=f.sent()).ok)throw new Error(h.statusText);return[2,!0];case 3:throw d=f.sent(),new Error(d);case 4:return[2]}}))}))},exports.toggleRecord=function(r,s){return e.__awaiter(this,void 0,void 0,(function(){var n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,[4,fetch("".concat(a,"/astproxy/").concat(r),{method:"POST",headers:e.__assign({},o),body:JSON.stringify(s)})];case 1:if(!(i=c.sent()).ok)throw new Error(i.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("../store/index.js");exports.answerPhysical=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c;return e.__generator(this,(function(u){switch(u.label){case 0:r=t.store.getState().currentUser.default_device,s={endpointId:null==r?void 0:r.id,endpointType:"extension"},u.label=1;case 1:return u.trys.push([1,3,,4]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,[4,fetch("".concat(a,"/astproxy/answer"),{method:"POST",headers:e.__assign({},o),body:JSON.stringify(s)})];case 2:if(!(i=u.sent()).ok)throw new Error(i.statusText);return[2,!0];case 3:throw c=u.sent(),new Error(c);case 4:return[2]}}))}))},exports.attendedTransfer=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/atxfer"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.callPhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u;return e.__generator(this,(function(h){switch(h.label){case 0:s=t.store.getState().currentCall.ownerExtension,n={endpointId:s,endpointTpe:"extension",number:r},h.label=1;case 1:return h.trys.push([1,3,,4]),a=t.store.getState().fetchDefaults,o=a.baseURL,i=a.headers,[4,fetch("".concat(o,"/astproxy/call"),{method:"POST",headers:e.__assign({},i),body:JSON.stringify(n)})];case 2:if(!(c=h.sent()).ok)throw new Error(c.statusText);return[2,!0];case 3:throw u=h.sent(),new Error(u);case 4:return[2]}}))}))},exports.getAllExtensions=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(i){switch(i.label){case 0:return i.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/astproxy/extensions"),{headers:e.__assign({},n)})];case 1:if(!(a=i.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,i.sent()];case 3:throw o=i.sent(),new Error(o);case 4:return[2]}}))}))},exports.hangupConversation=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.hangupPhysical=function(){var r;return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h,d,l,f,w;return e.__generator(this,(function(_){switch(_.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,a=s.conversationId,o=t.store.getState().currentUser,c="/astproxy/",u="",""!==(null==(i={convid:a,endpointId:n,endpointType:"extension"})?void 0:i.convid)&&void 0!==(null==i?void 0:i.convid)?u="hangup":(u="cancel",i.endpointId=null===(r=null==o?void 0:o.default_device)||void 0===r?void 0:r.id),_.label=1;case 1:return _.trys.push([1,3,,4]),h=t.store.getState().fetchDefaults,d=h.baseURL,l=h.headers,[4,fetch("".concat(d)+"".concat(c)+"".concat(u),{method:"POST",headers:e.__assign({},l),body:JSON.stringify(i)})];case 2:if(!(f=_.sent()).ok)throw new Error(f.statusText);return[2,!0];case 3:throw w=_.sent(),new Error(w);case 4:return[2]}}))}))},exports.hangupPhysicalRecordingCall=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:r=t.store.getState().physicalRecorder,s=r.ownerExtension,n=r.conversationId,a={convid:n,endpointId:s,endpointType:"extension"},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.mutePhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h,d;return e.__generator(this,(function(l){switch(l.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,a=s.conversationId,o={convid:a,endpointId:n},l.label=1;case 1:return l.trys.push([1,3,,4]),i=t.store.getState().fetchDefaults,c=i.baseURL,u=i.headers,[4,fetch("".concat(c,"/astproxy/toggle_mute"),{method:"POST",headers:e.__assign({},u),body:JSON.stringify(o)})];case 2:if(!(h=l.sent()).ok)throw new Error(h.statusText);return t.store.dispatch.currentCall.updateCurrentCall({muted:r}),[2,!0];case 3:throw d=l.sent(),new Error(d);case 4:return[2]}}))}))},exports.parkConversation=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/park"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.pausePhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,s.conversationId,a={endpointId:n},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/toggle_hold"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return t.store.dispatch.currentCall.updateCurrentCall({paused:r}),[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.sendPhysicalDTMF=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h,d;return e.__generator(this,(function(l){switch(l.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,a=s.conversationId,o={convid:a,endpointId:n,tone:r.toString()},l.label=1;case 1:return l.trys.push([1,3,,4]),i=t.store.getState().fetchDefaults,c=i.baseURL,u=i.headers,[4,fetch("".concat(c,"/astproxy/dtmf"),{method:"POST",headers:e.__assign({},u),body:JSON.stringify(o)})];case 2:if(!(h=l.sent()).ok)throw new Error(h.statusText);return[2,!0];case 3:throw d=l.sent(),new Error(d);case 4:return[2]}}))}))},exports.toggleRecord=function(r,s){return e.__awaiter(this,void 0,void 0,(function(){var n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,[4,fetch("".concat(a,"/astproxy/").concat(r),{method:"POST",headers:e.__assign({},o),body:JSON.stringify(s)})];case 1:if(!(i=c.sent()).ok)throw new Error(i.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))};
2
2
  //# sourceMappingURL=astproxy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"astproxy.js","sources":["../../src/services/astproxy.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../store'\nimport { ExtensionsTypes, TransferTypes } from '../types'\nimport { useSelector } from 'react-redux'\n\n/**\n * Get all extensions\n */\nexport async function getAllExtensions(): Promise<ExtensionsTypes> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/extensions`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Start blind transfer\n */\nexport async function blindTransfer(body: TransferTypes) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/blindtransfer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Start attended transfer\n */\nexport async function attendedTransfer(body: TransferTypes) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/atxfer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Hangup a conversation\n */\nexport async function hangupConversation(body: { convid: string; endpointId: string }) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function parkConversation(body: {\n applicantId: string // Current user main extension\n convid: string\n endpointId: string // Current user main extension\n}) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/park`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function answerPhysical() {\n // get data\n const { default_device } = store.getState().currentUser\n\n // compose body\n let body: any = {\n endpointId: default_device?.id,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/answer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function hangupPhysical() {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function hangupPhysicalRecordingCall() {\n // get data\n const { ownerExtension, conversationId } = store.getState().physicalRecorder\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function mutePhysical(toggleMute: boolean) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/toggle_mute`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n store.dispatch.currentCall.updateCurrentCall({\n muted: toggleMute,\n })\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function pausePhysical(togglePause: boolean) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n endpointId: ownerExtension,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/toggle_hold`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n store.dispatch.currentCall.updateCurrentCall({\n paused: togglePause,\n })\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function sendPhysicalDTMF(key: string) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n tone: key.toString(),\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/dtmf`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function callPhysical(to: string) {\n // get data\n const { ownerExtension } = store.getState().currentCall\n\n // compose body\n let body: any = {\n endpointId: ownerExtension,\n endpointTpe: 'extension',\n number: to,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/call`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function toggleRecord(recordingType: any, obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/${recordingType}`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n"],"names":["default_device","store","getState","currentUser","body","endpointId","id","endpointType","_a","fetchDefaults","baseURL","headers","fetch","concat","method","__assign","JSON","stringify","response","_b","sent","ok","Error","statusText","error_6","error_3","to","ownerExtension","currentCall","endpointTpe","number","error_12","json","error_1","error_4","conversationId","convid","_c","error_7","physicalRecorder","error_8","toggleMute","dispatch","updateCurrentCall","muted","error_9","error_5","togglePause","paused","error_10","key","tone","toString","error_11","recordingType","obj"],"mappings":"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"}
1
+ {"version":3,"file":"astproxy.js","sources":["../../src/services/astproxy.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../store'\nimport { ExtensionsTypes, TransferTypes } from '../types'\nimport { useSelector } from 'react-redux'\n\n/**\n * Get all extensions\n */\nexport async function getAllExtensions(): Promise<ExtensionsTypes> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/extensions`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Start blind transfer\n */\nexport async function blindTransfer(body: TransferTypes) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/blindtransfer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Start attended transfer\n */\nexport async function attendedTransfer(body: TransferTypes) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/atxfer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Hangup a conversation\n */\nexport async function hangupConversation(body: { convid: string; endpointId: string }) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function parkConversation(body: {\n applicantId: string // Current user main extension\n convid: string\n endpointId: string // Current user main extension\n}) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/park`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function answerPhysical() {\n // get data\n const { default_device } = store.getState().currentUser\n\n // compose body\n let body: any = {\n endpointId: default_device?.id,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/answer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function hangupPhysical() {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n const currentUserInformation = store.getState().currentUser\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n endpointType: 'extension',\n }\n let astproxyUrl = '/astproxy/'\n let actionUrl = ''\n if (body?.convid !== '' && body?.convid !== undefined) {\n actionUrl = 'hangup'\n } else {\n actionUrl = 'cancel'\n // set user default device as endpointId on cancel action\n body.endpointId = currentUserInformation?.default_device?.id\n }\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n // if default device is physical check if conversation is empty or not\n // if conversation is empty then cancel the call else hangup the call\n const response = await fetch(`${baseURL}` + `${astproxyUrl}` + `${actionUrl}`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function hangupPhysicalRecordingCall() {\n // get data\n const { ownerExtension, conversationId } = store.getState().physicalRecorder\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function mutePhysical(toggleMute: boolean) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/toggle_mute`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n store.dispatch.currentCall.updateCurrentCall({\n muted: toggleMute,\n })\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function pausePhysical(togglePause: boolean) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n endpointId: ownerExtension,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/toggle_hold`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n store.dispatch.currentCall.updateCurrentCall({\n paused: togglePause,\n })\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function sendPhysicalDTMF(key: string) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n tone: key.toString(),\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/dtmf`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function callPhysical(to: string) {\n // get data\n const { ownerExtension } = store.getState().currentCall\n\n // compose body\n let body: any = {\n endpointId: ownerExtension,\n endpointTpe: 'extension',\n number: to,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/call`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function toggleRecord(recordingType: any, obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/${recordingType}`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n"],"names":["default_device","store","getState","currentUser","body","endpointId","id","endpointType","_a","fetchDefaults","baseURL","headers","fetch","concat","method","__assign","JSON","stringify","response","_b","sent","ok","Error","statusText","error_6","error_3","to","ownerExtension","currentCall","endpointTpe","number","error_12","json","error_1","error_4","conversationId","currentUserInformation","astproxyUrl","actionUrl","convid","undefined","_c","_d","error_7","physicalRecorder","error_8","toggleMute","dispatch","updateCurrentCall","muted","error_9","error_5","togglePause","paused","error_10","key","tone","toString","error_11","recordingType","obj"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nethesis/phone-island",
3
3
  "author": "Nethesis",
4
- "version": "0.8.29",
4
+ "version": "0.8.31",
5
5
  "description": "NethVoice CTI Phone Island",
6
6
  "keywords": [
7
7
  "nethserver",