@livekit/react-native 2.9.6 → 2.9.8
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/README.md +7 -5
- package/ios/LivekitReactNative.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/LivekitReactNative.xcodeproj/xcuserdata/davidliu.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/lib/commonjs/LKNativeModule.js.map +1 -1
- package/lib/commonjs/audio/AudioManager.js +1 -2
- package/lib/commonjs/audio/AudioManager.js.map +1 -1
- package/lib/commonjs/audio/AudioSession.js +105 -100
- package/lib/commonjs/audio/AudioSession.js.map +1 -1
- package/lib/commonjs/audio/MediaRecorder.js +54 -35
- package/lib/commonjs/audio/MediaRecorder.js.map +1 -1
- package/lib/commonjs/components/BarVisualizer.js +8 -8
- package/lib/commonjs/components/BarVisualizer.js.map +1 -1
- package/lib/commonjs/components/LiveKitRoom.js +11 -7
- package/lib/commonjs/components/LiveKitRoom.js.map +1 -1
- package/lib/commonjs/components/VideoTrack.js +34 -47
- package/lib/commonjs/components/VideoTrack.js.map +1 -1
- package/lib/commonjs/components/VideoView.js +36 -48
- package/lib/commonjs/components/VideoView.js.map +1 -1
- package/lib/commonjs/components/ViewPortDetector.js +71 -79
- package/lib/commonjs/components/ViewPortDetector.js.map +1 -1
- package/lib/commonjs/e2ee/RNE2EEManager.js +8 -15
- package/lib/commonjs/e2ee/RNE2EEManager.js.map +1 -1
- package/lib/commonjs/e2ee/RNKeyProvider.js +1 -5
- package/lib/commonjs/e2ee/RNKeyProvider.js.map +1 -1
- package/lib/commonjs/events/EventEmitter.js +2 -4
- package/lib/commonjs/events/EventEmitter.js.map +1 -1
- package/lib/commonjs/hooks/useE2EEManager.js.map +1 -1
- package/lib/commonjs/hooks/useMultibandTrackVolume.js +4 -5
- package/lib/commonjs/hooks/useMultibandTrackVolume.js.map +1 -1
- package/lib/commonjs/hooks/useTrackVolume.js +4 -5
- package/lib/commonjs/hooks/useTrackVolume.js.map +1 -1
- package/lib/commonjs/hooks.js.map +1 -1
- package/lib/commonjs/index.js +15 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/logger.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/polyfills/EncoderDecoderTogether.min.js.map +1 -1
- package/lib/commonjs/polyfills/MediaRecorderShim.js.map +1 -1
- package/lib/commonjs/useParticipant.js.map +1 -1
- package/lib/commonjs/useRoom.js +4 -6
- package/lib/commonjs/useRoom.js.map +1 -1
- package/lib/module/LKNativeModule.js +2 -0
- package/lib/module/LKNativeModule.js.map +1 -1
- package/lib/module/audio/AudioManager.js +2 -0
- package/lib/module/audio/AudioManager.js.map +1 -1
- package/lib/module/audio/AudioSession.js +107 -100
- package/lib/module/audio/AudioSession.js.map +1 -1
- package/lib/module/audio/MediaRecorder.js +50 -29
- package/lib/module/audio/MediaRecorder.js.map +1 -1
- package/lib/module/components/BarVisualizer.js +9 -6
- package/lib/module/components/BarVisualizer.js.map +1 -1
- package/lib/module/components/LiveKitRoom.js +12 -6
- package/lib/module/components/LiveKitRoom.js.map +1 -1
- package/lib/module/components/VideoTrack.js +35 -45
- package/lib/module/components/VideoTrack.js.map +1 -1
- package/lib/module/components/VideoView.js +37 -46
- package/lib/module/components/VideoView.js.map +1 -1
- package/lib/module/components/ViewPortDetector.js +71 -77
- package/lib/module/components/ViewPortDetector.js.map +1 -1
- package/lib/module/e2ee/RNE2EEManager.js +10 -15
- package/lib/module/e2ee/RNE2EEManager.js.map +1 -1
- package/lib/module/e2ee/RNKeyProvider.js +3 -5
- package/lib/module/e2ee/RNKeyProvider.js.map +1 -1
- package/lib/module/events/EventEmitter.js +4 -4
- package/lib/module/events/EventEmitter.js.map +1 -1
- package/lib/module/hooks/useE2EEManager.js +2 -0
- package/lib/module/hooks/useE2EEManager.js.map +1 -1
- package/lib/module/hooks/useMultibandTrackVolume.js +6 -5
- package/lib/module/hooks/useMultibandTrackVolume.js.map +1 -1
- package/lib/module/hooks/useTrackVolume.js +6 -5
- package/lib/module/hooks/useTrackVolume.js.map +1 -1
- package/lib/module/hooks.js +2 -0
- package/lib/module/hooks.js.map +1 -1
- package/lib/module/index.js +5 -4
- package/lib/module/index.js.map +1 -1
- package/lib/module/logger.js +2 -0
- package/lib/module/logger.js.map +1 -1
- package/lib/module/polyfills/EncoderDecoderTogether.min.js.map +1 -1
- package/lib/module/polyfills/MediaRecorderShim.js +2 -0
- package/lib/module/polyfills/MediaRecorderShim.js.map +1 -1
- package/lib/module/useParticipant.js +2 -0
- package/lib/module/useParticipant.js.map +1 -1
- package/lib/module/useRoom.js +6 -6
- package/lib/module/useRoom.js.map +1 -1
- package/lib/typescript/{LKNativeModule.d.ts → src/LKNativeModule.d.ts} +1 -0
- package/lib/typescript/src/LKNativeModule.d.ts.map +1 -0
- package/lib/typescript/{audio → src/audio}/AudioManager.d.ts +1 -0
- package/lib/typescript/src/audio/AudioManager.d.ts.map +1 -0
- package/lib/typescript/{audio → src/audio}/AudioSession.d.ts +1 -0
- package/lib/typescript/src/audio/AudioSession.d.ts.map +1 -0
- package/lib/typescript/{audio → src/audio}/MediaRecorder.d.ts +14 -1
- package/lib/typescript/src/audio/MediaRecorder.d.ts.map +1 -0
- package/lib/typescript/{components → src/components}/BarVisualizer.d.ts +2 -2
- package/lib/typescript/src/components/BarVisualizer.d.ts.map +1 -0
- package/lib/typescript/{components → src/components}/LiveKitRoom.d.ts +2 -1
- package/lib/typescript/src/components/LiveKitRoom.d.ts.map +1 -0
- package/lib/typescript/{components → src/components}/VideoTrack.d.ts +2 -2
- package/lib/typescript/src/components/VideoTrack.d.ts.map +1 -0
- package/lib/typescript/{components → src/components}/VideoView.d.ts +2 -2
- package/lib/typescript/src/components/VideoView.d.ts.map +1 -0
- package/lib/typescript/{components → src/components}/ViewPortDetector.d.ts +3 -2
- package/lib/typescript/src/components/ViewPortDetector.d.ts.map +1 -0
- package/lib/typescript/{e2ee → src/e2ee}/RNE2EEManager.d.ts +1 -0
- package/lib/typescript/src/e2ee/RNE2EEManager.d.ts.map +1 -0
- package/lib/typescript/{e2ee → src/e2ee}/RNKeyProvider.d.ts +1 -0
- package/lib/typescript/src/e2ee/RNKeyProvider.d.ts.map +1 -0
- package/lib/typescript/{events → src/events}/EventEmitter.d.ts +1 -0
- package/lib/typescript/src/events/EventEmitter.d.ts.map +1 -0
- package/lib/typescript/{hooks → src/hooks}/useE2EEManager.d.ts +1 -0
- package/lib/typescript/src/hooks/useE2EEManager.d.ts.map +1 -0
- package/lib/typescript/{hooks → src/hooks}/useMultibandTrackVolume.d.ts +1 -0
- package/lib/typescript/src/hooks/useMultibandTrackVolume.d.ts.map +1 -0
- package/lib/typescript/{hooks → src/hooks}/useTrackVolume.d.ts +1 -0
- package/lib/typescript/src/hooks/useTrackVolume.d.ts.map +1 -0
- package/lib/typescript/{hooks.d.ts → src/hooks.d.ts} +1 -0
- package/lib/typescript/src/hooks.d.ts.map +1 -0
- package/lib/typescript/{index.d.ts → src/index.d.ts} +2 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/{logger.d.ts → src/logger.d.ts} +1 -0
- package/lib/typescript/src/logger.d.ts.map +1 -0
- package/lib/typescript/src/polyfills/MediaRecorderShim.d.ts +2 -0
- package/lib/typescript/src/polyfills/MediaRecorderShim.d.ts.map +1 -0
- package/lib/typescript/{useParticipant.d.ts → src/useParticipant.d.ts} +1 -0
- package/lib/typescript/src/useParticipant.d.ts.map +1 -0
- package/lib/typescript/{useRoom.d.ts → src/useRoom.d.ts} +1 -0
- package/lib/typescript/src/useRoom.d.ts.map +1 -0
- package/package.json +40 -57
- package/src/audio/MediaRecorder.ts +54 -17
- package/src/components/BarVisualizer.tsx +2 -2
- package/src/components/VideoTrack.tsx +0 -2
- package/src/components/VideoView.tsx +0 -2
- package/src/components/ViewPortDetector.tsx +1 -1
- package/src/index.tsx +1 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +0 -7
- package/android/gradlew +0 -249
- package/android/gradlew.bat +0 -92
- package/android/local.properties +0 -8
- package/lib/typescript/polyfills/EncoderDecoderTogether.min.d.ts +0 -0
- package/lib/typescript/polyfills/MediaRecorderShim.d.ts +0 -1
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
|
-
import * as React from 'react';
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
5
3
|
import { StyleSheet, View } from 'react-native';
|
|
6
4
|
import { LocalVideoTrack, TrackEvent } from 'livekit-client';
|
|
7
5
|
import { RTCView } from '@livekit/react-native-webrtc';
|
|
@@ -12,7 +10,7 @@ import ViewPortDetector from './ViewPortDetector';
|
|
|
12
10
|
/**
|
|
13
11
|
* @deprecated use `VideoTrack` and `VideoTrackProps` instead.
|
|
14
12
|
*/
|
|
15
|
-
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
14
|
/**
|
|
17
15
|
* @deprecated use `VideoTrack` and `VideoTrackProps` instead.
|
|
18
16
|
*/
|
|
@@ -25,7 +23,7 @@ export const VideoView = ({
|
|
|
25
23
|
}) => {
|
|
26
24
|
const [elementInfo] = useState(() => {
|
|
27
25
|
let info = new VideoViewElementInfo();
|
|
28
|
-
info.id = videoTrack
|
|
26
|
+
info.id = videoTrack?.sid;
|
|
29
27
|
info.something = videoTrack;
|
|
30
28
|
return info;
|
|
31
29
|
});
|
|
@@ -34,12 +32,12 @@ export const VideoView = ({
|
|
|
34
32
|
const shouldObserveVisibility = useMemo(() => {
|
|
35
33
|
return videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream;
|
|
36
34
|
}, [videoTrack]);
|
|
37
|
-
const [mediaStream, setMediaStream] = useState(videoTrack
|
|
35
|
+
const [mediaStream, setMediaStream] = useState(videoTrack?.mediaStream);
|
|
38
36
|
useEffect(() => {
|
|
39
|
-
setMediaStream(videoTrack
|
|
37
|
+
setMediaStream(videoTrack?.mediaStream);
|
|
40
38
|
if (videoTrack instanceof LocalVideoTrack) {
|
|
41
39
|
const onRestarted = track => {
|
|
42
|
-
setMediaStream(track
|
|
40
|
+
setMediaStream(track?.mediaStream);
|
|
43
41
|
};
|
|
44
42
|
videoTrack.on(TrackEvent.Restarted, onRestarted);
|
|
45
43
|
return () => {
|
|
@@ -51,34 +49,36 @@ export const VideoView = ({
|
|
|
51
49
|
}, [videoTrack]);
|
|
52
50
|
useEffect(() => {
|
|
53
51
|
if (videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream) {
|
|
54
|
-
videoTrack
|
|
52
|
+
videoTrack?.observeElementInfo(elementInfo);
|
|
55
53
|
return () => {
|
|
56
|
-
videoTrack
|
|
54
|
+
videoTrack?.stopObservingElementInfo(elementInfo);
|
|
57
55
|
};
|
|
58
56
|
} else {
|
|
59
57
|
return () => {};
|
|
60
58
|
}
|
|
61
59
|
}, [videoTrack, elementInfo]);
|
|
62
|
-
return /*#__PURE__*/
|
|
60
|
+
return /*#__PURE__*/_jsx(View, {
|
|
63
61
|
style: {
|
|
64
62
|
...style,
|
|
65
63
|
...styles.container
|
|
66
64
|
},
|
|
67
|
-
onLayout: layoutOnChange
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
65
|
+
onLayout: layoutOnChange,
|
|
66
|
+
children: /*#__PURE__*/_jsx(ViewPortDetector, {
|
|
67
|
+
onChange: visibilityOnChange,
|
|
68
|
+
style: styles.videoView,
|
|
69
|
+
disabled: !shouldObserveVisibility,
|
|
70
|
+
propKey: videoTrack,
|
|
71
|
+
children: /*#__PURE__*/_jsx(RTCView, {
|
|
72
|
+
style: styles.videoView
|
|
73
|
+
// @ts-expect-error
|
|
74
|
+
,
|
|
75
|
+
streamURL: mediaStream?.toURL() ?? '',
|
|
76
|
+
objectFit: objectFit,
|
|
77
|
+
zOrder: zOrder,
|
|
78
|
+
mirror: mirror
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
});
|
|
82
82
|
};
|
|
83
83
|
const styles = StyleSheet.create({
|
|
84
84
|
container: {},
|
|
@@ -88,21 +88,14 @@ const styles = StyleSheet.create({
|
|
|
88
88
|
}
|
|
89
89
|
});
|
|
90
90
|
class VideoViewElementInfo {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
_defineProperty(this, "visibilityChangedAt", void 0);
|
|
100
|
-
_defineProperty(this, "pictureInPicture", false);
|
|
101
|
-
_defineProperty(this, "handleResize", void 0);
|
|
102
|
-
_defineProperty(this, "handleVisibilityChanged", void 0);
|
|
103
|
-
_defineProperty(this, "width", () => this._width);
|
|
104
|
-
_defineProperty(this, "height", () => this._height);
|
|
105
|
-
}
|
|
91
|
+
element = {};
|
|
92
|
+
_width = 0;
|
|
93
|
+
_height = 0;
|
|
94
|
+
_observing = false;
|
|
95
|
+
visible = true;
|
|
96
|
+
pictureInPicture = false;
|
|
97
|
+
width = () => this._width;
|
|
98
|
+
height = () => this._height;
|
|
106
99
|
observe() {
|
|
107
100
|
this._observing = true;
|
|
108
101
|
}
|
|
@@ -117,8 +110,7 @@ class VideoViewElementInfo {
|
|
|
117
110
|
this._width = width;
|
|
118
111
|
this._height = height;
|
|
119
112
|
if (this._observing) {
|
|
120
|
-
|
|
121
|
-
(_this$handleResize = this.handleResize) === null || _this$handleResize === void 0 || _this$handleResize.call(this);
|
|
113
|
+
this.handleResize?.();
|
|
122
114
|
}
|
|
123
115
|
}
|
|
124
116
|
onVisibility(isVisible) {
|
|
@@ -126,8 +118,7 @@ class VideoViewElementInfo {
|
|
|
126
118
|
this.visible = isVisible;
|
|
127
119
|
this.visibilityChangedAt = Date.now();
|
|
128
120
|
if (this._observing) {
|
|
129
|
-
|
|
130
|
-
(_this$handleVisibilit = this.handleVisibilityChanged) === null || _this$handleVisibilit === void 0 || _this$handleVisibilit.call(this);
|
|
121
|
+
this.handleVisibilityChanged?.();
|
|
131
122
|
}
|
|
132
123
|
}
|
|
133
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["StyleSheet","View","LocalVideoTrack","TrackEvent","RTCView","useCallback","useEffect","useMemo","useState","RemoteVideoTrack","ViewPortDetector","jsx","_jsx","VideoView","style","videoTrack","objectFit","zOrder","mirror","elementInfo","info","VideoViewElementInfo","id","sid","something","layoutOnChange","event","onLayout","visibilityOnChange","isVisible","onVisibility","shouldObserveVisibility","isAdaptiveStream","mediaStream","setMediaStream","onRestarted","track","on","Restarted","off","observeElementInfo","stopObservingElementInfo","styles","container","children","onChange","videoView","disabled","propKey","streamURL","toURL","create","flex","width","element","_width","_height","_observing","visible","pictureInPicture","height","observe","stopObserving","nativeEvent","layout","handleResize","visibilityChangedAt","Date","now","handleVisibilityChanged"],"sourceRoot":"../../../src","sources":["components/VideoView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
6
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
-
import React, { Component } from 'react';
|
|
3
|
+
import { Component } from 'react';
|
|
8
4
|
import { AppState, View } from 'react-native';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
6
|
const DEFAULT_DELAY = 1000;
|
|
10
7
|
class TimeoutHandler {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
});
|
|
15
|
-
}
|
|
8
|
+
handlerRef = {
|
|
9
|
+
id: -1
|
|
10
|
+
};
|
|
16
11
|
get handler() {
|
|
17
12
|
return this.handlerRef.id;
|
|
18
13
|
}
|
|
@@ -46,70 +41,13 @@ function setIntervalWithTimeout(callback, intervalMs, handleWrapper = new Timeou
|
|
|
46
41
|
* Will not fire visibility changes for zero width/height components.
|
|
47
42
|
*/
|
|
48
43
|
export default class ViewPortDetector extends Component {
|
|
44
|
+
lastValue = null;
|
|
45
|
+
interval = null;
|
|
46
|
+
view = null;
|
|
47
|
+
lastAppStateActive = false;
|
|
48
|
+
appStateSubscription = null;
|
|
49
49
|
constructor(props) {
|
|
50
50
|
super(props);
|
|
51
|
-
_defineProperty(this, "lastValue", null);
|
|
52
|
-
_defineProperty(this, "interval", null);
|
|
53
|
-
_defineProperty(this, "view", null);
|
|
54
|
-
_defineProperty(this, "lastAppStateActive", false);
|
|
55
|
-
_defineProperty(this, "appStateSubscription", null);
|
|
56
|
-
_defineProperty(this, "hasValidTimeout", (disabled, delay) => {
|
|
57
|
-
let disabledValue = disabled ?? false;
|
|
58
|
-
let delayValue = delay ?? DEFAULT_DELAY;
|
|
59
|
-
return AppState.currentState === 'active' && !disabledValue && delayValue > 0;
|
|
60
|
-
});
|
|
61
|
-
_defineProperty(this, "handleAppStateChange", nextAppState => {
|
|
62
|
-
let nextAppStateActive = nextAppState === 'active';
|
|
63
|
-
if (this.lastAppStateActive !== nextAppStateActive) {
|
|
64
|
-
this.checkVisibility();
|
|
65
|
-
}
|
|
66
|
-
this.lastAppStateActive = nextAppStateActive;
|
|
67
|
-
if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {
|
|
68
|
-
this.stopWatching();
|
|
69
|
-
} else {
|
|
70
|
-
this.startWatching();
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
_defineProperty(this, "startWatching", () => {
|
|
74
|
-
if (this.interval) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
this.interval = setIntervalWithTimeout(this.checkVisibility, this.props.delay || DEFAULT_DELAY);
|
|
78
|
-
});
|
|
79
|
-
_defineProperty(this, "stopWatching", () => {
|
|
80
|
-
var _this$interval;
|
|
81
|
-
(_this$interval = this.interval) === null || _this$interval === void 0 || _this$interval.clear();
|
|
82
|
-
this.interval = null;
|
|
83
|
-
});
|
|
84
|
-
_defineProperty(this, "checkVisibility", () => {
|
|
85
|
-
if (!this.view) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (AppState.currentState !== 'active') {
|
|
89
|
-
this.updateVisibility(false);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
this.view.measure((_x, _y, width, height, _pageX, _pageY) => {
|
|
93
|
-
this.checkInViewPort(width, height);
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
_defineProperty(this, "checkInViewPort", (width, height) => {
|
|
97
|
-
let isVisible;
|
|
98
|
-
// Not visible if any of these are missing.
|
|
99
|
-
if (!width || !height) {
|
|
100
|
-
isVisible = false;
|
|
101
|
-
} else {
|
|
102
|
-
isVisible = true;
|
|
103
|
-
}
|
|
104
|
-
this.updateVisibility(isVisible);
|
|
105
|
-
});
|
|
106
|
-
_defineProperty(this, "updateVisibility", isVisible => {
|
|
107
|
-
if (this.lastValue !== isVisible) {
|
|
108
|
-
var _this$props$onChange, _this$props;
|
|
109
|
-
this.lastValue = isVisible;
|
|
110
|
-
(_this$props$onChange = (_this$props = this.props).onChange) === null || _this$props$onChange === void 0 || _this$props$onChange.call(_this$props, isVisible);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
51
|
this.state = {
|
|
114
52
|
rectTop: 0,
|
|
115
53
|
rectBottom: 0
|
|
@@ -123,11 +61,15 @@ export default class ViewPortDetector extends Component {
|
|
|
123
61
|
}
|
|
124
62
|
}
|
|
125
63
|
componentWillUnmount() {
|
|
126
|
-
|
|
127
|
-
(_this$appStateSubscri = this.appStateSubscription) === null || _this$appStateSubscri === void 0 || _this$appStateSubscri.remove();
|
|
64
|
+
this.appStateSubscription?.remove();
|
|
128
65
|
this.appStateSubscription = null;
|
|
129
66
|
this.stopWatching();
|
|
130
67
|
}
|
|
68
|
+
hasValidTimeout = (disabled, delay) => {
|
|
69
|
+
let disabledValue = disabled ?? false;
|
|
70
|
+
let delayValue = delay ?? DEFAULT_DELAY;
|
|
71
|
+
return AppState.currentState === 'active' && !disabledValue && delayValue > 0;
|
|
72
|
+
};
|
|
131
73
|
UNSAFE_componentWillReceiveProps(nextProps) {
|
|
132
74
|
if (!this.hasValidTimeout(nextProps.disabled, nextProps.delay)) {
|
|
133
75
|
this.stopWatching();
|
|
@@ -138,13 +80,65 @@ export default class ViewPortDetector extends Component {
|
|
|
138
80
|
this.startWatching();
|
|
139
81
|
}
|
|
140
82
|
}
|
|
83
|
+
handleAppStateChange = nextAppState => {
|
|
84
|
+
let nextAppStateActive = nextAppState === 'active';
|
|
85
|
+
if (this.lastAppStateActive !== nextAppStateActive) {
|
|
86
|
+
this.checkVisibility();
|
|
87
|
+
}
|
|
88
|
+
this.lastAppStateActive = nextAppStateActive;
|
|
89
|
+
if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {
|
|
90
|
+
this.stopWatching();
|
|
91
|
+
} else {
|
|
92
|
+
this.startWatching();
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
startWatching = () => {
|
|
96
|
+
if (this.interval) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
this.interval = setIntervalWithTimeout(this.checkVisibility, this.props.delay || DEFAULT_DELAY);
|
|
100
|
+
};
|
|
101
|
+
stopWatching = () => {
|
|
102
|
+
this.interval?.clear();
|
|
103
|
+
this.interval = null;
|
|
104
|
+
};
|
|
105
|
+
checkVisibility = () => {
|
|
106
|
+
if (!this.view) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (AppState.currentState !== 'active') {
|
|
110
|
+
this.updateVisibility(false);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.view.measure((_x, _y, width, height, _pageX, _pageY) => {
|
|
114
|
+
this.checkInViewPort(width, height);
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
checkInViewPort = (width, height) => {
|
|
118
|
+
let isVisible;
|
|
119
|
+
// Not visible if any of these are missing.
|
|
120
|
+
if (!width || !height) {
|
|
121
|
+
isVisible = false;
|
|
122
|
+
} else {
|
|
123
|
+
isVisible = true;
|
|
124
|
+
}
|
|
125
|
+
this.updateVisibility(isVisible);
|
|
126
|
+
};
|
|
127
|
+
updateVisibility = isVisible => {
|
|
128
|
+
if (this.lastValue !== isVisible) {
|
|
129
|
+
this.lastValue = isVisible;
|
|
130
|
+
this.props.onChange?.(isVisible);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
141
133
|
render() {
|
|
142
|
-
return /*#__PURE__*/
|
|
134
|
+
return /*#__PURE__*/_jsx(View, {
|
|
143
135
|
collapsable: false,
|
|
144
136
|
ref: component => {
|
|
145
137
|
this.view = component;
|
|
146
|
-
}
|
|
147
|
-
|
|
138
|
+
},
|
|
139
|
+
...this.props,
|
|
140
|
+
children: this.props.children
|
|
141
|
+
});
|
|
148
142
|
}
|
|
149
143
|
}
|
|
150
144
|
//# sourceMappingURL=ViewPortDetector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","_defineProperty","_toPropertyKey","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","React","Component","AppState","View","DEFAULT_DELAY","TimeoutHandler","constructor","id","handler","handlerRef","clear","clearTimeout","setIntervalWithTimeout","callback","intervalMs","handleWrapper","cleared","timeout","setTimeout","ViewPortDetector","props","disabled","delay","disabledValue","delayValue","currentState","nextAppState","nextAppStateActive","lastAppStateActive","checkVisibility","hasValidTimeout","stopWatching","startWatching","interval","_this$interval","view","updateVisibility","measure","_x","_y","width","height","_pageX","_pageY","checkInViewPort","isVisible","lastValue","_this$props$onChange","_this$props","onChange","state","rectTop","rectBottom","componentDidMount","appStateSubscription","addEventListener","handleAppStateChange","componentWillUnmount","_this$appStateSubscri","remove","UNSAFE_componentWillReceiveProps","nextProps","propKey","render","createElement","collapsable","ref","component","children"],"sources":["ViewPortDetector.tsx"],"sourcesContent":["'use strict';\n\nimport React, { Component, type PropsWithChildren } from 'react';\nimport {\n AppState,\n type AppStateStatus,\n type NativeEventSubscription,\n View,\n type ViewStyle,\n} from 'react-native';\n\nconst DEFAULT_DELAY = 1000;\n\nexport type Props = {\n disabled?: boolean;\n style?: ViewStyle;\n onChange?: (isVisible: boolean) => void;\n delay?: number;\n propKey?: any;\n};\n\nclass TimeoutHandler {\n private handlerRef: { id: any } = { id: -1 };\n\n get handler(): any {\n return this.handlerRef.id;\n }\n set handler(n: any) {\n this.handlerRef.id = n;\n }\n\n clear() {\n clearTimeout(this.handlerRef.id as any);\n }\n}\n\nfunction setIntervalWithTimeout(\n callback: (clear: () => void) => any,\n intervalMs: number,\n handleWrapper = new TimeoutHandler()\n): TimeoutHandler {\n let cleared = false;\n\n const timeout = () => {\n handleWrapper.handler = setTimeout(() => {\n callback(() => {\n cleared = true;\n handleWrapper.clear();\n });\n if (!cleared) {\n timeout();\n }\n }, intervalMs);\n };\n timeout();\n return handleWrapper;\n}\n\n/**\n * Detects when this is in the viewport and visible.\n *\n * Will not fire visibility changes for zero width/height components.\n */\nexport default class ViewPortDetector extends Component<\n PropsWithChildren<Props>\n> {\n private lastValue: boolean | null = null;\n private interval: TimeoutHandler | null = null;\n private view: View | null = null;\n private lastAppStateActive = false;\n private appStateSubscription: NativeEventSubscription | null = null;\n\n constructor(props: Props) {\n super(props);\n this.state = { rectTop: 0, rectBottom: 0 };\n }\n\n componentDidMount() {\n this.lastAppStateActive = AppState.currentState === 'active';\n this.appStateSubscription = AppState.addEventListener(\n 'change',\n this.handleAppStateChange\n );\n if (this.hasValidTimeout(this.props.disabled, this.props.delay)) {\n this.startWatching();\n }\n }\n\n componentWillUnmount() {\n this.appStateSubscription?.remove();\n this.appStateSubscription = null;\n this.stopWatching();\n }\n\n hasValidTimeout = (disabled?: boolean, delay?: number): boolean => {\n let disabledValue = disabled ?? false;\n let delayValue = delay ?? DEFAULT_DELAY;\n return (\n AppState.currentState === 'active' && !disabledValue && delayValue > 0\n );\n };\n\n UNSAFE_componentWillReceiveProps(nextProps: Props) {\n if (!this.hasValidTimeout(nextProps.disabled, nextProps.delay)) {\n this.stopWatching();\n } else {\n if (this.props.propKey !== nextProps.propKey) {\n this.lastValue = null;\n }\n this.startWatching();\n }\n }\n handleAppStateChange = (nextAppState: AppStateStatus) => {\n let nextAppStateActive = nextAppState === 'active';\n if (this.lastAppStateActive !== nextAppStateActive) {\n this.checkVisibility();\n }\n this.lastAppStateActive = nextAppStateActive;\n\n if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {\n this.stopWatching();\n } else {\n this.startWatching();\n }\n };\n\n startWatching = () => {\n if (this.interval) {\n return;\n }\n this.interval = setIntervalWithTimeout(\n this.checkVisibility,\n this.props.delay || DEFAULT_DELAY\n );\n };\n\n stopWatching = () => {\n this.interval?.clear();\n this.interval = null;\n };\n\n checkVisibility = () => {\n if (!this.view) {\n return;\n }\n\n if (AppState.currentState !== 'active') {\n this.updateVisibility(false);\n return;\n }\n\n this.view.measure((_x, _y, width, height, _pageX, _pageY) => {\n this.checkInViewPort(width, height);\n });\n };\n checkInViewPort = (width?: number, height?: number) => {\n let isVisible: boolean;\n // Not visible if any of these are missing.\n if (!width || !height) {\n isVisible = false;\n } else {\n isVisible = true;\n }\n this.updateVisibility(isVisible);\n };\n\n updateVisibility = (isVisible: boolean) => {\n if (this.lastValue !== isVisible) {\n this.lastValue = isVisible;\n this.props.onChange?.(isVisible);\n }\n };\n render() {\n return (\n <View\n collapsable={false}\n ref={(component) => {\n this.view = component;\n }}\n {...this.props}\n >\n {this.props.children}\n </View>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Component","AppState","View","jsx","_jsx","DEFAULT_DELAY","TimeoutHandler","handlerRef","id","handler","n","clear","clearTimeout","setIntervalWithTimeout","callback","intervalMs","handleWrapper","cleared","timeout","setTimeout","ViewPortDetector","lastValue","interval","view","lastAppStateActive","appStateSubscription","constructor","props","state","rectTop","rectBottom","componentDidMount","currentState","addEventListener","handleAppStateChange","hasValidTimeout","disabled","delay","startWatching","componentWillUnmount","remove","stopWatching","disabledValue","delayValue","UNSAFE_componentWillReceiveProps","nextProps","propKey","nextAppState","nextAppStateActive","checkVisibility","updateVisibility","measure","_x","_y","width","height","_pageX","_pageY","checkInViewPort","isVisible","onChange","render","collapsable","ref","component","children"],"sourceRoot":"../../../src","sources":["components/ViewPortDetector.tsx"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,SAAS,QAAgC,OAAO;AACzD,SACEC,QAAQ,EAGRC,IAAI,QAEC,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtB,MAAMC,aAAa,GAAG,IAAI;AAU1B,MAAMC,cAAc,CAAC;EACXC,UAAU,GAAgB;IAAEC,EAAE,EAAE,CAAC;EAAE,CAAC;EAE5C,IAAIC,OAAOA,CAAA,EAAQ;IACjB,OAAO,IAAI,CAACF,UAAU,CAACC,EAAE;EAC3B;EACA,IAAIC,OAAOA,CAACC,CAAM,EAAE;IAClB,IAAI,CAACH,UAAU,CAACC,EAAE,GAAGE,CAAC;EACxB;EAEAC,KAAKA,CAAA,EAAG;IACNC,YAAY,CAAC,IAAI,CAACL,UAAU,CAACC,EAAS,CAAC;EACzC;AACF;AAEA,SAASK,sBAAsBA,CAC7BC,QAAoC,EACpCC,UAAkB,EAClBC,aAAa,GAAG,IAAIV,cAAc,CAAC,CAAC,EACpB;EAChB,IAAIW,OAAO,GAAG,KAAK;EAEnB,MAAMC,OAAO,GAAGA,CAAA,KAAM;IACpBF,aAAa,CAACP,OAAO,GAAGU,UAAU,CAAC,MAAM;MACvCL,QAAQ,CAAC,MAAM;QACbG,OAAO,GAAG,IAAI;QACdD,aAAa,CAACL,KAAK,CAAC,CAAC;MACvB,CAAC,CAAC;MACF,IAAI,CAACM,OAAO,EAAE;QACZC,OAAO,CAAC,CAAC;MACX;IACF,CAAC,EAAEH,UAAU,CAAC;EAChB,CAAC;EACDG,OAAO,CAAC,CAAC;EACT,OAAOF,aAAa;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMI,gBAAgB,SAASpB,SAAS,CAErD;EACQqB,SAAS,GAAmB,IAAI;EAChCC,QAAQ,GAA0B,IAAI;EACtCC,IAAI,GAAgB,IAAI;EACxBC,kBAAkB,GAAG,KAAK;EAC1BC,oBAAoB,GAAmC,IAAI;EAEnEC,WAAWA,CAACC,KAAY,EAAE;IACxB,KAAK,CAACA,KAAK,CAAC;IACZ,IAAI,CAACC,KAAK,GAAG;MAAEC,OAAO,EAAE,CAAC;MAAEC,UAAU,EAAE;IAAE,CAAC;EAC5C;EAEAC,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACP,kBAAkB,GAAGvB,QAAQ,CAAC+B,YAAY,KAAK,QAAQ;IAC5D,IAAI,CAACP,oBAAoB,GAAGxB,QAAQ,CAACgC,gBAAgB,CACnD,QAAQ,EACR,IAAI,CAACC,oBACP,CAAC;IACD,IAAI,IAAI,CAACC,eAAe,CAAC,IAAI,CAACR,KAAK,CAACS,QAAQ,EAAE,IAAI,CAACT,KAAK,CAACU,KAAK,CAAC,EAAE;MAC/D,IAAI,CAACC,aAAa,CAAC,CAAC;IACtB;EACF;EAEAC,oBAAoBA,CAAA,EAAG;IACrB,IAAI,CAACd,oBAAoB,EAAEe,MAAM,CAAC,CAAC;IACnC,IAAI,CAACf,oBAAoB,GAAG,IAAI;IAChC,IAAI,CAACgB,YAAY,CAAC,CAAC;EACrB;EAEAN,eAAe,GAAGA,CAACC,QAAkB,EAAEC,KAAc,KAAc;IACjE,IAAIK,aAAa,GAAGN,QAAQ,IAAI,KAAK;IACrC,IAAIO,UAAU,GAAGN,KAAK,IAAIhC,aAAa;IACvC,OACEJ,QAAQ,CAAC+B,YAAY,KAAK,QAAQ,IAAI,CAACU,aAAa,IAAIC,UAAU,GAAG,CAAC;EAE1E,CAAC;EAEDC,gCAAgCA,CAACC,SAAgB,EAAE;IACjD,IAAI,CAAC,IAAI,CAACV,eAAe,CAACU,SAAS,CAACT,QAAQ,EAAES,SAAS,CAACR,KAAK,CAAC,EAAE;MAC9D,IAAI,CAACI,YAAY,CAAC,CAAC;IACrB,CAAC,MAAM;MACL,IAAI,IAAI,CAACd,KAAK,CAACmB,OAAO,KAAKD,SAAS,CAACC,OAAO,EAAE;QAC5C,IAAI,CAACzB,SAAS,GAAG,IAAI;MACvB;MACA,IAAI,CAACiB,aAAa,CAAC,CAAC;IACtB;EACF;EACAJ,oBAAoB,GAAIa,YAA4B,IAAK;IACvD,IAAIC,kBAAkB,GAAGD,YAAY,KAAK,QAAQ;IAClD,IAAI,IAAI,CAACvB,kBAAkB,KAAKwB,kBAAkB,EAAE;MAClD,IAAI,CAACC,eAAe,CAAC,CAAC;IACxB;IACA,IAAI,CAACzB,kBAAkB,GAAGwB,kBAAkB;IAE5C,IAAI,CAAC,IAAI,CAACb,eAAe,CAAC,IAAI,CAACR,KAAK,CAACS,QAAQ,EAAE,IAAI,CAACT,KAAK,CAACU,KAAK,CAAC,EAAE;MAChE,IAAI,CAACI,YAAY,CAAC,CAAC;IACrB,CAAC,MAAM;MACL,IAAI,CAACH,aAAa,CAAC,CAAC;IACtB;EACF,CAAC;EAEDA,aAAa,GAAGA,CAAA,KAAM;IACpB,IAAI,IAAI,CAAChB,QAAQ,EAAE;MACjB;IACF;IACA,IAAI,CAACA,QAAQ,GAAGT,sBAAsB,CACpC,IAAI,CAACoC,eAAe,EACpB,IAAI,CAACtB,KAAK,CAACU,KAAK,IAAIhC,aACtB,CAAC;EACH,CAAC;EAEDoC,YAAY,GAAGA,CAAA,KAAM;IACnB,IAAI,CAACnB,QAAQ,EAAEX,KAAK,CAAC,CAAC;IACtB,IAAI,CAACW,QAAQ,GAAG,IAAI;EACtB,CAAC;EAED2B,eAAe,GAAGA,CAAA,KAAM;IACtB,IAAI,CAAC,IAAI,CAAC1B,IAAI,EAAE;MACd;IACF;IAEA,IAAItB,QAAQ,CAAC+B,YAAY,KAAK,QAAQ,EAAE;MACtC,IAAI,CAACkB,gBAAgB,CAAC,KAAK,CAAC;MAC5B;IACF;IAEA,IAAI,CAAC3B,IAAI,CAAC4B,OAAO,CAAC,CAACC,EAAE,EAAEC,EAAE,EAAEC,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,KAAK;MAC3D,IAAI,CAACC,eAAe,CAACJ,KAAK,EAAEC,MAAM,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC;EACDG,eAAe,GAAGA,CAACJ,KAAc,EAAEC,MAAe,KAAK;IACrD,IAAII,SAAkB;IACtB;IACA,IAAI,CAACL,KAAK,IAAI,CAACC,MAAM,EAAE;MACrBI,SAAS,GAAG,KAAK;IACnB,CAAC,MAAM;MACLA,SAAS,GAAG,IAAI;IAClB;IACA,IAAI,CAACT,gBAAgB,CAACS,SAAS,CAAC;EAClC,CAAC;EAEDT,gBAAgB,GAAIS,SAAkB,IAAK;IACzC,IAAI,IAAI,CAACtC,SAAS,KAAKsC,SAAS,EAAE;MAChC,IAAI,CAACtC,SAAS,GAAGsC,SAAS;MAC1B,IAAI,CAAChC,KAAK,CAACiC,QAAQ,GAAGD,SAAS,CAAC;IAClC;EACF,CAAC;EACDE,MAAMA,CAAA,EAAG;IACP,oBACEzD,IAAA,CAACF,IAAI;MACH4D,WAAW,EAAE,KAAM;MACnBC,GAAG,EAAGC,SAAS,IAAK;QAClB,IAAI,CAACzC,IAAI,GAAGyC,SAAS;MACvB,CAAE;MAAA,GACE,IAAI,CAACrC,KAAK;MAAAsC,QAAA,EAEb,IAAI,CAACtC,KAAK,CAACsC;IAAQ,CAChB,CAAC;EAEX;AACF","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
4
3
|
import { RTCDataPacketCryptorFactory, RTCFrameCryptorAlgorithm, RTCFrameCryptorFactory } from '@livekit/react-native-webrtc';
|
|
5
4
|
import { ParticipantEvent, RoomEvent, EncryptionEvent, Mutex } from 'livekit-client';
|
|
6
5
|
import EventEmitter from 'events';
|
|
@@ -8,16 +7,14 @@ import EventEmitter from 'events';
|
|
|
8
7
|
* @experimental
|
|
9
8
|
*/
|
|
10
9
|
export default class RNE2EEManager extends EventEmitter {
|
|
10
|
+
frameCryptors = new Map();
|
|
11
|
+
algorithm = RTCFrameCryptorAlgorithm.kAesGcm;
|
|
12
|
+
encryptionEnabled = false;
|
|
13
|
+
dataChannelEncryptionEnabled = false;
|
|
14
|
+
dataPacketCryptorLock = new Mutex();
|
|
15
|
+
dataPacketCryptor = undefined;
|
|
11
16
|
constructor(keyProvider, dcEncryptionEnabled = false) {
|
|
12
17
|
super();
|
|
13
|
-
_defineProperty(this, "room", void 0);
|
|
14
|
-
_defineProperty(this, "frameCryptors", new Map());
|
|
15
|
-
_defineProperty(this, "keyProvider", void 0);
|
|
16
|
-
_defineProperty(this, "algorithm", RTCFrameCryptorAlgorithm.kAesGcm);
|
|
17
|
-
_defineProperty(this, "encryptionEnabled", false);
|
|
18
|
-
_defineProperty(this, "dataChannelEncryptionEnabled", false);
|
|
19
|
-
_defineProperty(this, "dataPacketCryptorLock", new Mutex());
|
|
20
|
-
_defineProperty(this, "dataPacketCryptor", undefined);
|
|
21
18
|
this.keyProvider = keyProvider;
|
|
22
19
|
this.encryptionEnabled = false;
|
|
23
20
|
this.dataChannelEncryptionEnabled = dcEncryptionEnabled;
|
|
@@ -162,13 +159,11 @@ export default class RNE2EEManager extends EventEmitter {
|
|
|
162
159
|
// No-op
|
|
163
160
|
}
|
|
164
161
|
setParticipantCryptorEnabled(enabled, participantIdentity) {
|
|
165
|
-
|
|
166
|
-
if (this.encryptionEnabled !== enabled && participantIdentity === ((_this$room = this.room) === null || _this$room === void 0 ? void 0 : _this$room.localParticipant.identity)) {
|
|
162
|
+
if (this.encryptionEnabled !== enabled && participantIdentity === this.room?.localParticipant.identity) {
|
|
167
163
|
this.encryptionEnabled = enabled;
|
|
168
164
|
this.emit(EncryptionEvent.ParticipantEncryptionStatusChanged, enabled, this.room.localParticipant);
|
|
169
165
|
} else {
|
|
170
|
-
|
|
171
|
-
const participant = (_this$room2 = this.room) === null || _this$room2 === void 0 ? void 0 : _this$room2.getParticipantByIdentity(participantIdentity);
|
|
166
|
+
const participant = this.room?.getParticipantByIdentity(participantIdentity);
|
|
172
167
|
if (!participant) {
|
|
173
168
|
throw TypeError(`couldn't set encryption status, participant not found ${participantIdentity}`);
|
|
174
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RTCDataPacketCryptorFactory","RTCFrameCryptorAlgorithm","RTCFrameCryptorFactory","ParticipantEvent","RoomEvent","EncryptionEvent","Mutex","EventEmitter","RNE2EEManager","constructor","keyProvider","dcEncryptionEnabled","_defineProperty","Map","kAesGcm","undefined","encryptionEnabled","dataChannelEncryptionEnabled","isEnabled","isDataChannelEncryptionEnabled","value","setup","room","setupEventListeners","localParticipant","on","LocalTrackPublished","publication","setupE2EESender","LocalTrackUnpublished","frameCryptor","findTrackCryptor","trackSid","frameCryptors","delete","setEnabled","dispose","TrackSubscribed","_track","pub","participant","setupE2EEReceiver","TrackUnsubscribed","_participant","SignalConnected","TypeError","setParticipantCryptorEnabled","isE2EEEnabled","identity","isEncrypted","createFrameCryptorForSender","track","sender","set","setKeyIndex","getLatestKeyIndex","createFrameCryptorForReceiver","receiver","setSifTrailer","trailer","getDataPacketCryptor","dataPacketCryptor","unlock","dataPacketCryptorLock","lock","createDataPacketCryptor","algorithm","rtcKeyProvider","encryptData","data","Error","participantId","encryptedPacket","encrypt","uuid","payload","iv","keyIndex","handleEncryptedData","participantIdentity","packet","decryptedData","decrypt","trackId","get","createFrameCryptorForRtpSender","createFrameCryptorForRtpReceiver","setupEngine","_engine","enabled","_this$room","emit","ParticipantEncryptionStatusChanged","_this$room2","getParticipantByIdentity"],"sources":["RNE2EEManager.ts"],"sourcesContent":["import {\n RTCDataPacketCryptor,\n RTCDataPacketCryptorFactory,\n RTCFrameCryptorAlgorithm,\n RTCFrameCryptorFactory,\n RTCRtpReceiver,\n type RTCEncryptedPacket,\n type RTCFrameCryptor,\n type RTCRtpSender,\n} from '@livekit/react-native-webrtc';\nimport {\n LocalParticipant,\n LocalTrackPublication,\n ParticipantEvent,\n RemoteParticipant,\n RemoteTrackPublication,\n RoomEvent,\n type Room,\n type BaseE2EEManager,\n type E2EEManagerCallbacks,\n EncryptionEvent,\n type DecryptDataResponseMessage,\n type EncryptDataResponseMessage,\n Mutex,\n} from 'livekit-client';\nimport type RNKeyProvider from './RNKeyProvider';\nimport type RTCEngine from 'livekit-client/dist/src/room/RTCEngine';\nimport EventEmitter from 'events';\nimport type TypedEventEmitter from 'typed-emitter';\n\n/**\n * @experimental\n */\nexport default class RNE2EEManager\n extends (EventEmitter as new () => TypedEventEmitter<E2EEManagerCallbacks>)\n implements BaseE2EEManager\n{\n private room?: Room;\n private frameCryptors: Map<string, RTCFrameCryptor> = new Map();\n private keyProvider: RNKeyProvider;\n private algorithm: RTCFrameCryptorAlgorithm =\n RTCFrameCryptorAlgorithm.kAesGcm;\n\n private encryptionEnabled: boolean = false;\n private dataChannelEncryptionEnabled: boolean = false;\n\n private dataPacketCryptorLock = new Mutex();\n private dataPacketCryptor: RTCDataPacketCryptor | undefined = undefined;\n constructor(\n keyProvider: RNKeyProvider,\n dcEncryptionEnabled: boolean = false\n ) {\n super();\n this.keyProvider = keyProvider;\n this.encryptionEnabled = false;\n this.dataChannelEncryptionEnabled = dcEncryptionEnabled;\n }\n\n get isEnabled(): boolean {\n return this.encryptionEnabled;\n }\n get isDataChannelEncryptionEnabled(): boolean {\n return this.isEnabled && this.dataChannelEncryptionEnabled;\n }\n set isDataChannelEncryptionEnabled(value: boolean) {\n this.dataChannelEncryptionEnabled = value;\n }\n\n setup(room: Room) {\n if (this.room !== room) {\n this.room = room;\n this.setupEventListeners(room);\n }\n }\n\n private setupEventListeners(room: Room) {\n room.localParticipant\n .on(ParticipantEvent.LocalTrackPublished, async (publication) => {\n this.setupE2EESender(publication, room.localParticipant);\n })\n .on(ParticipantEvent.LocalTrackUnpublished, async (publication) => {\n let frameCryptor = this.findTrackCryptor(publication.trackSid);\n if (frameCryptor) {\n this.frameCryptors.delete(publication.trackSid);\n await frameCryptor.setEnabled(false);\n await frameCryptor.dispose();\n }\n });\n\n room\n .on(RoomEvent.TrackSubscribed, (_track, pub, participant) => {\n this.setupE2EEReceiver(pub, participant);\n })\n .on(\n RoomEvent.TrackUnsubscribed,\n async (_track, publication, _participant) => {\n let frameCryptor = this.findTrackCryptor(publication.trackSid);\n if (frameCryptor) {\n this.frameCryptors.delete(publication.trackSid);\n await frameCryptor.setEnabled(false);\n await frameCryptor.dispose();\n }\n }\n )\n .on(RoomEvent.SignalConnected, () => {\n if (!this.room) {\n throw new TypeError(`expected room to be present on signal connect`);\n }\n this.setParticipantCryptorEnabled(\n this.room.localParticipant.isE2EEEnabled,\n this.room.localParticipant.identity\n );\n });\n }\n\n private async setupE2EESender(\n publication: LocalTrackPublication,\n participant: LocalParticipant\n ) {\n if (!publication.isEncrypted) {\n return;\n }\n\n var frameCryptor = this.findTrackCryptor(publication.trackSid);\n\n if (!frameCryptor) {\n frameCryptor = this.createFrameCryptorForSender(\n publication.track!.sender,\n participant.identity\n );\n\n this.frameCryptors.set(publication.trackSid, frameCryptor);\n frameCryptor.setEnabled(true);\n frameCryptor.setKeyIndex(\n this.keyProvider.getLatestKeyIndex(participant.identity)\n );\n }\n }\n\n private async setupE2EEReceiver(\n publication: RemoteTrackPublication,\n participant: RemoteParticipant\n ) {\n if (!publication.isEncrypted) {\n return;\n }\n\n var frameCryptor = this.findTrackCryptor(publication.trackSid);\n\n if (!frameCryptor) {\n frameCryptor = this.createFrameCryptorForReceiver(\n publication.track!.receiver,\n participant.identity\n );\n\n this.frameCryptors.set(publication.trackSid, frameCryptor);\n frameCryptor.setEnabled(true);\n frameCryptor.setKeyIndex(\n this.keyProvider.getLatestKeyIndex(participant.identity)\n );\n }\n }\n\n setSifTrailer(trailer: Uint8Array): void {\n this.keyProvider.setSifTrailer(trailer);\n }\n\n private async getDataPacketCryptor(): Promise<RTCDataPacketCryptor> {\n let dataPacketCryptor = this.dataPacketCryptor;\n if (dataPacketCryptor) {\n return dataPacketCryptor;\n }\n\n let unlock = await this.dataPacketCryptorLock.lock();\n\n try {\n dataPacketCryptor = this.dataPacketCryptor;\n if (dataPacketCryptor) {\n return dataPacketCryptor;\n }\n\n dataPacketCryptor =\n await RTCDataPacketCryptorFactory.createDataPacketCryptor(\n this.algorithm,\n this.keyProvider.rtcKeyProvider\n );\n\n this.dataPacketCryptor = dataPacketCryptor;\n return dataPacketCryptor;\n } finally {\n unlock();\n }\n }\n async encryptData(\n data: Uint8Array\n ): Promise<EncryptDataResponseMessage['data']> {\n let room = this.room;\n if (!room) {\n throw new Error(\"e2eemanager isn't setup with room!\");\n }\n\n let participantId = room.localParticipant.identity;\n\n let dataPacketCryptor = await this.getDataPacketCryptor();\n\n let encryptedPacket = await dataPacketCryptor.encrypt(\n participantId,\n this.keyProvider.getLatestKeyIndex(participantId),\n data\n );\n\n if (!encryptedPacket) {\n throw new Error('encryption for packet failed');\n }\n return {\n uuid: '', //not used\n payload: encryptedPacket.payload,\n iv: encryptedPacket.iv,\n keyIndex: encryptedPacket.keyIndex,\n };\n }\n\n async handleEncryptedData(\n payload: Uint8Array,\n iv: Uint8Array,\n participantIdentity: string,\n keyIndex: number\n ): Promise<DecryptDataResponseMessage['data']> {\n let packet = {\n payload,\n iv,\n keyIndex,\n } satisfies RTCEncryptedPacket;\n\n let dataPacketCryptor = await this.getDataPacketCryptor();\n let decryptedData = await dataPacketCryptor.decrypt(\n participantIdentity,\n packet\n );\n\n if (!decryptedData) {\n throw new Error('decryption for packet failed');\n }\n\n return {\n uuid: '', //not used\n payload: decryptedData,\n } satisfies DecryptDataResponseMessage['data'];\n }\n\n // Utility methods\n //////////////////////\n\n private findTrackCryptor(trackId: string): RTCFrameCryptor | undefined {\n return this.frameCryptors.get(trackId);\n }\n\n private createFrameCryptorForSender(\n sender: RTCRtpSender,\n participantId: string\n ): RTCFrameCryptor {\n return RTCFrameCryptorFactory.createFrameCryptorForRtpSender(\n participantId,\n sender,\n this.algorithm,\n this.keyProvider.rtcKeyProvider\n );\n }\n\n private createFrameCryptorForReceiver(\n receiver: RTCRtpReceiver,\n participantId: string\n ): RTCFrameCryptor {\n return RTCFrameCryptorFactory.createFrameCryptorForRtpReceiver(\n participantId,\n receiver,\n this.algorithm,\n this.keyProvider.rtcKeyProvider\n );\n }\n\n setupEngine(_engine: RTCEngine): void {\n // No-op\n }\n setParticipantCryptorEnabled(\n enabled: boolean,\n participantIdentity: string\n ): void {\n if (\n this.encryptionEnabled !== enabled &&\n participantIdentity === this.room?.localParticipant.identity\n ) {\n this.encryptionEnabled = enabled;\n this.emit(\n EncryptionEvent.ParticipantEncryptionStatusChanged,\n enabled,\n this.room!.localParticipant\n );\n } else {\n const participant =\n this.room?.getParticipantByIdentity(participantIdentity);\n if (!participant) {\n throw TypeError(\n `couldn't set encryption status, participant not found ${participantIdentity}`\n );\n }\n this.emit(\n EncryptionEvent.ParticipantEncryptionStatusChanged,\n enabled,\n participant\n );\n }\n }\n}\n"],"mappings":";;;AAAA,SAEEA,2BAA2B,EAC3BC,wBAAwB,EACxBC,sBAAsB,QAKjB,8BAA8B;AACrC,SAGEC,gBAAgB,EAGhBC,SAAS,EAITC,eAAe,EAGfC,KAAK,QACA,gBAAgB;AAGvB,OAAOC,YAAY,MAAM,QAAQ;AAGjC;AACA;AACA;AACA,eAAe,MAAMC,aAAa,SACvBD,YAAY,CAEvB;EAYEE,WAAWA,CACTC,WAA0B,EAC1BC,mBAA4B,GAAG,KAAK,EACpC;IACA,KAAK,CAAC,CAAC;IAACC,eAAA;IAAAA,eAAA,wBAd4C,IAAIC,GAAG,CAAC,CAAC;IAAAD,eAAA;IAAAA,eAAA,oBAG7DX,wBAAwB,CAACa,OAAO;IAAAF,eAAA,4BAEG,KAAK;IAAAA,eAAA,uCACM,KAAK;IAAAA,eAAA,gCAErB,IAAIN,KAAK,CAAC,CAAC;IAAAM,eAAA,4BACmBG,SAAS;IAMrE,IAAI,CAACL,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACM,iBAAiB,GAAG,KAAK;IAC9B,IAAI,CAACC,4BAA4B,GAAGN,mBAAmB;EACzD;EAEA,IAAIO,SAASA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACF,iBAAiB;EAC/B;EACA,IAAIG,8BAA8BA,CAAA,EAAY;IAC5C,OAAO,IAAI,CAACD,SAAS,IAAI,IAAI,CAACD,4BAA4B;EAC5D;EACA,IAAIE,8BAA8BA,CAACC,KAAc,EAAE;IACjD,IAAI,CAACH,4BAA4B,GAAGG,KAAK;EAC3C;EAEAC,KAAKA,CAACC,IAAU,EAAE;IAChB,IAAI,IAAI,CAACA,IAAI,KAAKA,IAAI,EAAE;MACtB,IAAI,CAACA,IAAI,GAAGA,IAAI;MAChB,IAAI,CAACC,mBAAmB,CAACD,IAAI,CAAC;IAChC;EACF;EAEQC,mBAAmBA,CAACD,IAAU,EAAE;IACtCA,IAAI,CAACE,gBAAgB,CAClBC,EAAE,CAACtB,gBAAgB,CAACuB,mBAAmB,EAAE,MAAOC,WAAW,IAAK;MAC/D,IAAI,CAACC,eAAe,CAACD,WAAW,EAAEL,IAAI,CAACE,gBAAgB,CAAC;IAC1D,CAAC,CAAC,CACDC,EAAE,CAACtB,gBAAgB,CAAC0B,qBAAqB,EAAE,MAAOF,WAAW,IAAK;MACjE,IAAIG,YAAY,GAAG,IAAI,CAACC,gBAAgB,CAACJ,WAAW,CAACK,QAAQ,CAAC;MAC9D,IAAIF,YAAY,EAAE;QAChB,IAAI,CAACG,aAAa,CAACC,MAAM,CAACP,WAAW,CAACK,QAAQ,CAAC;QAC/C,MAAMF,YAAY,CAACK,UAAU,CAAC,KAAK,CAAC;QACpC,MAAML,YAAY,CAACM,OAAO,CAAC,CAAC;MAC9B;IACF,CAAC,CAAC;IAEJd,IAAI,CACDG,EAAE,CAACrB,SAAS,CAACiC,eAAe,EAAE,CAACC,MAAM,EAAEC,GAAG,EAAEC,WAAW,KAAK;MAC3D,IAAI,CAACC,iBAAiB,CAACF,GAAG,EAAEC,WAAW,CAAC;IAC1C,CAAC,CAAC,CACDf,EAAE,CACDrB,SAAS,CAACsC,iBAAiB,EAC3B,OAAOJ,MAAM,EAAEX,WAAW,EAAEgB,YAAY,KAAK;MAC3C,IAAIb,YAAY,GAAG,IAAI,CAACC,gBAAgB,CAACJ,WAAW,CAACK,QAAQ,CAAC;MAC9D,IAAIF,YAAY,EAAE;QAChB,IAAI,CAACG,aAAa,CAACC,MAAM,CAACP,WAAW,CAACK,QAAQ,CAAC;QAC/C,MAAMF,YAAY,CAACK,UAAU,CAAC,KAAK,CAAC;QACpC,MAAML,YAAY,CAACM,OAAO,CAAC,CAAC;MAC9B;IACF,CACF,CAAC,CACAX,EAAE,CAACrB,SAAS,CAACwC,eAAe,EAAE,MAAM;MACnC,IAAI,CAAC,IAAI,CAACtB,IAAI,EAAE;QACd,MAAM,IAAIuB,SAAS,CAAC,+CAA+C,CAAC;MACtE;MACA,IAAI,CAACC,4BAA4B,CAC/B,IAAI,CAACxB,IAAI,CAACE,gBAAgB,CAACuB,aAAa,EACxC,IAAI,CAACzB,IAAI,CAACE,gBAAgB,CAACwB,QAC7B,CAAC;IACH,CAAC,CAAC;EACN;EAEA,MAAcpB,eAAeA,CAC3BD,WAAkC,EAClCa,WAA6B,EAC7B;IACA,IAAI,CAACb,WAAW,CAACsB,WAAW,EAAE;MAC5B;IACF;IAEA,IAAInB,YAAY,GAAG,IAAI,CAACC,gBAAgB,CAACJ,WAAW,CAACK,QAAQ,CAAC;IAE9D,IAAI,CAACF,YAAY,EAAE;MACjBA,YAAY,GAAG,IAAI,CAACoB,2BAA2B,CAC7CvB,WAAW,CAACwB,KAAK,CAAEC,MAAM,EACzBZ,WAAW,CAACQ,QACd,CAAC;MAED,IAAI,CAACf,aAAa,CAACoB,GAAG,CAAC1B,WAAW,CAACK,QAAQ,EAAEF,YAAY,CAAC;MAC1DA,YAAY,CAACK,UAAU,CAAC,IAAI,CAAC;MAC7BL,YAAY,CAACwB,WAAW,CACtB,IAAI,CAAC5C,WAAW,CAAC6C,iBAAiB,CAACf,WAAW,CAACQ,QAAQ,CACzD,CAAC;IACH;EACF;EAEA,MAAcP,iBAAiBA,CAC7Bd,WAAmC,EACnCa,WAA8B,EAC9B;IACA,IAAI,CAACb,WAAW,CAACsB,WAAW,EAAE;MAC5B;IACF;IAEA,IAAInB,YAAY,GAAG,IAAI,CAACC,gBAAgB,CAACJ,WAAW,CAACK,QAAQ,CAAC;IAE9D,IAAI,CAACF,YAAY,EAAE;MACjBA,YAAY,GAAG,IAAI,CAAC0B,6BAA6B,CAC/C7B,WAAW,CAACwB,KAAK,CAAEM,QAAQ,EAC3BjB,WAAW,CAACQ,QACd,CAAC;MAED,IAAI,CAACf,aAAa,CAACoB,GAAG,CAAC1B,WAAW,CAACK,QAAQ,EAAEF,YAAY,CAAC;MAC1DA,YAAY,CAACK,UAAU,CAAC,IAAI,CAAC;MAC7BL,YAAY,CAACwB,WAAW,CACtB,IAAI,CAAC5C,WAAW,CAAC6C,iBAAiB,CAACf,WAAW,CAACQ,QAAQ,CACzD,CAAC;IACH;EACF;EAEAU,aAAaA,CAACC,OAAmB,EAAQ;IACvC,IAAI,CAACjD,WAAW,CAACgD,aAAa,CAACC,OAAO,CAAC;EACzC;EAEA,MAAcC,oBAAoBA,CAAA,EAAkC;IAClE,IAAIC,iBAAiB,GAAG,IAAI,CAACA,iBAAiB;IAC9C,IAAIA,iBAAiB,EAAE;MACrB,OAAOA,iBAAiB;IAC1B;IAEA,IAAIC,MAAM,GAAG,MAAM,IAAI,CAACC,qBAAqB,CAACC,IAAI,CAAC,CAAC;IAEpD,IAAI;MACFH,iBAAiB,GAAG,IAAI,CAACA,iBAAiB;MAC1C,IAAIA,iBAAiB,EAAE;QACrB,OAAOA,iBAAiB;MAC1B;MAEAA,iBAAiB,GACf,MAAM7D,2BAA2B,CAACiE,uBAAuB,CACvD,IAAI,CAACC,SAAS,EACd,IAAI,CAACxD,WAAW,CAACyD,cACnB,CAAC;MAEH,IAAI,CAACN,iBAAiB,GAAGA,iBAAiB;MAC1C,OAAOA,iBAAiB;IAC1B,CAAC,SAAS;MACRC,MAAM,CAAC,CAAC;IACV;EACF;EACA,MAAMM,WAAWA,CACfC,IAAgB,EAC6B;IAC7C,IAAI/C,IAAI,GAAG,IAAI,CAACA,IAAI;IACpB,IAAI,CAACA,IAAI,EAAE;MACT,MAAM,IAAIgD,KAAK,CAAC,oCAAoC,CAAC;IACvD;IAEA,IAAIC,aAAa,GAAGjD,IAAI,CAACE,gBAAgB,CAACwB,QAAQ;IAElD,IAAIa,iBAAiB,GAAG,MAAM,IAAI,CAACD,oBAAoB,CAAC,CAAC;IAEzD,IAAIY,eAAe,GAAG,MAAMX,iBAAiB,CAACY,OAAO,CACnDF,aAAa,EACb,IAAI,CAAC7D,WAAW,CAAC6C,iBAAiB,CAACgB,aAAa,CAAC,EACjDF,IACF,CAAC;IAED,IAAI,CAACG,eAAe,EAAE;MACpB,MAAM,IAAIF,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACA,OAAO;MACLI,IAAI,EAAE,EAAE;MAAE;MACVC,OAAO,EAAEH,eAAe,CAACG,OAAO;MAChCC,EAAE,EAAEJ,eAAe,CAACI,EAAE;MACtBC,QAAQ,EAAEL,eAAe,CAACK;IAC5B,CAAC;EACH;EAEA,MAAMC,mBAAmBA,CACvBH,OAAmB,EACnBC,EAAc,EACdG,mBAA2B,EAC3BF,QAAgB,EAC6B;IAC7C,IAAIG,MAAM,GAAG;MACXL,OAAO;MACPC,EAAE;MACFC;IACF,CAA8B;IAE9B,IAAIhB,iBAAiB,GAAG,MAAM,IAAI,CAACD,oBAAoB,CAAC,CAAC;IACzD,IAAIqB,aAAa,GAAG,MAAMpB,iBAAiB,CAACqB,OAAO,CACjDH,mBAAmB,EACnBC,MACF,CAAC;IAED,IAAI,CAACC,aAAa,EAAE;MAClB,MAAM,IAAIX,KAAK,CAAC,8BAA8B,CAAC;IACjD;IAEA,OAAO;MACLI,IAAI,EAAE,EAAE;MAAE;MACVC,OAAO,EAAEM;IACX,CAAC;EACH;;EAEA;EACA;;EAEQlD,gBAAgBA,CAACoD,OAAe,EAA+B;IACrE,OAAO,IAAI,CAAClD,aAAa,CAACmD,GAAG,CAACD,OAAO,CAAC;EACxC;EAEQjC,2BAA2BA,CACjCE,MAAoB,EACpBmB,aAAqB,EACJ;IACjB,OAAOrE,sBAAsB,CAACmF,8BAA8B,CAC1Dd,aAAa,EACbnB,MAAM,EACN,IAAI,CAACc,SAAS,EACd,IAAI,CAACxD,WAAW,CAACyD,cACnB,CAAC;EACH;EAEQX,6BAA6BA,CACnCC,QAAwB,EACxBc,aAAqB,EACJ;IACjB,OAAOrE,sBAAsB,CAACoF,gCAAgC,CAC5Df,aAAa,EACbd,QAAQ,EACR,IAAI,CAACS,SAAS,EACd,IAAI,CAACxD,WAAW,CAACyD,cACnB,CAAC;EACH;EAEAoB,WAAWA,CAACC,OAAkB,EAAQ;IACpC;EAAA;EAEF1C,4BAA4BA,CAC1B2C,OAAgB,EAChBV,mBAA2B,EACrB;IAAA,IAAAW,UAAA;IACN,IACE,IAAI,CAAC1E,iBAAiB,KAAKyE,OAAO,IAClCV,mBAAmB,OAAAW,UAAA,GAAK,IAAI,CAACpE,IAAI,cAAAoE,UAAA,uBAATA,UAAA,CAAWlE,gBAAgB,CAACwB,QAAQ,GAC5D;MACA,IAAI,CAAChC,iBAAiB,GAAGyE,OAAO;MAChC,IAAI,CAACE,IAAI,CACPtF,eAAe,CAACuF,kCAAkC,EAClDH,OAAO,EACP,IAAI,CAACnE,IAAI,CAAEE,gBACb,CAAC;IACH,CAAC,MAAM;MAAA,IAAAqE,WAAA;MACL,MAAMrD,WAAW,IAAAqD,WAAA,GACf,IAAI,CAACvE,IAAI,cAAAuE,WAAA,uBAATA,WAAA,CAAWC,wBAAwB,CAACf,mBAAmB,CAAC;MAC1D,IAAI,CAACvC,WAAW,EAAE;QAChB,MAAMK,SAAS,CACb,yDAAyDkC,mBAAmB,EAC9E,CAAC;MACH;MACA,IAAI,CAACY,IAAI,CACPtF,eAAe,CAACuF,kCAAkC,EAClDH,OAAO,EACPjD,WACF,CAAC;IACH;EACF;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["RTCDataPacketCryptorFactory","RTCFrameCryptorAlgorithm","RTCFrameCryptorFactory","ParticipantEvent","RoomEvent","EncryptionEvent","Mutex","EventEmitter","RNE2EEManager","frameCryptors","Map","algorithm","kAesGcm","encryptionEnabled","dataChannelEncryptionEnabled","dataPacketCryptorLock","dataPacketCryptor","undefined","constructor","keyProvider","dcEncryptionEnabled","isEnabled","isDataChannelEncryptionEnabled","value","setup","room","setupEventListeners","localParticipant","on","LocalTrackPublished","publication","setupE2EESender","LocalTrackUnpublished","frameCryptor","findTrackCryptor","trackSid","delete","setEnabled","dispose","TrackSubscribed","_track","pub","participant","setupE2EEReceiver","TrackUnsubscribed","_participant","SignalConnected","TypeError","setParticipantCryptorEnabled","isE2EEEnabled","identity","isEncrypted","createFrameCryptorForSender","track","sender","set","setKeyIndex","getLatestKeyIndex","createFrameCryptorForReceiver","receiver","setSifTrailer","trailer","getDataPacketCryptor","unlock","lock","createDataPacketCryptor","rtcKeyProvider","encryptData","data","Error","participantId","encryptedPacket","encrypt","uuid","payload","iv","keyIndex","handleEncryptedData","participantIdentity","packet","decryptedData","decrypt","trackId","get","createFrameCryptorForRtpSender","createFrameCryptorForRtpReceiver","setupEngine","_engine","enabled","emit","ParticipantEncryptionStatusChanged","getParticipantByIdentity"],"sourceRoot":"../../../src","sources":["e2ee/RNE2EEManager.ts"],"mappings":";;AAAA,SAEEA,2BAA2B,EAC3BC,wBAAwB,EACxBC,sBAAsB,QAKjB,8BAA8B;AACrC,SAGEC,gBAAgB,EAGhBC,SAAS,EAITC,eAAe,EAGfC,KAAK,QACA,gBAAgB;AAGvB,OAAOC,YAAY,MAAM,QAAQ;AAGjC;AACA;AACA;AACA,eAAe,MAAMC,aAAa,SACvBD,YAAY,CAEvB;EAEUE,aAAa,GAAiC,IAAIC,GAAG,CAAC,CAAC;EAEvDC,SAAS,GACfV,wBAAwB,CAACW,OAAO;EAE1BC,iBAAiB,GAAY,KAAK;EAClCC,4BAA4B,GAAY,KAAK;EAE7CC,qBAAqB,GAAG,IAAIT,KAAK,CAAC,CAAC;EACnCU,iBAAiB,GAAqCC,SAAS;EACvEC,WAAWA,CACTC,WAA0B,EAC1BC,mBAA4B,GAAG,KAAK,EACpC;IACA,KAAK,CAAC,CAAC;IACP,IAAI,CAACD,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACN,iBAAiB,GAAG,KAAK;IAC9B,IAAI,CAACC,4BAA4B,GAAGM,mBAAmB;EACzD;EAEA,IAAIC,SAASA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACR,iBAAiB;EAC/B;EACA,IAAIS,8BAA8BA,CAAA,EAAY;IAC5C,OAAO,IAAI,CAACD,SAAS,IAAI,IAAI,CAACP,4BAA4B;EAC5D;EACA,IAAIQ,8BAA8BA,CAACC,KAAc,EAAE;IACjD,IAAI,CAACT,4BAA4B,GAAGS,KAAK;EAC3C;EAEAC,KAAKA,CAACC,IAAU,EAAE;IAChB,IAAI,IAAI,CAACA,IAAI,KAAKA,IAAI,EAAE;MACtB,IAAI,CAACA,IAAI,GAAGA,IAAI;MAChB,IAAI,CAACC,mBAAmB,CAACD,IAAI,CAAC;IAChC;EACF;EAEQC,mBAAmBA,CAACD,IAAU,EAAE;IACtCA,IAAI,CAACE,gBAAgB,CAClBC,EAAE,CAACzB,gBAAgB,CAAC0B,mBAAmB,EAAE,MAAOC,WAAW,IAAK;MAC/D,IAAI,CAACC,eAAe,CAACD,WAAW,EAAEL,IAAI,CAACE,gBAAgB,CAAC;IAC1D,CAAC,CAAC,CACDC,EAAE,CAACzB,gBAAgB,CAAC6B,qBAAqB,EAAE,MAAOF,WAAW,IAAK;MACjE,IAAIG,YAAY,GAAG,IAAI,CAACC,gBAAgB,CAACJ,WAAW,CAACK,QAAQ,CAAC;MAC9D,IAAIF,YAAY,EAAE;QAChB,IAAI,CAACxB,aAAa,CAAC2B,MAAM,CAACN,WAAW,CAACK,QAAQ,CAAC;QAC/C,MAAMF,YAAY,CAACI,UAAU,CAAC,KAAK,CAAC;QACpC,MAAMJ,YAAY,CAACK,OAAO,CAAC,CAAC;MAC9B;IACF,CAAC,CAAC;IAEJb,IAAI,CACDG,EAAE,CAACxB,SAAS,CAACmC,eAAe,EAAE,CAACC,MAAM,EAAEC,GAAG,EAAEC,WAAW,KAAK;MAC3D,IAAI,CAACC,iBAAiB,CAACF,GAAG,EAAEC,WAAW,CAAC;IAC1C,CAAC,CAAC,CACDd,EAAE,CACDxB,SAAS,CAACwC,iBAAiB,EAC3B,OAAOJ,MAAM,EAAEV,WAAW,EAAEe,YAAY,KAAK;MAC3C,IAAIZ,YAAY,GAAG,IAAI,CAACC,gBAAgB,CAACJ,WAAW,CAACK,QAAQ,CAAC;MAC9D,IAAIF,YAAY,EAAE;QAChB,IAAI,CAACxB,aAAa,CAAC2B,MAAM,CAACN,WAAW,CAACK,QAAQ,CAAC;QAC/C,MAAMF,YAAY,CAACI,UAAU,CAAC,KAAK,CAAC;QACpC,MAAMJ,YAAY,CAACK,OAAO,CAAC,CAAC;MAC9B;IACF,CACF,CAAC,CACAV,EAAE,CAACxB,SAAS,CAAC0C,eAAe,EAAE,MAAM;MACnC,IAAI,CAAC,IAAI,CAACrB,IAAI,EAAE;QACd,MAAM,IAAIsB,SAAS,CAAC,+CAA+C,CAAC;MACtE;MACA,IAAI,CAACC,4BAA4B,CAC/B,IAAI,CAACvB,IAAI,CAACE,gBAAgB,CAACsB,aAAa,EACxC,IAAI,CAACxB,IAAI,CAACE,gBAAgB,CAACuB,QAC7B,CAAC;IACH,CAAC,CAAC;EACN;EAEA,MAAcnB,eAAeA,CAC3BD,WAAkC,EAClCY,WAA6B,EAC7B;IACA,IAAI,CAACZ,WAAW,CAACqB,WAAW,EAAE;MAC5B;IACF;IAEA,IAAIlB,YAAY,GAAG,IAAI,CAACC,gBAAgB,CAACJ,WAAW,CAACK,QAAQ,CAAC;IAE9D,IAAI,CAACF,YAAY,EAAE;MACjBA,YAAY,GAAG,IAAI,CAACmB,2BAA2B,CAC7CtB,WAAW,CAACuB,KAAK,CAAEC,MAAM,EACzBZ,WAAW,CAACQ,QACd,CAAC;MAED,IAAI,CAACzC,aAAa,CAAC8C,GAAG,CAACzB,WAAW,CAACK,QAAQ,EAAEF,YAAY,CAAC;MAC1DA,YAAY,CAACI,UAAU,CAAC,IAAI,CAAC;MAC7BJ,YAAY,CAACuB,WAAW,CACtB,IAAI,CAACrC,WAAW,CAACsC,iBAAiB,CAACf,WAAW,CAACQ,QAAQ,CACzD,CAAC;IACH;EACF;EAEA,MAAcP,iBAAiBA,CAC7Bb,WAAmC,EACnCY,WAA8B,EAC9B;IACA,IAAI,CAACZ,WAAW,CAACqB,WAAW,EAAE;MAC5B;IACF;IAEA,IAAIlB,YAAY,GAAG,IAAI,CAACC,gBAAgB,CAACJ,WAAW,CAACK,QAAQ,CAAC;IAE9D,IAAI,CAACF,YAAY,EAAE;MACjBA,YAAY,GAAG,IAAI,CAACyB,6BAA6B,CAC/C5B,WAAW,CAACuB,KAAK,CAAEM,QAAQ,EAC3BjB,WAAW,CAACQ,QACd,CAAC;MAED,IAAI,CAACzC,aAAa,CAAC8C,GAAG,CAACzB,WAAW,CAACK,QAAQ,EAAEF,YAAY,CAAC;MAC1DA,YAAY,CAACI,UAAU,CAAC,IAAI,CAAC;MAC7BJ,YAAY,CAACuB,WAAW,CACtB,IAAI,CAACrC,WAAW,CAACsC,iBAAiB,CAACf,WAAW,CAACQ,QAAQ,CACzD,CAAC;IACH;EACF;EAEAU,aAAaA,CAACC,OAAmB,EAAQ;IACvC,IAAI,CAAC1C,WAAW,CAACyC,aAAa,CAACC,OAAO,CAAC;EACzC;EAEA,MAAcC,oBAAoBA,CAAA,EAAkC;IAClE,IAAI9C,iBAAiB,GAAG,IAAI,CAACA,iBAAiB;IAC9C,IAAIA,iBAAiB,EAAE;MACrB,OAAOA,iBAAiB;IAC1B;IAEA,IAAI+C,MAAM,GAAG,MAAM,IAAI,CAAChD,qBAAqB,CAACiD,IAAI,CAAC,CAAC;IAEpD,IAAI;MACFhD,iBAAiB,GAAG,IAAI,CAACA,iBAAiB;MAC1C,IAAIA,iBAAiB,EAAE;QACrB,OAAOA,iBAAiB;MAC1B;MAEAA,iBAAiB,GACf,MAAMhB,2BAA2B,CAACiE,uBAAuB,CACvD,IAAI,CAACtD,SAAS,EACd,IAAI,CAACQ,WAAW,CAAC+C,cACnB,CAAC;MAEH,IAAI,CAAClD,iBAAiB,GAAGA,iBAAiB;MAC1C,OAAOA,iBAAiB;IAC1B,CAAC,SAAS;MACR+C,MAAM,CAAC,CAAC;IACV;EACF;EACA,MAAMI,WAAWA,CACfC,IAAgB,EAC6B;IAC7C,IAAI3C,IAAI,GAAG,IAAI,CAACA,IAAI;IACpB,IAAI,CAACA,IAAI,EAAE;MACT,MAAM,IAAI4C,KAAK,CAAC,oCAAoC,CAAC;IACvD;IAEA,IAAIC,aAAa,GAAG7C,IAAI,CAACE,gBAAgB,CAACuB,QAAQ;IAElD,IAAIlC,iBAAiB,GAAG,MAAM,IAAI,CAAC8C,oBAAoB,CAAC,CAAC;IAEzD,IAAIS,eAAe,GAAG,MAAMvD,iBAAiB,CAACwD,OAAO,CACnDF,aAAa,EACb,IAAI,CAACnD,WAAW,CAACsC,iBAAiB,CAACa,aAAa,CAAC,EACjDF,IACF,CAAC;IAED,IAAI,CAACG,eAAe,EAAE;MACpB,MAAM,IAAIF,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACA,OAAO;MACLI,IAAI,EAAE,EAAE;MAAE;MACVC,OAAO,EAAEH,eAAe,CAACG,OAAO;MAChCC,EAAE,EAAEJ,eAAe,CAACI,EAAE;MACtBC,QAAQ,EAAEL,eAAe,CAACK;IAC5B,CAAC;EACH;EAEA,MAAMC,mBAAmBA,CACvBH,OAAmB,EACnBC,EAAc,EACdG,mBAA2B,EAC3BF,QAAgB,EAC6B;IAC7C,IAAIG,MAAM,GAAG;MACXL,OAAO;MACPC,EAAE;MACFC;IACF,CAA8B;IAE9B,IAAI5D,iBAAiB,GAAG,MAAM,IAAI,CAAC8C,oBAAoB,CAAC,CAAC;IACzD,IAAIkB,aAAa,GAAG,MAAMhE,iBAAiB,CAACiE,OAAO,CACjDH,mBAAmB,EACnBC,MACF,CAAC;IAED,IAAI,CAACC,aAAa,EAAE;MAClB,MAAM,IAAIX,KAAK,CAAC,8BAA8B,CAAC;IACjD;IAEA,OAAO;MACLI,IAAI,EAAE,EAAE;MAAE;MACVC,OAAO,EAAEM;IACX,CAAC;EACH;;EAEA;EACA;;EAEQ9C,gBAAgBA,CAACgD,OAAe,EAA+B;IACrE,OAAO,IAAI,CAACzE,aAAa,CAAC0E,GAAG,CAACD,OAAO,CAAC;EACxC;EAEQ9B,2BAA2BA,CACjCE,MAAoB,EACpBgB,aAAqB,EACJ;IACjB,OAAOpE,sBAAsB,CAACkF,8BAA8B,CAC1Dd,aAAa,EACbhB,MAAM,EACN,IAAI,CAAC3C,SAAS,EACd,IAAI,CAACQ,WAAW,CAAC+C,cACnB,CAAC;EACH;EAEQR,6BAA6BA,CACnCC,QAAwB,EACxBW,aAAqB,EACJ;IACjB,OAAOpE,sBAAsB,CAACmF,gCAAgC,CAC5Df,aAAa,EACbX,QAAQ,EACR,IAAI,CAAChD,SAAS,EACd,IAAI,CAACQ,WAAW,CAAC+C,cACnB,CAAC;EACH;EAEAoB,WAAWA,CAACC,OAAkB,EAAQ;IACpC;EAAA;EAEFvC,4BAA4BA,CAC1BwC,OAAgB,EAChBV,mBAA2B,EACrB;IACN,IACE,IAAI,CAACjE,iBAAiB,KAAK2E,OAAO,IAClCV,mBAAmB,KAAK,IAAI,CAACrD,IAAI,EAAEE,gBAAgB,CAACuB,QAAQ,EAC5D;MACA,IAAI,CAACrC,iBAAiB,GAAG2E,OAAO;MAChC,IAAI,CAACC,IAAI,CACPpF,eAAe,CAACqF,kCAAkC,EAClDF,OAAO,EACP,IAAI,CAAC/D,IAAI,CAAEE,gBACb,CAAC;IACH,CAAC,MAAM;MACL,MAAMe,WAAW,GACf,IAAI,CAACjB,IAAI,EAAEkE,wBAAwB,CAACb,mBAAmB,CAAC;MAC1D,IAAI,CAACpC,WAAW,EAAE;QAChB,MAAMK,SAAS,CACb,yDAAyD+B,mBAAmB,EAC9E,CAAC;MACH;MACA,IAAI,CAACW,IAAI,CACPpF,eAAe,CAACqF,kCAAkC,EAClDF,OAAO,EACP9C,WACF,CAAC;IACH;EACF;AACF","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
4
3
|
import { BaseKeyProvider } from 'livekit-client';
|
|
5
4
|
import { RTCFrameCryptorFactory } from '@livekit/react-native-webrtc';
|
|
6
5
|
const defaultRatchetSalt = 'LKFrameEncryptionKey';
|
|
@@ -18,6 +17,7 @@ const defaultDiscardFrameWhenCryptorNotReady = false;
|
|
|
18
17
|
* @experimental
|
|
19
18
|
*/
|
|
20
19
|
export default class RNKeyProvider extends BaseKeyProvider {
|
|
20
|
+
latestSetIndex = new Map();
|
|
21
21
|
constructor(options) {
|
|
22
22
|
const opts = {
|
|
23
23
|
sharedKey: options.sharedKey ?? true,
|
|
@@ -34,8 +34,6 @@ export default class RNKeyProvider extends BaseKeyProvider {
|
|
|
34
34
|
}
|
|
35
35
|
opts.uncryptedMagicBytes = magicBytes;
|
|
36
36
|
super(opts);
|
|
37
|
-
_defineProperty(this, "latestSetIndex", new Map());
|
|
38
|
-
_defineProperty(this, "nativeKeyProvider", void 0);
|
|
39
37
|
this.nativeKeyProvider = RTCFrameCryptorFactory.createDefaultKeyProvider(opts);
|
|
40
38
|
}
|
|
41
39
|
getLatestKeyIndex(participantId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BaseKeyProvider","RTCFrameCryptorFactory","defaultRatchetSalt","defaultMagicBytes","defaultRatchetWindowSize","defaultFailureTolerance","defaultKeyRingSize","defaultDiscardFrameWhenCryptorNotReady","RNKeyProvider","constructor","options","opts","sharedKey","ratchetSalt","ratchetWindowSize","failureTolerance","keyRingSize","keyringSize","discardFrameWhenCryptorNotReady","magicBytes","uncryptedMagicBytes","TextEncoder","encode","
|
|
1
|
+
{"version":3,"names":["BaseKeyProvider","RTCFrameCryptorFactory","defaultRatchetSalt","defaultMagicBytes","defaultRatchetWindowSize","defaultFailureTolerance","defaultKeyRingSize","defaultDiscardFrameWhenCryptorNotReady","RNKeyProvider","latestSetIndex","Map","constructor","options","opts","sharedKey","ratchetSalt","ratchetWindowSize","failureTolerance","keyRingSize","keyringSize","discardFrameWhenCryptorNotReady","magicBytes","uncryptedMagicBytes","TextEncoder","encode","nativeKeyProvider","createDefaultKeyProvider","getLatestKeyIndex","participantId","get","setSharedKey","key","keyIndex","ratchetSharedKey","setKey","getOptions","set","ratchetKey","participantIdentity","setSifTrailer","trailer","rtcKeyProvider","dispose"],"sourceRoot":"../../../src","sources":["e2ee/RNKeyProvider.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
1
3
|
import { NativeEventEmitter } from 'react-native';
|
|
2
4
|
// @ts-ignore
|
|
3
5
|
import EventEmitter from 'react-native/Libraries/vendor/emitter/EventEmitter';
|
|
@@ -17,18 +19,16 @@ export function setupNativeEvents() {
|
|
|
17
19
|
}
|
|
18
20
|
const _subscriptions = new Map();
|
|
19
21
|
export function addListener(listener, eventName, eventHandler) {
|
|
20
|
-
var _subscriptions$get;
|
|
21
22
|
if (!NATIVE_EVENTS.includes(eventName)) {
|
|
22
23
|
throw new Error(`Invalid event: ${eventName}`);
|
|
23
24
|
}
|
|
24
25
|
if (!_subscriptions.has(listener)) {
|
|
25
26
|
_subscriptions.set(listener, []);
|
|
26
27
|
}
|
|
27
|
-
|
|
28
|
+
_subscriptions.get(listener)?.push(eventEmitter.addListener(eventName, eventHandler));
|
|
28
29
|
}
|
|
29
30
|
export function removeListener(listener) {
|
|
30
|
-
|
|
31
|
-
(_subscriptions$get2 = _subscriptions.get(listener)) === null || _subscriptions$get2 === void 0 || _subscriptions$get2.forEach(sub => {
|
|
31
|
+
_subscriptions.get(listener)?.forEach(sub => {
|
|
32
32
|
sub.remove();
|
|
33
33
|
});
|
|
34
34
|
_subscriptions.delete(listener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","EventEmitter","LiveKitModule","nativeEmitter","NATIVE_EVENTS","eventEmitter","setupNativeEvents","eventName","addListener","args","emit","_subscriptions","Map","listener","eventHandler","
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","EventEmitter","LiveKitModule","nativeEmitter","NATIVE_EVENTS","eventEmitter","setupNativeEvents","eventName","addListener","args","emit","_subscriptions","Map","listener","eventHandler","includes","Error","has","set","get","push","removeListener","forEach","sub","remove","delete"],"sourceRoot":"../../../src","sources":["events/EventEmitter.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAkC,cAAc;AAC3E;AACA,OAAOC,YAAY,MAAM,oDAAoD;AAC7E,OAAOC,aAAa,MAAM,mBAAmB;;AAE7C;AACA;AACA,MAAMC,aAAa,GAAG,IAAIH,kBAAkB,CAACE,aAAa,CAAC;AAE3D,MAAME,aAAa,GAAG,CACpB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,CAChB;AAED,MAAMC,YAAY,GAAG,IAAIJ,YAAY,CAAC,CAAC;AAEvC,OAAO,SAASK,iBAAiBA,CAAA,EAAG;EAClC,KAAK,MAAMC,SAAS,IAAIH,aAAa,EAAE;IACrCD,aAAa,CAACK,WAAW,CAACD,SAAS,EAAE,CAAC,GAAGE,IAAI,KAAK;MAChDJ,YAAY,CAACK,IAAI,CAACH,SAAS,EAAE,GAAGE,IAAI,CAAC;IACvC,CAAC,CAAC;EACJ;AACF;AAKA,MAAME,cAAoD,GAAG,IAAIC,GAAG,CAAC,CAAC;AAEtE,OAAO,SAASJ,WAAWA,CACzBK,QAAkB,EAClBN,SAAiB,EACjBO,YAA0B,EACpB;EACN,IAAI,CAACV,aAAa,CAACW,QAAQ,CAACR,SAAS,CAAC,EAAE;IACtC,MAAM,IAAIS,KAAK,CAAC,kBAAkBT,SAAS,EAAE,CAAC;EAChD;EAEA,IAAI,CAACI,cAAc,CAACM,GAAG,CAACJ,QAAQ,CAAC,EAAE;IACjCF,cAAc,CAACO,GAAG,CAACL,QAAQ,EAAE,EAAE,CAAC;EAClC;EAEAF,cAAc,CACXQ,GAAG,CAACN,QAAQ,CAAC,EACZO,IAAI,CAACf,YAAY,CAACG,WAAW,CAACD,SAAS,EAAEO,YAAY,CAAC,CAAC;AAC7D;AAEA,OAAO,SAASO,cAAcA,CAACR,QAAkB,EAAQ;EACvDF,cAAc,CAACQ,GAAG,CAACN,QAAQ,CAAC,EAAES,OAAO,CAAEC,GAAG,IAAK;IAC7CA,GAAG,CAACC,MAAM,CAAC,CAAC;EACd,CAAC,CAAC;EAEFb,cAAc,CAACc,MAAM,CAACZ,QAAQ,CAAC;AACjC","ignoreList":[]}
|