From 8d5647c7603321132eee7ac233a508a814dbc42a Mon Sep 17 00:00:00 2001 From: Matheo Bonucia Date: Tue, 25 Jun 2024 15:58:23 -0400 Subject: [PATCH] Novos pacotes para capturar recursos externos e mais verbose para debug --- asset/context/CallContext.js | 41 ++++++++++++++++++++-- asset/screens/ConfigScreen/ConfigScreen.js | 2 +- package-lock.json | 29 +++++++++++++++ package.json | 1 + 4 files changed, 69 insertions(+), 4 deletions(-) diff --git a/asset/context/CallContext.js b/asset/context/CallContext.js index 2fb2c40..bbb0e4b 100644 --- a/asset/context/CallContext.js +++ b/asset/context/CallContext.js @@ -9,7 +9,7 @@ import React, { import {StackActions, useNavigation} from '@react-navigation/native'; import InCallManager from 'react-native-incall-manager'; import JsSIP from 'react-native-jssip'; -import {Alert} from 'react-native'; +import {Alert, Platform} from 'react-native'; import {AuthContext} from './AuthContext'; export const CallContext = createContext(); @@ -30,6 +30,8 @@ export const CallProvider = ({children}) => { const [statusColor, setStatusColor] = useState('black'); const [currentAlert, setCurrentAlert] = useState(null); + JsSIP.debug.enable('JsSIP:*'); + const controlStatus = status => { switch (status) { case 'registrado': @@ -68,10 +70,12 @@ export const CallProvider = ({children}) => { const setupPhone = authData => { const {servidor, porta, ramal, senha, username} = authData; + const protocolo = 'ws'; const socket = new JsSIP.WebSocketInterface( - `${'ws'}://${servidor}:${porta}/ws`, + `${protocolo}://${servidor}:${porta}/ws`, ); + const configuration = { uri: `sip:${ramal}@${servidor}`, password: senha, @@ -82,7 +86,7 @@ export const CallProvider = ({children}) => { hack_via_ws: true, display_name: username !== null ? username : ramal, user_agent: 'Softphone React Native', - contact_uri: `sip:${ramal}@${servidor};transport=${'ws'}`, + contact_uri: `sip:${ramal}@${servidor};transport=${protocolo}`, pcConfig: { iceServers: [ {urls: 'stun:stun.l.google.com:19302'}, @@ -99,6 +103,34 @@ export const CallProvider = ({children}) => { const phone = new JsSIP.UA(configuration); + phone.on('connecting', () => { + console.log('JsSIP: Conectando ao servidor...'); + }); + + phone.on('connected', () => { + console.log('JsSIP: Conexão estabelecida com sucesso.'); + }); + + phone.on('disconnected', data => { + console.warn('JsSIP: Desconectado do servidor.', data); + }); + + phone.on('newMessage', data => { + console.log('JsSIP: Nova mensagem recebida.', data); + }); + + phone.on('newRTCSession', data => { + console.log('JsSIP: Nova sessão RTC estabelecida.', data); + }); + + phone.on('registrationFailed', data => { + console.error('JsSIP: Falha no registro.', data); + }); + + phone.on('error', data => { + console.error('JsSIP: Erro ocorrido.', data); + }); + phone.on('registrationFailed', function (ev) { console.log('Registering on SIP server failed with error: ' + ev.cause); configuration.uri = null; @@ -235,6 +267,9 @@ export const CallProvider = ({children}) => { } }); phone.start(); + if (Platform.OS === 'android' && !__DEV__) { + console.log = () => {}; // Suprimir logs no APK release fora do modo de desenvolvimento + } setUa(phone); }; const cleanup = () => { diff --git a/asset/screens/ConfigScreen/ConfigScreen.js b/asset/screens/ConfigScreen/ConfigScreen.js index 5de9c67..7ed839a 100644 --- a/asset/screens/ConfigScreen/ConfigScreen.js +++ b/asset/screens/ConfigScreen/ConfigScreen.js @@ -32,7 +32,7 @@ const ConfigScreen = () => { value={authData.servidor || ''} onChangeText={value => handleInputChange('servidor', value)} placeholder="Servidor" - keyboardType="number-pad" + keyboardType="default" /> =0.10.0" } }, + "node_modules/base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==" + }, "node_modules/base/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", @@ -15854,6 +15860,24 @@ "react-native": "*" } }, + "node_modules/react-native-fs": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.20.0.tgz", + "integrity": "sha512-VkTBzs7fIDUiy/XajOSNk0XazFE9l+QlMAce7lGuebZcag5CnjszB+u4BdqzwaQOdcYb5wsJIsqq4kxInIRpJQ==", + "dependencies": { + "base-64": "^0.1.0", + "utf8": "^3.0.0" + }, + "peerDependencies": { + "react-native": "*", + "react-native-windows": "*" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } + } + }, "node_modules/react-native-gesture-handler": { "version": "2.17.1", "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.17.1.tgz", @@ -21463,6 +21487,11 @@ "which": "bin/which" } }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 4f50ff0..0985661 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "react-native": "^0.73.0", "react-native-animatable": "^1.4.0", "react-native-encrypted-storage": "^4.0.3", + "react-native-fs": "^2.20.0", "react-native-gesture-handler": "^2.17.1", "react-native-incall-manager": "^4.2.0", "react-native-jssip": "^3.7.6",