-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.js
83 lines (68 loc) · 1.74 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import {
NativeModules,
NativeEventEmitter,
Platform
} from 'react-native';
const { TwilioVoiceModule } = NativeModules;
const _eventEmitter = new NativeEventEmitter(TwilioVoiceModule);
const _eventHandlers = {
callIncoming: new Map(),
callIncomingCancelled: new Map(),
deviceRegistered: new Map(),
deviceNotRegistered: new Map(),
connectionDidConnect: new Map(),
connectionDidDisconnect: new Map(),
connectionDidFailed: new Map(),
connectionDidRinging: new Map(),
connectionDidReconnecting: new Map(),
connectionDidReconnect: new Map()
}
const Twilio = {
initWithToken(token) {
if (typeof token !== 'string') {
return {
initialized: false,
err: 'Invalid token, token must be a string'
}
}
return TwilioVoiceModule.initWithToken(token);
},
connect(params = {}) {
TwilioVoiceModule.connect(params);
},
disconnect() {
TwilioVoiceModule.disconnect();
},
setMuted(isMuted) {
TwilioVoiceModule.setMuted(isMuted);
},
setSpeakerPhone(isSpeaker) {
TwilioVoiceModule.setSpeakerPhone(isSpeaker);
},
getVersion(callback) {
TwilioVoiceModule.getVersion(callback);
},
getActiveCall() {
return TwilioVoiceModule.getActiveCall();
},
accept() {
TwilioVoiceModule.accept();
},
reject() {
TwilioVoiceModule.reject();
},
addEventListener(type, handler) {
if (_eventHandlers[type].has(handler)) {
return;
}
_eventHandlers[type].set(handler, _eventEmitter.addListener(type, rtn => { handler(rtn) }));
},
removeEventListener(type, handler) {
if (!_eventHandlers[type].has(handler)) {
return;
}
_eventHandlers[type].get(handler).remove();
_eventHandlers[type].delete(handler);
}
}
export default Twilio;