Add ICE negotiation

This commit is contained in:
Tiago Jacobs
2022-03-27 22:18:34 -03:00
parent 6fce1d61f3
commit 63fe888544
11 changed files with 224 additions and 14 deletions

View File

@@ -0,0 +1,17 @@
import type { MutableRefObject } from 'react';
import nativeEmitter from '../native-messaging/emitter';
export function setupListener(_webViewRef: MutableRefObject<any>) {
// Resolve promise when SDP offer is available
nativeEmitter.addListener(
'onScreenShareLocalIceCandidate',
(jsonEncodedIceCandidate) => {
const iceCandidate = JSON.parse(jsonEncodedIceCandidate);
_webViewRef.current.injectJavaScript(
`window.bbbMobileScreenShareIceCandidateCallback(${JSON.stringify(
iceCandidate
)});`
);
}
);
}

View File

@@ -0,0 +1,14 @@
import type { MutableRefObject } from 'react';
import nativeEmitter from '../native-messaging/emitter';
export function setupListener(_webViewRef: MutableRefObject<any>) {
// Resolve promise when SDP offer is available
nativeEmitter.addListener('onScreenShareSignalingStateChange', (newState) => {
console.log(`Temos um novo state: ${newState}`);
_webViewRef.current.injectJavaScript(
`window.bbbMobileScreenShareSignalingStateChangeCallback(${JSON.stringify(
newState
)});`
);
});
}

View File

@@ -1,8 +1,10 @@
import { Platform, ViewStyle } from 'react-native';
import React, { useRef } from 'react';
import React, { useEffect, useRef } from 'react';
import BBBN_SystemBroadcastPicker from './native-components/BBBN_SystemBroadcastPicker';
import { WebView } from 'react-native-webview';
import { handleWebviewMessage } from './webview/message-handler';
import * as onScreenShareLocalIceCandidate from './events/onScreenShareLocalIceCandidate';
import * as onScreenShareSignalingStateChange from './events/onScreenShareSignalingStateChange';
type BigbluebuttonMobileSdkProps = {
url: string;
@@ -21,6 +23,11 @@ export const BigbluebuttonMobile = ({
}: BigbluebuttonMobileSdkProps) => {
const webViewRef = useRef(null);
useEffect(() => {
onScreenShareLocalIceCandidate.setupListener(webViewRef);
onScreenShareSignalingStateChange.setupListener(webViewRef);
}, [webViewRef]);
return (
<>
{renderPlatformSpecificComponents()}