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.
Files changed (100) hide show
  1. package/LICENSE +21 -0
  2. package/lib/commonjs/adapters/LiveKitRNAdapter.js +186 -0
  3. package/lib/commonjs/adapters/LiveKitRNAdapter.js.map +1 -0
  4. package/lib/commonjs/components/ActiveCallModal.js +129 -0
  5. package/lib/commonjs/components/ActiveCallModal.js.map +1 -0
  6. package/lib/commonjs/components/IncomingCallModal.js +86 -0
  7. package/lib/commonjs/components/IncomingCallModal.js.map +1 -0
  8. package/lib/commonjs/components/VoIPProvider.js +34 -0
  9. package/lib/commonjs/components/VoIPProvider.js.map +1 -0
  10. package/lib/commonjs/context/VoIPContext.js +17 -0
  11. package/lib/commonjs/context/VoIPContext.js.map +1 -0
  12. package/lib/commonjs/core/APIClient.js +107 -0
  13. package/lib/commonjs/core/APIClient.js.map +1 -0
  14. package/lib/commonjs/core/EventEmitter.js +33 -0
  15. package/lib/commonjs/core/EventEmitter.js.map +1 -0
  16. package/lib/commonjs/core/RNAudioManager.js +40 -0
  17. package/lib/commonjs/core/RNAudioManager.js.map +1 -0
  18. package/lib/commonjs/core/RNCallManager.js +335 -0
  19. package/lib/commonjs/core/RNCallManager.js.map +1 -0
  20. package/lib/commonjs/core/RNVoIPClient.js +135 -0
  21. package/lib/commonjs/core/RNVoIPClient.js.map +1 -0
  22. package/lib/commonjs/core/WebSocketManager.js +160 -0
  23. package/lib/commonjs/core/WebSocketManager.js.map +1 -0
  24. package/lib/commonjs/hooks/useVoIP.js +104 -0
  25. package/lib/commonjs/hooks/useVoIP.js.map +1 -0
  26. package/lib/commonjs/index.js +136 -0
  27. package/lib/commonjs/index.js.map +1 -0
  28. package/lib/commonjs/types.js +2 -0
  29. package/lib/commonjs/types.js.map +1 -0
  30. package/lib/module/adapters/LiveKitRNAdapter.js +179 -0
  31. package/lib/module/adapters/LiveKitRNAdapter.js.map +1 -0
  32. package/lib/module/components/ActiveCallModal.js +121 -0
  33. package/lib/module/components/ActiveCallModal.js.map +1 -0
  34. package/lib/module/components/IncomingCallModal.js +78 -0
  35. package/lib/module/components/IncomingCallModal.js.map +1 -0
  36. package/lib/module/components/VoIPProvider.js +27 -0
  37. package/lib/module/components/VoIPProvider.js.map +1 -0
  38. package/lib/module/context/VoIPContext.js +10 -0
  39. package/lib/module/context/VoIPContext.js.map +1 -0
  40. package/lib/module/core/APIClient.js +100 -0
  41. package/lib/module/core/APIClient.js.map +1 -0
  42. package/lib/module/core/EventEmitter.js +26 -0
  43. package/lib/module/core/EventEmitter.js.map +1 -0
  44. package/lib/module/core/RNAudioManager.js +32 -0
  45. package/lib/module/core/RNAudioManager.js.map +1 -0
  46. package/lib/module/core/RNCallManager.js +328 -0
  47. package/lib/module/core/RNCallManager.js.map +1 -0
  48. package/lib/module/core/RNVoIPClient.js +128 -0
  49. package/lib/module/core/RNVoIPClient.js.map +1 -0
  50. package/lib/module/core/WebSocketManager.js +153 -0
  51. package/lib/module/core/WebSocketManager.js.map +1 -0
  52. package/lib/module/hooks/useVoIP.js +98 -0
  53. package/lib/module/hooks/useVoIP.js.map +1 -0
  54. package/lib/module/index.js +12 -0
  55. package/lib/module/index.js.map +1 -0
  56. package/lib/module/types.js +2 -0
  57. package/lib/module/types.js.map +1 -0
  58. package/lib/typescript/adapters/LiveKitRNAdapter.d.ts +23 -0
  59. package/lib/typescript/adapters/LiveKitRNAdapter.d.ts.map +1 -0
  60. package/lib/typescript/components/ActiveCallModal.d.ts +14 -0
  61. package/lib/typescript/components/ActiveCallModal.d.ts.map +1 -0
  62. package/lib/typescript/components/IncomingCallModal.d.ts +10 -0
  63. package/lib/typescript/components/IncomingCallModal.d.ts.map +1 -0
  64. package/lib/typescript/components/VoIPProvider.d.ts +9 -0
  65. package/lib/typescript/components/VoIPProvider.d.ts.map +1 -0
  66. package/lib/typescript/context/VoIPContext.d.ts +21 -0
  67. package/lib/typescript/context/VoIPContext.d.ts.map +1 -0
  68. package/lib/typescript/core/APIClient.d.ts +17 -0
  69. package/lib/typescript/core/APIClient.d.ts.map +1 -0
  70. package/lib/typescript/core/EventEmitter.d.ts +10 -0
  71. package/lib/typescript/core/EventEmitter.d.ts.map +1 -0
  72. package/lib/typescript/core/RNAudioManager.d.ts +13 -0
  73. package/lib/typescript/core/RNAudioManager.d.ts.map +1 -0
  74. package/lib/typescript/core/RNCallManager.d.ts +39 -0
  75. package/lib/typescript/core/RNCallManager.d.ts.map +1 -0
  76. package/lib/typescript/core/RNVoIPClient.d.ts +38 -0
  77. package/lib/typescript/core/RNVoIPClient.d.ts.map +1 -0
  78. package/lib/typescript/core/WebSocketManager.d.ts +27 -0
  79. package/lib/typescript/core/WebSocketManager.d.ts.map +1 -0
  80. package/lib/typescript/hooks/useVoIP.d.ts +21 -0
  81. package/lib/typescript/hooks/useVoIP.d.ts.map +1 -0
  82. package/lib/typescript/index.d.ts +12 -0
  83. package/lib/typescript/index.d.ts.map +1 -0
  84. package/lib/typescript/types.d.ts +53 -0
  85. package/lib/typescript/types.d.ts.map +1 -0
  86. package/package.json +103 -0
  87. package/src/adapters/LiveKitRNAdapter.ts +199 -0
  88. package/src/components/ActiveCallModal.tsx +158 -0
  89. package/src/components/IncomingCallModal.tsx +75 -0
  90. package/src/components/VoIPProvider.tsx +41 -0
  91. package/src/context/VoIPContext.tsx +36 -0
  92. package/src/core/APIClient.ts +123 -0
  93. package/src/core/EventEmitter.ts +31 -0
  94. package/src/core/RNAudioManager.ts +37 -0
  95. package/src/core/RNCallManager.ts +340 -0
  96. package/src/core/RNVoIPClient.ts +183 -0
  97. package/src/core/WebSocketManager.ts +169 -0
  98. package/src/hooks/useVoIP.ts +114 -0
  99. package/src/index.ts +11 -0
  100. 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":[]}