Add ICE negotiation
This commit is contained in:
17
src/events/onScreenShareLocalIceCandidate.tsx
Normal file
17
src/events/onScreenShareLocalIceCandidate.tsx
Normal 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
|
||||
)});`
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
14
src/events/onScreenShareSignalingStateChange.tsx
Normal file
14
src/events/onScreenShareSignalingStateChange.tsx
Normal 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
|
||||
)});`
|
||||
);
|
||||
});
|
||||
}
|
||||
@@ -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()}
|
||||
|
||||
Reference in New Issue
Block a user