@nethesis/phone-island 0.7.57 → 0.7.58
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.
|
@@ -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 n=require("../node_modules/socket.io-client/build/esm/index.js"),t=require("../lib/phone/conversation.js"),c=require("../utils/genericFunctions/withTimeout.js");require("../node_modules/mic-check/lib/index.js"),require("../lib/webrtc/janus.js");var o=require("../store/index.js"),r=require("../events/SocketEvents.js"),u=require("../node_modules/react-redux/es/hooks/useDispatch.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("../node_modules/react-redux/es/components/Context.js"),require("../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("../node_modules/react-redux/node_modules/react-is/index.js");var a=s(e);exports.Socket=function(s){var i=s.hostName,d=s.username,l=s.authToken,m=s.children,p=u.useDispatch(),f=e.useRef(),g=e.useRef();return e.useEffect((function(){return g.current=n.io(i,{upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3}),g.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(g.current.id))})),g.current.on("disconnect",(function(e){console.log("Socket disconnect - reason: ".concat(e))})),g.current.io.on("error",(function(e){console.debug("Socket error: ",e)})),g.current.on("connect_error",(function(e){console.debug("Socket connect_error: ",e)})),g.current.io.on("reconnect",(function(e){console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(g.current.id,")"))})),g.current.io.on("reconnect_attempt",(function(e){console.debug("Socket reconnect_attempt ".concat(e))})),g.current.io.on("reconnect_error",(function(e){console.debug("Socket reconnect_error: ",e)})),g.current.io.on("reconnect_failed",(function(){console.debug("Socket reconnect_failed")})),f.current=setInterval((function(){var e=Date.now();g.current.volatile.emit("ping",c.withTimeout((function(){p.alerts.removeAlert("socket_down");var n=Date.now()-e;console.debug("Socket latency: ".concat(n,"ms")),console.debug("Socket is reachable!")}),(function(){p.alerts.setAlert("socket_down"),console.debug("Socket is unreachable!")}),2e3))}),5e3),g.current.on("connect",(function(){console.log("Socket on: "+i+" is connected!"),g.current.emit("login",{accessKeyId:"".concat(d),token:l,uaType:"desktop"})})),g.current.on("authe_ok",(function(){console.log("Socket authentication success!")})),g.current.on("userMainPresenceUpdate",(function(e){r.dispatchMainPresence(e)})),g.current.on("extenUpdate",(function(e){p.users.updateExtension(e),r.dispatchConversations(e);var n=e.conversations[Object.keys(e.conversations)[0]]||{};e.username===d&&function(e,n){if(Object.keys(n).length>0){var c=e.status;if(c){var r=o.store.getState().users.extensions;switch(c){case"ringing":p.currentCall.checkIncomingUpdateAndPlay({displayName:t.getDisplayName(n),number:"".concat(n.counterpartNum),incomingSocket:!0,username:"".concat(r&&r[n.counterpartNum].username)||""});break;case"busy":n&&n.connected?p.currentCall.updateCurrentCall({accepted:!0,incoming:!1,outgoing:!1,displayName:t.getDisplayName(n),number:"".concat(n.counterpartNum),startTime:"".concat(n.startTime/1e3),username:"".concat(r&&r[n.counterpartNum].username)||""}):n&&!n.connected&&"out"===n.direction&&p.currentCall.checkOutgoingUpdateAndPlay({outgoingSocket:!0,displayName:t.getDisplayName(n),number:"".concat(n.counterpartNum),username:"".concat(r&&r[n.counterpartNum].username)||""})}}}}(e,n)})),g.current.on("queueUpdate",(function(e){r.dispatchQueueUpdate(e)})),g.current.on("queueMemberUpdate",(function(e){r.dispatchQueueMemberUpdate(e)})),function(){clearInterval(f.current),g.current.close()}}),[]),a.default.createElement(a.default.Fragment,null,m)};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../node_modules/react-redux/es/index.js");var n=require("../node_modules/socket.io-client/build/esm/index.js"),t=require("../lib/phone/conversation.js"),c=require("../utils/genericFunctions/withTimeout.js");require("../node_modules/mic-check/lib/index.js"),require("../lib/webrtc/janus.js");var o=require("../store/index.js"),r=require("../events/SocketEvents.js"),u=require("../node_modules/react-redux/es/hooks/useDispatch.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("../node_modules/react-redux/es/components/Context.js"),require("../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("../node_modules/react-redux/node_modules/react-is/index.js");var a=s(e);exports.Socket=function(s){var i=s.hostName,d=s.username,l=s.authToken,m=s.children,p=u.useDispatch(),f=e.useRef(),g=e.useRef();return e.useEffect((function(){return g.current=n.io(i,{upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3}),g.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(g.current.id))})),g.current.on("disconnect",(function(e){console.log("Socket disconnect - reason: ".concat(e))})),g.current.io.on("error",(function(e){console.debug("Socket error: ",e)})),g.current.on("connect_error",(function(e){console.debug("Socket connect_error: ",e)})),g.current.io.on("reconnect",(function(e){console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(g.current.id,")"))})),g.current.io.on("reconnect_attempt",(function(e){console.debug("Socket reconnect_attempt ".concat(e))})),g.current.io.on("reconnect_error",(function(e){console.debug("Socket reconnect_error: ",e)})),g.current.io.on("reconnect_failed",(function(){console.debug("Socket reconnect_failed")})),f.current=setInterval((function(){var e=Date.now();g.current.volatile.emit("ping",c.withTimeout((function(){p.alerts.removeAlert("socket_down");var n=Date.now()-e;console.debug("Socket latency: ".concat(n,"ms")),console.debug("Socket is reachable!")}),(function(){p.alerts.setAlert("socket_down"),console.debug("Socket is unreachable!")}),2e3))}),5e3),g.current.on("connect",(function(){console.log("Socket on: "+i+" is connected!"),g.current.emit("login",{accessKeyId:"".concat(d),token:l,uaType:"desktop"})})),g.current.on("authe_ok",(function(){console.log("Socket authentication success!")})),g.current.on("userMainPresenceUpdate",(function(e){r.dispatchMainPresence(e)})),g.current.on("extenUpdate",(function(e){p.users.updateExtension(e),r.dispatchConversations(e);var n=e.conversations[Object.keys(e.conversations)[0]]||{};e.username===d&&function(e,n){if(Object.keys(n).length>0){var c=e.status;if(c){var r=o.store.getState().users.extensions;switch(c){case"ringing":p.currentCall.checkIncomingUpdateAndPlay({displayName:t.getDisplayName(n),number:"".concat(n.counterpartNum),incomingSocket:!0,username:"".concat(r&&r[n.counterpartNum]&&r[n.counterpartNum].username)||""});break;case"busy":n&&n.connected?p.currentCall.updateCurrentCall({accepted:!0,incoming:!1,outgoing:!1,displayName:t.getDisplayName(n),number:"".concat(n.counterpartNum),startTime:"".concat(n.startTime/1e3),username:"".concat(r&&r[n.counterpartNum]&&r[n.counterpartNum].username)||""}):n&&!n.connected&&"out"===n.direction&&p.currentCall.checkOutgoingUpdateAndPlay({outgoingSocket:!0,displayName:t.getDisplayName(n),number:"".concat(n.counterpartNum),username:"".concat(r&&r[n.counterpartNum]&&r[n.counterpartNum].username)||""})}}}}(e,n)})),g.current.on("queueUpdate",(function(e){r.dispatchQueueUpdate(e)})),g.current.on("queueMemberUpdate",(function(e){r.dispatchQueueMemberUpdate(e)})),function(){clearInterval(f.current),g.current.close()}}),[]),a.default.createElement(a.default.Fragment,null,m)};
|
|
2
2
|
//# sourceMappingURL=Socket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Socket.js","sources":["../../src/components/Socket.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, FC, useEffect, useRef } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { Dispatch } from '../store'\nimport { io } from 'socket.io-client'\nimport { getDisplayName } from '../lib/phone/conversation'\nimport {\n dispatchMainPresence,\n dispatchConversations,\n dispatchQueueUpdate,\n dispatchQueueMemberUpdate,\n} from '../events'\nimport { store } from '../store'\nimport { withTimeout } from '../utils'\nimport type {\n ConversationsTypes,\n ExtensionTypes,\n QueuesUpdateTypes,\n QueueUpdateMemberTypes,\n} from '../types'\n\ninterface SocketProps {\n children: ReactNode\n hostName: string\n username: string\n authToken: string\n}\n\nexport const Socket: FC<SocketProps> = ({ hostName, username, authToken, children }) => {\n const dispatch = useDispatch<Dispatch>()\n const connectionCheckInterval = useRef<any>()\n const socket = useRef<any>()\n\n useEffect(() => {\n /**\n * Manages event and data for the currentUser\n *\n * @param res The data from the socket\n * @param conv The conversation data\n */\n const handleUserEvents = (res: any, conv: ConversationsTypes) => {\n // Check conversation isn't empty\n if (Object.keys(conv).length > 0) {\n const status: string = res.status\n if (status) {\n const { extensions } = store.getState().users\n switch (status) {\n case 'ringing':\n // The name and the number are updated here not in webrtc\n dispatch.currentCall.checkIncomingUpdateAndPlay({\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n incomingSocket: true,\n username: `${extensions && extensions[conv.counterpartNum].username}` || '',\n })\n break\n // @ts-ignore\n case 'busy':\n if (conv && conv.connected) {\n // Set current call accepted\n dispatch.currentCall.updateCurrentCall({\n accepted: true,\n incoming: false,\n outgoing: false,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n startTime: `${conv.startTime / 1000}`,\n username: `${extensions && extensions[conv.counterpartNum].username}` || '',\n })\n }\n // Handle outgoing call\n else if (conv && !conv.connected && conv.direction === 'out') {\n // Update the current outgoing conversation\n dispatch.currentCall.checkOutgoingUpdateAndPlay({\n outgoingSocket: true,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n username: `${extensions && extensions[conv.counterpartNum].username}` || '',\n })\n }\n default:\n break\n }\n }\n }\n }\n\n /**\n * Initialize socket connection and listeners\n */\n const initSocketConnection = () => {\n socket.current = io(hostName, {\n upgrade: false,\n transports: ['websocket'],\n reconnection: true,\n reconnectionDelay: 2000,\n })\n\n // Handle socket errors\n socket.current.on('connect', () => {\n console.debug(`Socket connected sid: ${socket.current.id}`)\n })\n socket.current.on('disconnect', (reason) => {\n console.log(`Socket disconnect - reason: ${reason}`)\n })\n socket.current.io.on('error', (err) => {\n console.debug(`Socket error: `, err)\n })\n socket.current.on('connect_error', (err) => {\n console.debug(`Socket connect_error: `, err)\n })\n socket.current.io.on('reconnect', (attempt) => {\n console.debug(`Socket reconnect attemp ${attempt} (sid: ${socket.current.id})`)\n })\n socket.current.io.on('reconnect_attempt', (attempt) => {\n console.debug(`Socket reconnect_attempt ${attempt}`)\n })\n socket.current.io.on('reconnect_error', (err) => {\n console.debug(`Socket reconnect_error: `, err)\n })\n socket.current.io.on('reconnect_failed', () => {\n console.debug(`Socket reconnect_failed`)\n })\n\n // Checks if socket is reachable every 5 seconds\n connectionCheckInterval.current = setInterval(() => {\n const start = Date.now()\n socket.current.volatile.emit(\n 'ping',\n withTimeout(\n () => {\n // Remove socket_down alert\n dispatch.alerts.removeAlert('socket_down')\n // Calculate and log latency\n const latency = Date.now() - start\n console.debug(`Socket latency: ${latency}ms`)\n console.debug('Socket is reachable!')\n },\n () => {\n // Set socket_down alert\n dispatch.alerts.setAlert('socket_down')\n console.debug('Socket is unreachable!')\n },\n 2000,\n ),\n )\n }, 5000)\n\n // Handle connection message\n socket.current.on('connect', () => {\n console.log('Socket on: ' + hostName + ' is connected!')\n socket.current.emit('login', {\n accessKeyId: `${username}`,\n token: authToken,\n uaType: 'desktop',\n })\n })\n\n // Handle authentication success message\n socket.current.on('authe_ok', () => {\n console.log('Socket authentication success!')\n })\n\n socket.current.on('userMainPresenceUpdate', (res) => {\n // Pass data to dispatchMainPresence\n dispatchMainPresence(res)\n })\n\n socket.current.on('extenUpdate', (res: ExtensionTypes) => {\n // Update extensions and conversations in users store\n dispatch.users.updateExtension(res)\n // Dispatch conversations event\n dispatchConversations(res)\n // Initialize conversation\n const conv: ConversationsTypes = res.conversations[Object.keys(res.conversations)[0]] || {}\n // Handle only the events of the user\n if (res.username === username) {\n handleUserEvents(res, conv)\n }\n })\n\n socket.current.on('queueUpdate', (res: QueuesUpdateTypes) => {\n // Dispatch queueUpdate event\n dispatchQueueUpdate(res)\n })\n\n socket.current.on('queueMemberUpdate', (res: QueueUpdateMemberTypes) => {\n // Dispatch queueMemberUpdate event\n dispatchQueueMemberUpdate(res)\n })\n }\n\n initSocketConnection()\n\n // Stop the check socket interval\n // Close the socket connection\n return () => {\n clearInterval(connectionCheckInterval.current)\n socket.current.close()\n }\n }, [])\n\n return <>{children}</>\n}\n"],"names":["_a","hostName","username","authToken","children","dispatch","useDispatch","connectionCheckInterval","useRef","socket","useEffect","current","io","upgrade","transports","reconnection","reconnectionDelay","on","console","debug","concat","id","reason","log","err","attempt","setInterval","start","Date","now","volatile","emit","withTimeout","alerts","removeAlert","latency","setAlert","accessKeyId","token","uaType","res","dispatchMainPresence","users","updateExtension","dispatchConversations","conv","conversations","Object","keys","length","status_1","status","extensions","store","getState","currentCall","checkIncomingUpdateAndPlay","displayName","getDisplayName","number","counterpartNum","incomingSocket","connected","updateCurrentCall","accepted","incoming","outgoing","startTime","direction","checkOutgoingUpdateAndPlay","outgoingSocket","handleUserEvents","dispatchQueueUpdate","dispatchQueueMemberUpdate","clearInterval","close","React","createElement","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Socket.js","sources":["../../src/components/Socket.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, FC, useEffect, useRef } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { Dispatch } from '../store'\nimport { io } from 'socket.io-client'\nimport { getDisplayName } from '../lib/phone/conversation'\nimport {\n dispatchMainPresence,\n dispatchConversations,\n dispatchQueueUpdate,\n dispatchQueueMemberUpdate,\n} from '../events'\nimport { store } from '../store'\nimport { withTimeout } from '../utils'\nimport type {\n ConversationsTypes,\n ExtensionTypes,\n QueuesUpdateTypes,\n QueueUpdateMemberTypes,\n} from '../types'\n\ninterface SocketProps {\n children: ReactNode\n hostName: string\n username: string\n authToken: string\n}\n\nexport const Socket: FC<SocketProps> = ({ hostName, username, authToken, children }) => {\n const dispatch = useDispatch<Dispatch>()\n const connectionCheckInterval = useRef<any>()\n const socket = useRef<any>()\n\n useEffect(() => {\n /**\n * Manages event and data for the currentUser\n *\n * @param res The data from the socket\n * @param conv The conversation data\n */\n const handleCurrentUserEvents = (res: any, conv: ConversationsTypes) => {\n // Check conversation isn't empty\n if (Object.keys(conv).length > 0) {\n const status: string = res.status\n if (status) {\n const { extensions } = store.getState().users\n switch (status) {\n case 'ringing':\n // The name and the number are updated here not in webrtc\n dispatch.currentCall.checkIncomingUpdateAndPlay({\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n incomingSocket: true,\n username: `${extensions && extensions[conv.counterpartNum] && extensions[conv.counterpartNum].username}` || '',\n })\n break\n // @ts-ignore\n case 'busy':\n if (conv && conv.connected) {\n // Set current call accepted\n dispatch.currentCall.updateCurrentCall({\n accepted: true,\n incoming: false,\n outgoing: false,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n startTime: `${conv.startTime / 1000}`,\n username: `${extensions && extensions[conv.counterpartNum] && extensions[conv.counterpartNum].username}` || '',\n })\n }\n // Handle outgoing call\n else if (conv && !conv.connected && conv.direction === 'out') {\n // Update the current outgoing conversation\n dispatch.currentCall.checkOutgoingUpdateAndPlay({\n outgoingSocket: true,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n username: `${extensions && extensions[conv.counterpartNum] && extensions[conv.counterpartNum].username}` || '',\n })\n }\n default:\n break\n }\n }\n }\n }\n\n /**\n * Initialize socket connection and listeners\n */\n const initSocketConnection = () => {\n socket.current = io(hostName, {\n upgrade: false,\n transports: ['websocket'],\n reconnection: true,\n reconnectionDelay: 2000,\n })\n\n // Handle socket errors\n socket.current.on('connect', () => {\n console.debug(`Socket connected sid: ${socket.current.id}`)\n })\n socket.current.on('disconnect', (reason) => {\n console.log(`Socket disconnect - reason: ${reason}`)\n })\n socket.current.io.on('error', (err) => {\n console.debug(`Socket error: `, err)\n })\n socket.current.on('connect_error', (err) => {\n console.debug(`Socket connect_error: `, err)\n })\n socket.current.io.on('reconnect', (attempt) => {\n console.debug(`Socket reconnect attemp ${attempt} (sid: ${socket.current.id})`)\n })\n socket.current.io.on('reconnect_attempt', (attempt) => {\n console.debug(`Socket reconnect_attempt ${attempt}`)\n })\n socket.current.io.on('reconnect_error', (err) => {\n console.debug(`Socket reconnect_error: `, err)\n })\n socket.current.io.on('reconnect_failed', () => {\n console.debug(`Socket reconnect_failed`)\n })\n\n // Checks if socket is reachable every 5 seconds\n connectionCheckInterval.current = setInterval(() => {\n const start = Date.now()\n socket.current.volatile.emit(\n 'ping',\n withTimeout(\n () => {\n // Remove socket_down alert\n dispatch.alerts.removeAlert('socket_down')\n // Calculate and log latency\n const latency = Date.now() - start\n console.debug(`Socket latency: ${latency}ms`)\n console.debug('Socket is reachable!')\n },\n () => {\n // Set socket_down alert\n dispatch.alerts.setAlert('socket_down')\n console.debug('Socket is unreachable!')\n },\n 2000,\n ),\n )\n }, 5000)\n\n // Handle connection message\n socket.current.on('connect', () => {\n console.log('Socket on: ' + hostName + ' is connected!')\n socket.current.emit('login', {\n accessKeyId: `${username}`,\n token: authToken,\n uaType: 'desktop',\n })\n })\n\n // Handle authentication success message\n socket.current.on('authe_ok', () => {\n console.log('Socket authentication success!')\n })\n\n socket.current.on('userMainPresenceUpdate', (res) => {\n // Pass data to dispatchMainPresence\n dispatchMainPresence(res)\n })\n\n socket.current.on('extenUpdate', (res: ExtensionTypes) => {\n // Update extensions and conversations in users store\n dispatch.users.updateExtension(res)\n // Dispatch conversations event\n dispatchConversations(res)\n // Initialize conversation\n const conv: ConversationsTypes = res.conversations[Object.keys(res.conversations)[0]] || {}\n // Handle only the events of the user\n if (res.username === username) {\n handleCurrentUserEvents(res, conv)\n }\n })\n\n socket.current.on('queueUpdate', (res: QueuesUpdateTypes) => {\n // Dispatch queueUpdate event\n dispatchQueueUpdate(res)\n })\n\n socket.current.on('queueMemberUpdate', (res: QueueUpdateMemberTypes) => {\n // Dispatch queueMemberUpdate event\n dispatchQueueMemberUpdate(res)\n })\n }\n\n initSocketConnection()\n\n // Stop the check socket interval\n // Close the socket connection\n return () => {\n clearInterval(connectionCheckInterval.current)\n socket.current.close()\n }\n }, [])\n\n return <>{children}</>\n}\n"],"names":["_a","hostName","username","authToken","children","dispatch","useDispatch","connectionCheckInterval","useRef","socket","useEffect","current","io","upgrade","transports","reconnection","reconnectionDelay","on","console","debug","concat","id","reason","log","err","attempt","setInterval","start","Date","now","volatile","emit","withTimeout","alerts","removeAlert","latency","setAlert","accessKeyId","token","uaType","res","dispatchMainPresence","users","updateExtension","dispatchConversations","conv","conversations","Object","keys","length","status_1","status","extensions","store","getState","currentCall","checkIncomingUpdateAndPlay","displayName","getDisplayName","number","counterpartNum","incomingSocket","connected","updateCurrentCall","accepted","incoming","outgoing","startTime","direction","checkOutgoingUpdateAndPlay","outgoingSocket","handleCurrentUserEvents","dispatchQueueUpdate","dispatchQueueMemberUpdate","clearInterval","close","React","createElement","Fragment"],"mappings":"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"}
|