From 3feb76990487a70bf76f8f54df1ef785d0749f5c Mon Sep 17 00:00:00 2001 From: Manik Date: Thu, 19 Apr 2018 15:04:23 -0700 Subject: [PATCH] #32 --- README.md | 1 + .../java/com/opentokreactnative/OTSessionManager.java | 8 ++++++++ ios/OTSessionManager.m | 2 ++ ios/OTSessionManager.swift | 3 +++ src/OTPublisher.js | 7 ++++++- 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c5e9edb9..d4d9e6a1 100644 --- a/README.md +++ b/README.md @@ -232,6 +232,7 @@ The `properties` prop is used for initial set up of the Publisher and making cha | Publisher Property | Action | | --- | --- | +| cameraPosition | Calls OT.changeCameraPosition() to toggle the camera | | publishAudio | Calls OT.publishAudio() to toggle audio on and off | | publishVideo | Calls OT.publishVideo() to toggle video on and off | diff --git a/android/src/main/java/com/opentokreactnative/OTSessionManager.java b/android/src/main/java/com/opentokreactnative/OTSessionManager.java index 2509ef7c..109bbc60 100644 --- a/android/src/main/java/com/opentokreactnative/OTSessionManager.java +++ b/android/src/main/java/com/opentokreactnative/OTSessionManager.java @@ -195,6 +195,14 @@ public void publishVideo(Boolean publishVideo) { mPublisher.setPublishVideo(publishVideo); } + @ReactMethod + public void changeCameraPosition(String cameraPosition) { + + Publisher mPublisher = sharedState.getPublisher(); + mPublisher.cycleCamera(); + Log.i(TAG, "Changing camera to " + cameraPosition); + } + @ReactMethod public void setNativeEvents(ReadableArray events) { diff --git a/ios/OTSessionManager.m b/ios/OTSessionManager.m index a070a067..1a8bdc62 100644 --- a/ios/OTSessionManager.m +++ b/ios/OTSessionManager.m @@ -36,6 +36,8 @@ @interface RCT_EXTERN_MODULE(OTSessionManager, RCTEventEmitter) (BOOL)pubAudio) RCT_EXTERN_METHOD(publishVideo: (BOOL)pubVideo) +RCT_EXTERN_METHOD(changeCameraPosition: + (NSString*)cameraPosition) RCT_EXTERN_METHOD(setNativeEvents: (NSArray*)events) RCT_EXTERN_METHOD(removeNativeEvents: diff --git a/ios/OTSessionManager.swift b/ios/OTSessionManager.swift index 336592e3..243c177a 100644 --- a/ios/OTSessionManager.swift +++ b/ios/OTSessionManager.swift @@ -121,6 +121,9 @@ class OTSessionManager: RCTEventEmitter { OTRN.sharedState.publisher?.publishVideo = pubVideo; } + @objc func changeCameraPosition(_ cameraPosition: String) -> Void { + OTRN.sharedState.publisher?.cameraPosition = cameraPosition == "front" ? .front : .back; + } @objc func setNativeEvents(_ events: Array) -> Void { for event in events { diff --git a/src/OTPublisher.js b/src/OTPublisher.js index 0f9339e1..5f43234a 100644 --- a/src/OTPublisher.js +++ b/src/OTPublisher.js @@ -37,12 +37,17 @@ class OTPublisher extends Component { const updatePublisherProperty = (key, defaultValue) => { if (shouldUpdate(key, defaultValue)) { const value = useDefault(this.props.properties[key], defaultValue); - OT[key](value); + if (key === 'cameraPosition') { + OT.changeCameraPosition(value); + } else { + OT[key](value); + } } }; updatePublisherProperty('publishAudio', true); updatePublisherProperty('publishVideo', true); + updatePublisherProperty('cameraPosition', 'front'); } componentWillUnmount() { OT.destroyPublisher((error) => {