zerorate-react-native-voip-sdk 0.1.0
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/LICENSE +21 -0
- package/lib/commonjs/adapters/LiveKitRNAdapter.js +186 -0
- package/lib/commonjs/adapters/LiveKitRNAdapter.js.map +1 -0
- package/lib/commonjs/components/ActiveCallModal.js +129 -0
- package/lib/commonjs/components/ActiveCallModal.js.map +1 -0
- package/lib/commonjs/components/IncomingCallModal.js +86 -0
- package/lib/commonjs/components/IncomingCallModal.js.map +1 -0
- package/lib/commonjs/components/VoIPProvider.js +34 -0
- package/lib/commonjs/components/VoIPProvider.js.map +1 -0
- package/lib/commonjs/context/VoIPContext.js +17 -0
- package/lib/commonjs/context/VoIPContext.js.map +1 -0
- package/lib/commonjs/core/APIClient.js +107 -0
- package/lib/commonjs/core/APIClient.js.map +1 -0
- package/lib/commonjs/core/EventEmitter.js +33 -0
- package/lib/commonjs/core/EventEmitter.js.map +1 -0
- package/lib/commonjs/core/RNAudioManager.js +40 -0
- package/lib/commonjs/core/RNAudioManager.js.map +1 -0
- package/lib/commonjs/core/RNCallManager.js +335 -0
- package/lib/commonjs/core/RNCallManager.js.map +1 -0
- package/lib/commonjs/core/RNVoIPClient.js +135 -0
- package/lib/commonjs/core/RNVoIPClient.js.map +1 -0
- package/lib/commonjs/core/WebSocketManager.js +160 -0
- package/lib/commonjs/core/WebSocketManager.js.map +1 -0
- package/lib/commonjs/hooks/useVoIP.js +104 -0
- package/lib/commonjs/hooks/useVoIP.js.map +1 -0
- package/lib/commonjs/index.js +136 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/adapters/LiveKitRNAdapter.js +179 -0
- package/lib/module/adapters/LiveKitRNAdapter.js.map +1 -0
- package/lib/module/components/ActiveCallModal.js +121 -0
- package/lib/module/components/ActiveCallModal.js.map +1 -0
- package/lib/module/components/IncomingCallModal.js +78 -0
- package/lib/module/components/IncomingCallModal.js.map +1 -0
- package/lib/module/components/VoIPProvider.js +27 -0
- package/lib/module/components/VoIPProvider.js.map +1 -0
- package/lib/module/context/VoIPContext.js +10 -0
- package/lib/module/context/VoIPContext.js.map +1 -0
- package/lib/module/core/APIClient.js +100 -0
- package/lib/module/core/APIClient.js.map +1 -0
- package/lib/module/core/EventEmitter.js +26 -0
- package/lib/module/core/EventEmitter.js.map +1 -0
- package/lib/module/core/RNAudioManager.js +32 -0
- package/lib/module/core/RNAudioManager.js.map +1 -0
- package/lib/module/core/RNCallManager.js +328 -0
- package/lib/module/core/RNCallManager.js.map +1 -0
- package/lib/module/core/RNVoIPClient.js +128 -0
- package/lib/module/core/RNVoIPClient.js.map +1 -0
- package/lib/module/core/WebSocketManager.js +153 -0
- package/lib/module/core/WebSocketManager.js.map +1 -0
- package/lib/module/hooks/useVoIP.js +98 -0
- package/lib/module/hooks/useVoIP.js.map +1 -0
- package/lib/module/index.js +12 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/adapters/LiveKitRNAdapter.d.ts +23 -0
- package/lib/typescript/adapters/LiveKitRNAdapter.d.ts.map +1 -0
- package/lib/typescript/components/ActiveCallModal.d.ts +14 -0
- package/lib/typescript/components/ActiveCallModal.d.ts.map +1 -0
- package/lib/typescript/components/IncomingCallModal.d.ts +10 -0
- package/lib/typescript/components/IncomingCallModal.d.ts.map +1 -0
- package/lib/typescript/components/VoIPProvider.d.ts +9 -0
- package/lib/typescript/components/VoIPProvider.d.ts.map +1 -0
- package/lib/typescript/context/VoIPContext.d.ts +21 -0
- package/lib/typescript/context/VoIPContext.d.ts.map +1 -0
- package/lib/typescript/core/APIClient.d.ts +17 -0
- package/lib/typescript/core/APIClient.d.ts.map +1 -0
- package/lib/typescript/core/EventEmitter.d.ts +10 -0
- package/lib/typescript/core/EventEmitter.d.ts.map +1 -0
- package/lib/typescript/core/RNAudioManager.d.ts +13 -0
- package/lib/typescript/core/RNAudioManager.d.ts.map +1 -0
- package/lib/typescript/core/RNCallManager.d.ts +39 -0
- package/lib/typescript/core/RNCallManager.d.ts.map +1 -0
- package/lib/typescript/core/RNVoIPClient.d.ts +38 -0
- package/lib/typescript/core/RNVoIPClient.d.ts.map +1 -0
- package/lib/typescript/core/WebSocketManager.d.ts +27 -0
- package/lib/typescript/core/WebSocketManager.d.ts.map +1 -0
- package/lib/typescript/hooks/useVoIP.d.ts +21 -0
- package/lib/typescript/hooks/useVoIP.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +12 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +53 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +103 -0
- package/src/adapters/LiveKitRNAdapter.ts +199 -0
- package/src/components/ActiveCallModal.tsx +158 -0
- package/src/components/IncomingCallModal.tsx +75 -0
- package/src/components/VoIPProvider.tsx +41 -0
- package/src/context/VoIPContext.tsx +36 -0
- package/src/core/APIClient.ts +123 -0
- package/src/core/EventEmitter.ts +31 -0
- package/src/core/RNAudioManager.ts +37 -0
- package/src/core/RNCallManager.ts +340 -0
- package/src/core/RNVoIPClient.ts +183 -0
- package/src/core/WebSocketManager.ts +169 -0
- package/src/hooks/useVoIP.ts +114 -0
- package/src/index.ts +11 -0
- package/src/types.ts +89 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 FreePass Limited
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LiveKitRNAdapter = void 0;
|
|
7
|
+
var _livekitClient = require("livekit-client");
|
|
8
|
+
class LiveKitRNAdapter {
|
|
9
|
+
listeners = new Map();
|
|
10
|
+
on(event, callback) {
|
|
11
|
+
const set = this.listeners.get(event) ?? new Set();
|
|
12
|
+
set.add(callback);
|
|
13
|
+
this.listeners.set(event, set);
|
|
14
|
+
}
|
|
15
|
+
off(event, callback) {
|
|
16
|
+
const set = this.listeners.get(event);
|
|
17
|
+
if (set) {
|
|
18
|
+
set.delete(callback);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
emit(event, data) {
|
|
22
|
+
const set = this.listeners.get(event);
|
|
23
|
+
if (set) {
|
|
24
|
+
for (const cb of set) {
|
|
25
|
+
cb(data);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async connectToRoom(livekitUrl, token, options) {
|
|
30
|
+
this.room = new _livekitClient.Room({
|
|
31
|
+
autoSubscribe: true,
|
|
32
|
+
...(options ?? {})
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
await this.room.connect(livekitUrl, token);
|
|
36
|
+
} catch (e) {
|
|
37
|
+
this.emit("livekit:error", {
|
|
38
|
+
error: e
|
|
39
|
+
});
|
|
40
|
+
throw e;
|
|
41
|
+
}
|
|
42
|
+
this.room.on(_livekitClient.RoomEvent.TrackSubscribed, (track, pub, participant) => {
|
|
43
|
+
this.emit("media:track-added", {
|
|
44
|
+
participantId: participant.sid,
|
|
45
|
+
trackType: track.kind,
|
|
46
|
+
track,
|
|
47
|
+
publication: pub
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
this.room.on(_livekitClient.RoomEvent.TrackUnsubscribed, (track, pub, participant) => {
|
|
51
|
+
this.emit("media:track-removed", {
|
|
52
|
+
participantId: participant.sid,
|
|
53
|
+
trackType: track.kind,
|
|
54
|
+
track,
|
|
55
|
+
publication: pub
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Some versions of LiveKit RN expose LocalTrackPublished on RoomEvent
|
|
60
|
+
if (_livekitClient.RoomEvent.LocalTrackPublished) {
|
|
61
|
+
this.room.on(_livekitClient.RoomEvent.LocalTrackPublished, pub => {
|
|
62
|
+
var _pub$track;
|
|
63
|
+
this.emit("media:local-track-added", {
|
|
64
|
+
trackType: pub === null || pub === void 0 || (_pub$track = pub.track) === null || _pub$track === void 0 ? void 0 : _pub$track.kind,
|
|
65
|
+
track: pub === null || pub === void 0 ? void 0 : pub.track,
|
|
66
|
+
publication: pub
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (_livekitClient.RoomEvent.LocalTrackUnpublished) {
|
|
71
|
+
this.room.on(_livekitClient.RoomEvent.LocalTrackUnpublished, pub => {
|
|
72
|
+
var _pub$track2;
|
|
73
|
+
this.emit("media:local-track-removed", {
|
|
74
|
+
trackType: pub === null || pub === void 0 || (_pub$track2 = pub.track) === null || _pub$track2 === void 0 ? void 0 : _pub$track2.kind,
|
|
75
|
+
track: pub === null || pub === void 0 ? void 0 : pub.track,
|
|
76
|
+
publication: pub
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
disconnectFromRoom() {
|
|
82
|
+
if (this.room) {
|
|
83
|
+
this.room.disconnect();
|
|
84
|
+
this.room = undefined;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async enableMicrophone() {
|
|
88
|
+
var _this$room;
|
|
89
|
+
if ((_this$room = this.room) !== null && _this$room !== void 0 && _this$room.localParticipant) {
|
|
90
|
+
await this.room.localParticipant.setMicrophoneEnabled(true);
|
|
91
|
+
this.emit("media:microphone-changed", {
|
|
92
|
+
enabled: true
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async disableMicrophone() {
|
|
97
|
+
var _this$room2;
|
|
98
|
+
if ((_this$room2 = this.room) !== null && _this$room2 !== void 0 && _this$room2.localParticipant) {
|
|
99
|
+
await this.room.localParticipant.setMicrophoneEnabled(false);
|
|
100
|
+
this.emit("media:microphone-changed", {
|
|
101
|
+
enabled: false
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async toggleMicrophone() {
|
|
106
|
+
var _this$room3;
|
|
107
|
+
if ((_this$room3 = this.room) !== null && _this$room3 !== void 0 && _this$room3.localParticipant) {
|
|
108
|
+
const current = this.room.localParticipant.isMicrophoneEnabled;
|
|
109
|
+
await this.room.localParticipant.setMicrophoneEnabled(!current);
|
|
110
|
+
this.emit("media:microphone-changed", {
|
|
111
|
+
enabled: !current
|
|
112
|
+
});
|
|
113
|
+
return !current;
|
|
114
|
+
}
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
async enableVideo() {
|
|
118
|
+
var _this$room4;
|
|
119
|
+
if ((_this$room4 = this.room) !== null && _this$room4 !== void 0 && _this$room4.localParticipant) {
|
|
120
|
+
await this.room.localParticipant.setCameraEnabled(true);
|
|
121
|
+
this.emit("media:video-changed", {
|
|
122
|
+
enabled: true
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async disableVideo() {
|
|
127
|
+
var _this$room5;
|
|
128
|
+
if ((_this$room5 = this.room) !== null && _this$room5 !== void 0 && _this$room5.localParticipant) {
|
|
129
|
+
await this.room.localParticipant.setCameraEnabled(false);
|
|
130
|
+
this.emit("media:video-changed", {
|
|
131
|
+
enabled: false
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async toggleVideo() {
|
|
136
|
+
var _this$room6;
|
|
137
|
+
if ((_this$room6 = this.room) !== null && _this$room6 !== void 0 && _this$room6.localParticipant) {
|
|
138
|
+
const current = this.room.localParticipant.isCameraEnabled;
|
|
139
|
+
await this.room.localParticipant.setCameraEnabled(!current);
|
|
140
|
+
this.emit("media:video-changed", {
|
|
141
|
+
enabled: !current
|
|
142
|
+
});
|
|
143
|
+
return !current;
|
|
144
|
+
}
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
getLocalTracks() {
|
|
148
|
+
var _this$room7;
|
|
149
|
+
if (!((_this$room7 = this.room) !== null && _this$room7 !== void 0 && _this$room7.localParticipant)) return [];
|
|
150
|
+
const tracks = [];
|
|
151
|
+
this.room.localParticipant.trackPublications.forEach(pub => {
|
|
152
|
+
if (pub.track) tracks.push(pub.track);
|
|
153
|
+
});
|
|
154
|
+
return tracks;
|
|
155
|
+
}
|
|
156
|
+
getRemoteTracks() {
|
|
157
|
+
var _this$room8;
|
|
158
|
+
const tracks = [];
|
|
159
|
+
(_this$room8 = this.room) === null || _this$room8 === void 0 || _this$room8.remoteParticipants.forEach(p => {
|
|
160
|
+
p.trackPublications.forEach(pub => {
|
|
161
|
+
if (pub.track) tracks.push(pub.track);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
return tracks;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
168
|
+
attachTrack(_track, _element) {
|
|
169
|
+
// No-op for RN
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
173
|
+
detachTrack(_track, _element) {
|
|
174
|
+
// No-op for RN
|
|
175
|
+
}
|
|
176
|
+
getParticipants() {
|
|
177
|
+
if (!this.room) return [];
|
|
178
|
+
return Array.from(this.room.remoteParticipants.values());
|
|
179
|
+
}
|
|
180
|
+
getLocalParticipant() {
|
|
181
|
+
var _this$room9;
|
|
182
|
+
return (_this$room9 = this.room) === null || _this$room9 === void 0 ? void 0 : _this$room9.localParticipant;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.LiveKitRNAdapter = LiveKitRNAdapter;
|
|
186
|
+
//# sourceMappingURL=LiveKitRNAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_livekitClient","require","LiveKitRNAdapter","listeners","Map","on","event","callback","set","get","Set","add","off","delete","emit","data","cb","connectToRoom","livekitUrl","token","options","room","Room","autoSubscribe","connect","e","error","RoomEvent","TrackSubscribed","track","pub","participant","participantId","sid","trackType","kind","publication","TrackUnsubscribed","LocalTrackPublished","_pub$track","LocalTrackUnpublished","_pub$track2","disconnectFromRoom","disconnect","undefined","enableMicrophone","_this$room","localParticipant","setMicrophoneEnabled","enabled","disableMicrophone","_this$room2","toggleMicrophone","_this$room3","current","isMicrophoneEnabled","enableVideo","_this$room4","setCameraEnabled","disableVideo","_this$room5","toggleVideo","_this$room6","isCameraEnabled","getLocalTracks","_this$room7","tracks","trackPublications","forEach","push","getRemoteTracks","_this$room8","remoteParticipants","p","attachTrack","_track","_element","detachTrack","getParticipants","Array","from","values","getLocalParticipant","_this$room9","exports"],"sourceRoot":"../../../src","sources":["adapters/LiveKitRNAdapter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ActiveCallModal = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _reactNative2 = require("@livekit/react-native");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const ActiveCallModal = ({
|
|
12
|
+
call,
|
|
13
|
+
state,
|
|
14
|
+
onEnd,
|
|
15
|
+
onToggleMic,
|
|
16
|
+
onToggleVideo,
|
|
17
|
+
localTracks,
|
|
18
|
+
remoteTracks
|
|
19
|
+
}) => {
|
|
20
|
+
const videoTrack = remoteTracks.find(t => t.kind === "video");
|
|
21
|
+
const localVideoTrack = localTracks.find(t => t.kind === "video");
|
|
22
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Modal, {
|
|
23
|
+
visible: true,
|
|
24
|
+
animationType: "slide"
|
|
25
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
26
|
+
style: styles.container
|
|
27
|
+
}, videoTrack ? /*#__PURE__*/_react.default.createElement(_reactNative2.VideoView, {
|
|
28
|
+
style: styles.remoteVideo,
|
|
29
|
+
videoTrack: videoTrack,
|
|
30
|
+
objectFit: "cover"
|
|
31
|
+
}) : /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
32
|
+
style: styles.remotePlaceholder
|
|
33
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
34
|
+
style: styles.remoteName
|
|
35
|
+
}, call.participantName || call.participantId), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
36
|
+
style: styles.status
|
|
37
|
+
}, state)), localVideoTrack && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
38
|
+
style: styles.localVideoContainer
|
|
39
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative2.VideoView, {
|
|
40
|
+
style: styles.localVideo,
|
|
41
|
+
videoTrack: localVideoTrack,
|
|
42
|
+
objectFit: "cover",
|
|
43
|
+
zOrder: 1
|
|
44
|
+
})), /*#__PURE__*/_react.default.createElement(_reactNative.SafeAreaView, {
|
|
45
|
+
style: styles.controlsContainer
|
|
46
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
47
|
+
style: styles.controls
|
|
48
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
49
|
+
style: styles.controlButton,
|
|
50
|
+
onPress: onToggleMic
|
|
51
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
52
|
+
style: styles.controlText
|
|
53
|
+
}, "Mic")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
54
|
+
style: styles.controlButton,
|
|
55
|
+
onPress: onToggleVideo
|
|
56
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
57
|
+
style: styles.controlText
|
|
58
|
+
}, "Cam")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
59
|
+
style: [styles.controlButton, styles.endButton],
|
|
60
|
+
onPress: onEnd
|
|
61
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
62
|
+
style: styles.controlText
|
|
63
|
+
}, "End"))))));
|
|
64
|
+
};
|
|
65
|
+
exports.ActiveCallModal = ActiveCallModal;
|
|
66
|
+
const styles = _reactNative.StyleSheet.create({
|
|
67
|
+
container: {
|
|
68
|
+
flex: 1,
|
|
69
|
+
backgroundColor: "#222"
|
|
70
|
+
},
|
|
71
|
+
remoteVideo: {
|
|
72
|
+
flex: 1
|
|
73
|
+
},
|
|
74
|
+
remotePlaceholder: {
|
|
75
|
+
flex: 1,
|
|
76
|
+
justifyContent: "center",
|
|
77
|
+
alignItems: "center"
|
|
78
|
+
},
|
|
79
|
+
remoteName: {
|
|
80
|
+
color: "white",
|
|
81
|
+
fontSize: 24,
|
|
82
|
+
marginBottom: 8
|
|
83
|
+
},
|
|
84
|
+
status: {
|
|
85
|
+
color: "#ccc",
|
|
86
|
+
fontSize: 16
|
|
87
|
+
},
|
|
88
|
+
localVideoContainer: {
|
|
89
|
+
position: "absolute",
|
|
90
|
+
top: 60,
|
|
91
|
+
right: 20,
|
|
92
|
+
width: 100,
|
|
93
|
+
height: 150,
|
|
94
|
+
backgroundColor: "#000",
|
|
95
|
+
borderRadius: 8,
|
|
96
|
+
overflow: "hidden"
|
|
97
|
+
},
|
|
98
|
+
localVideo: {
|
|
99
|
+
flex: 1
|
|
100
|
+
},
|
|
101
|
+
controlsContainer: {
|
|
102
|
+
position: "absolute",
|
|
103
|
+
bottom: 0,
|
|
104
|
+
left: 0,
|
|
105
|
+
right: 0,
|
|
106
|
+
backgroundColor: "rgba(0,0,0,0.5)"
|
|
107
|
+
},
|
|
108
|
+
controls: {
|
|
109
|
+
flexDirection: "row",
|
|
110
|
+
justifyContent: "space-around",
|
|
111
|
+
padding: 20
|
|
112
|
+
},
|
|
113
|
+
controlButton: {
|
|
114
|
+
width: 60,
|
|
115
|
+
height: 60,
|
|
116
|
+
borderRadius: 30,
|
|
117
|
+
backgroundColor: "#444",
|
|
118
|
+
justifyContent: "center",
|
|
119
|
+
alignItems: "center"
|
|
120
|
+
},
|
|
121
|
+
endButton: {
|
|
122
|
+
backgroundColor: "#ff3b30"
|
|
123
|
+
},
|
|
124
|
+
controlText: {
|
|
125
|
+
color: "white",
|
|
126
|
+
fontSize: 12
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
//# sourceMappingURL=ActiveCallModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNative2","e","__esModule","default","ActiveCallModal","call","state","onEnd","onToggleMic","onToggleVideo","localTracks","remoteTracks","videoTrack","find","t","kind","localVideoTrack","createElement","Modal","visible","animationType","View","style","styles","container","VideoView","remoteVideo","objectFit","remotePlaceholder","Text","remoteName","participantName","participantId","status","localVideoContainer","localVideo","zOrder","SafeAreaView","controlsContainer","controls","TouchableOpacity","controlButton","onPress","controlText","endButton","exports","StyleSheet","create","flex","backgroundColor","justifyContent","alignItems","color","fontSize","marginBottom","position","top","right","width","height","borderRadius","overflow","bottom","left","flexDirection","padding"],"sourceRoot":"../../../src","sources":["components/ActiveCallModal.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.IncomingCallModal = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
const IncomingCallModal = ({
|
|
11
|
+
call,
|
|
12
|
+
onAccept,
|
|
13
|
+
onDecline
|
|
14
|
+
}) => {
|
|
15
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Modal, {
|
|
16
|
+
visible: true,
|
|
17
|
+
transparent: true,
|
|
18
|
+
animationType: "slide"
|
|
19
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
20
|
+
style: styles.container
|
|
21
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
22
|
+
style: styles.content
|
|
23
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
24
|
+
style: styles.title
|
|
25
|
+
}, "Incoming Call"), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
26
|
+
style: styles.caller
|
|
27
|
+
}, call.participantName || call.participantId), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
28
|
+
style: styles.buttons
|
|
29
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
30
|
+
style: [styles.button, styles.decline],
|
|
31
|
+
onPress: onDecline
|
|
32
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
33
|
+
style: styles.buttonText
|
|
34
|
+
}, "Decline")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
35
|
+
style: [styles.button, styles.accept],
|
|
36
|
+
onPress: onAccept
|
|
37
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
38
|
+
style: styles.buttonText
|
|
39
|
+
}, "Accept"))))));
|
|
40
|
+
};
|
|
41
|
+
exports.IncomingCallModal = IncomingCallModal;
|
|
42
|
+
const styles = _reactNative.StyleSheet.create({
|
|
43
|
+
container: {
|
|
44
|
+
flex: 1,
|
|
45
|
+
backgroundColor: 'rgba(0,0,0,0.5)',
|
|
46
|
+
justifyContent: 'center',
|
|
47
|
+
alignItems: 'center'
|
|
48
|
+
},
|
|
49
|
+
content: {
|
|
50
|
+
backgroundColor: 'white',
|
|
51
|
+
padding: 24,
|
|
52
|
+
borderRadius: 12,
|
|
53
|
+
width: '80%',
|
|
54
|
+
alignItems: 'center'
|
|
55
|
+
},
|
|
56
|
+
title: {
|
|
57
|
+
fontSize: 18,
|
|
58
|
+
marginBottom: 8
|
|
59
|
+
},
|
|
60
|
+
caller: {
|
|
61
|
+
fontSize: 24,
|
|
62
|
+
fontWeight: 'bold',
|
|
63
|
+
marginBottom: 32
|
|
64
|
+
},
|
|
65
|
+
buttons: {
|
|
66
|
+
flexDirection: 'row',
|
|
67
|
+
justifyContent: 'space-around',
|
|
68
|
+
width: '100%'
|
|
69
|
+
},
|
|
70
|
+
button: {
|
|
71
|
+
paddingVertical: 12,
|
|
72
|
+
paddingHorizontal: 32,
|
|
73
|
+
borderRadius: 24
|
|
74
|
+
},
|
|
75
|
+
decline: {
|
|
76
|
+
backgroundColor: '#ff3b30'
|
|
77
|
+
},
|
|
78
|
+
accept: {
|
|
79
|
+
backgroundColor: '#34c759'
|
|
80
|
+
},
|
|
81
|
+
buttonText: {
|
|
82
|
+
color: 'white',
|
|
83
|
+
fontWeight: 'bold'
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=IncomingCallModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","IncomingCallModal","call","onAccept","onDecline","createElement","Modal","visible","transparent","animationType","View","style","styles","container","content","Text","title","caller","participantName","participantId","buttons","TouchableOpacity","button","decline","onPress","buttonText","accept","exports","StyleSheet","create","flex","backgroundColor","justifyContent","alignItems","padding","borderRadius","width","fontSize","marginBottom","fontWeight","flexDirection","paddingVertical","paddingHorizontal","color"],"sourceRoot":"../../../src","sources":["components/IncomingCallModal.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.VoIPProvider = VoIPProvider;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _VoIPContext = require("../context/VoIPContext");
|
|
9
|
+
var _useVoIP = require("../hooks/useVoIP");
|
|
10
|
+
var _IncomingCallModal = require("./IncomingCallModal");
|
|
11
|
+
var _ActiveCallModal = require("./ActiveCallModal");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
function VoIPProvider({
|
|
14
|
+
config,
|
|
15
|
+
children
|
|
16
|
+
}) {
|
|
17
|
+
const voip = (0, _useVoIP.useVoIP)(config);
|
|
18
|
+
return /*#__PURE__*/_react.default.createElement(_VoIPContext.VoIPContext.Provider, {
|
|
19
|
+
value: voip
|
|
20
|
+
}, children, voip.incomingCall && /*#__PURE__*/_react.default.createElement(_IncomingCallModal.IncomingCallModal, {
|
|
21
|
+
call: voip.incomingCall,
|
|
22
|
+
onAccept: voip.acceptCall,
|
|
23
|
+
onDecline: voip.declineCall
|
|
24
|
+
}), voip.activeCall && (voip.callState === "connected" || voip.callState === "connecting") && /*#__PURE__*/_react.default.createElement(_ActiveCallModal.ActiveCallModal, {
|
|
25
|
+
call: voip.activeCall,
|
|
26
|
+
state: voip.callState,
|
|
27
|
+
onEnd: voip.endCall,
|
|
28
|
+
onToggleMic: voip.toggleMicrophone,
|
|
29
|
+
onToggleVideo: voip.toggleVideo,
|
|
30
|
+
localTracks: voip.localTracks,
|
|
31
|
+
remoteTracks: voip.remoteTracks
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=VoIPProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_VoIPContext","_useVoIP","_IncomingCallModal","_ActiveCallModal","e","__esModule","default","VoIPProvider","config","children","voip","useVoIP","createElement","VoIPContext","Provider","value","incomingCall","IncomingCallModal","call","onAccept","acceptCall","onDecline","declineCall","activeCall","callState","ActiveCallModal","state","onEnd","endCall","onToggleMic","toggleMicrophone","onToggleVideo","toggleVideo","localTracks","remoteTracks"],"sourceRoot":"../../../src","sources":["components/VoIPProvider.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAEA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AAAoD,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAO7C,SAASG,YAAYA,CAAC;EAAEC,MAAM;EAAEC;AAA4B,CAAC,EAAE;EACpE,MAAMC,IAAI,GAAG,IAAAC,gBAAO,EAACH,MAAM,CAAC;EAE5B,oBACEX,MAAA,CAAAS,OAAA,CAAAM,aAAA,CAACZ,YAAA,CAAAa,WAAW,CAACC,QAAQ;IAACC,KAAK,EAAEL;EAAK,GAC/BD,QAAQ,EAERC,IAAI,CAACM,YAAY,iBAChBnB,MAAA,CAAAS,OAAA,CAAAM,aAAA,CAACV,kBAAA,CAAAe,iBAAiB;IAChBC,IAAI,EAAER,IAAI,CAACM,YAAa;IACxBG,QAAQ,EAAET,IAAI,CAACU,UAAW;IAC1BC,SAAS,EAAEX,IAAI,CAACY;EAAY,CAC7B,CACF,EACAZ,IAAI,CAACa,UAAU,KACbb,IAAI,CAACc,SAAS,KAAK,WAAW,IAAId,IAAI,CAACc,SAAS,KAAK,YAAY,CAAC,iBACjE3B,MAAA,CAAAS,OAAA,CAAAM,aAAA,CAACT,gBAAA,CAAAsB,eAAe;IACdP,IAAI,EAAER,IAAI,CAACa,UAAW;IACtBG,KAAK,EAAEhB,IAAI,CAACc,SAAU;IACtBG,KAAK,EAAEjB,IAAI,CAACkB,OAAQ;IACpBC,WAAW,EAAEnB,IAAI,CAACoB,gBAAiB;IACnCC,aAAa,EAAErB,IAAI,CAACsB,WAAY;IAChCC,WAAW,EAAEvB,IAAI,CAACuB,WAAY;IAC9BC,YAAY,EAAExB,IAAI,CAACwB;EAAa,CACjC,CAEe,CAAC;AAE3B","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.VoIPContext = void 0;
|
|
7
|
+
exports.useVoIPContext = useVoIPContext;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
const VoIPContext = exports.VoIPContext = /*#__PURE__*/(0, _react.createContext)(undefined);
|
|
10
|
+
function useVoIPContext() {
|
|
11
|
+
const context = (0, _react.useContext)(VoIPContext);
|
|
12
|
+
if (!context) {
|
|
13
|
+
throw new Error("useVoIPContext must be used within a VoIPProvider");
|
|
14
|
+
}
|
|
15
|
+
return context;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=VoIPContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","VoIPContext","exports","createContext","undefined","useVoIPContext","context","useContext","Error"],"sourceRoot":"../../../src","sources":["context/VoIPContext.tsx"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAyBO,MAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,gBAAG,IAAAE,oBAAa,EACtCC,SACF,CAAC;AAEM,SAASC,cAAcA,CAAA,EAAG;EAC/B,MAAMC,OAAO,GAAG,IAAAC,iBAAU,EAACN,WAAW,CAAC;EACvC,IAAI,CAACK,OAAO,EAAE;IACZ,MAAM,IAAIE,KAAK,CAAC,mDAAmD,CAAC;EACtE;EACA,OAAOF,OAAO;AAChB","ignoreList":[]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.APIClient = void 0;
|
|
7
|
+
var _EventEmitter = require("./EventEmitter");
|
|
8
|
+
class APIClient extends _EventEmitter.EventEmitter {
|
|
9
|
+
timeoutMs = 10000;
|
|
10
|
+
retries = 3;
|
|
11
|
+
constructor(baseUrl, authToken) {
|
|
12
|
+
super();
|
|
13
|
+
this.baseUrl = baseUrl.replace(/\/+$/, "");
|
|
14
|
+
this.authToken = authToken;
|
|
15
|
+
}
|
|
16
|
+
setAuthToken(token) {
|
|
17
|
+
this.authToken = token;
|
|
18
|
+
}
|
|
19
|
+
async initiateCall(data) {
|
|
20
|
+
return this.request("/api/webrtc/v1/calls/initiate", "POST", data);
|
|
21
|
+
}
|
|
22
|
+
async acceptCall(callId, userId) {
|
|
23
|
+
return this.request(`/api/webrtc/v1/calls/${encodeURIComponent(callId)}/accept`, "POST", {
|
|
24
|
+
userId
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async declineCall(callId, userId) {
|
|
28
|
+
return this.request(`/api/webrtc/v1/calls/${encodeURIComponent(callId)}/decline`, "POST", {
|
|
29
|
+
userId
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async endCall(callId, userId) {
|
|
33
|
+
return this.request(`/api/webrtc/v1/calls/${encodeURIComponent(callId)}/end`, "POST", {
|
|
34
|
+
userId
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async getCallStatus(callId) {
|
|
38
|
+
return this.request(`/api/webrtc/v1/calls/${encodeURIComponent(callId)}/status`, "GET");
|
|
39
|
+
}
|
|
40
|
+
async request(path, method, body) {
|
|
41
|
+
const url = `${this.baseUrl}${path}`;
|
|
42
|
+
let attempt = 0;
|
|
43
|
+
let lastError;
|
|
44
|
+
while (attempt < this.retries) {
|
|
45
|
+
attempt += 1;
|
|
46
|
+
const controller = new AbortController();
|
|
47
|
+
const id = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
48
|
+
try {
|
|
49
|
+
const res = await fetch(url, {
|
|
50
|
+
method,
|
|
51
|
+
headers: {
|
|
52
|
+
"Content-Type": "application/json",
|
|
53
|
+
...(this.authToken ? {
|
|
54
|
+
Authorization: `Bearer ${this.authToken}`
|
|
55
|
+
} : {})
|
|
56
|
+
},
|
|
57
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
58
|
+
signal: controller.signal
|
|
59
|
+
});
|
|
60
|
+
clearTimeout(id);
|
|
61
|
+
if (!res.ok) {
|
|
62
|
+
const errPayload = await this.safeJson(res);
|
|
63
|
+
lastError = {
|
|
64
|
+
status: res.status,
|
|
65
|
+
data: errPayload
|
|
66
|
+
};
|
|
67
|
+
this.emit("error", {
|
|
68
|
+
type: "network",
|
|
69
|
+
message: "http_error",
|
|
70
|
+
originalError: lastError
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
const data = await this.safeJson(res);
|
|
74
|
+
return data;
|
|
75
|
+
}
|
|
76
|
+
} catch (e) {
|
|
77
|
+
clearTimeout(id);
|
|
78
|
+
lastError = e;
|
|
79
|
+
this.emit("error", {
|
|
80
|
+
type: "network",
|
|
81
|
+
message: "fetch_error",
|
|
82
|
+
originalError: e
|
|
83
|
+
});
|
|
84
|
+
if (e.name !== "AbortError") {
|
|
85
|
+
// Retry
|
|
86
|
+
} else {
|
|
87
|
+
// Timeout
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// wait before retry
|
|
92
|
+
if (attempt < this.retries) {
|
|
93
|
+
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
throw lastError;
|
|
97
|
+
}
|
|
98
|
+
async safeJson(res) {
|
|
99
|
+
try {
|
|
100
|
+
return await res.json();
|
|
101
|
+
} catch (_e) {
|
|
102
|
+
return {};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.APIClient = APIClient;
|
|
107
|
+
//# sourceMappingURL=APIClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_EventEmitter","require","APIClient","EventEmitter","timeoutMs","retries","constructor","baseUrl","authToken","replace","setAuthToken","token","initiateCall","data","request","acceptCall","callId","userId","encodeURIComponent","declineCall","endCall","getCallStatus","path","method","body","url","attempt","lastError","controller","AbortController","id","setTimeout","abort","res","fetch","headers","Authorization","JSON","stringify","undefined","signal","clearTimeout","ok","errPayload","safeJson","status","emit","type","message","originalError","e","name","Promise","resolve","json","_e","exports"],"sourceRoot":"../../../src","sources":["core/APIClient.ts"],"mappings":"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","ignoreList":[]}
|