|
@@ -76,6 +76,7 @@ import com.nextcloud.talk.models.json.signaling.Signaling;
|
|
|
import com.nextcloud.talk.models.json.signaling.SignalingOverall;
|
|
|
import com.nextcloud.talk.models.json.signaling.settings.IceServer;
|
|
|
import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall;
|
|
|
+import com.nextcloud.talk.models.json.websocket.HelloResponseWebSocketMessage;
|
|
|
import com.nextcloud.talk.utils.ApiUtils;
|
|
|
import com.nextcloud.talk.utils.MagicFlipView;
|
|
|
import com.nextcloud.talk.utils.NotificationUtils;
|
|
@@ -88,6 +89,8 @@ import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
|
|
|
import com.nextcloud.talk.webrtc.MagicAudioManager;
|
|
|
import com.nextcloud.talk.webrtc.MagicPeerConnectionWrapper;
|
|
|
import com.nextcloud.talk.webrtc.MagicWebRTCUtils;
|
|
|
+import com.nextcloud.talk.webrtc.ScarletHelper;
|
|
|
+import com.tinder.scarlet.WebSocket;
|
|
|
import com.wooplr.spotlight.SpotlightView;
|
|
|
|
|
|
import org.apache.commons.lang3.StringEscapeUtils;
|
|
@@ -95,6 +98,7 @@ import org.greenrobot.eventbus.EventBus;
|
|
|
import org.greenrobot.eventbus.Subscribe;
|
|
|
import org.greenrobot.eventbus.ThreadMode;
|
|
|
import org.parceler.Parcels;
|
|
|
+import org.reactivestreams.Subscription;
|
|
|
import org.webrtc.AudioSource;
|
|
|
import org.webrtc.AudioTrack;
|
|
|
import org.webrtc.Camera1Enumerator;
|
|
@@ -131,6 +135,7 @@ import butterknife.BindView;
|
|
|
import butterknife.OnClick;
|
|
|
import butterknife.OnLongClick;
|
|
|
import eu.davidea.flipview.FlipView;
|
|
|
+import io.reactivex.FlowableSubscriber;
|
|
|
import io.reactivex.Observer;
|
|
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
import io.reactivex.disposables.Disposable;
|
|
@@ -244,6 +249,8 @@ public class CallController extends BaseController {
|
|
|
private SpotlightView spotlightView;
|
|
|
|
|
|
private ExternalSignalingServer externalSignalingServer;
|
|
|
+ private ExternalSignaling externalSignaling;
|
|
|
+ private ScarletHelper scarletHelper;
|
|
|
|
|
|
public CallController(Bundle args) {
|
|
|
super(args);
|
|
@@ -911,6 +918,7 @@ public class CallController extends BaseController {
|
|
|
|
|
|
if (!TextUtils.isEmpty(signalingSettingsOverall.getOcs().getSettings().getExternalSignalingServer()) &&
|
|
|
!TextUtils.isEmpty(signalingSettingsOverall.getOcs().getSettings().getExternalSignalingTicket())) {
|
|
|
+ externalSignalingServer = new ExternalSignalingServer();
|
|
|
externalSignalingServer.setExternalSignalingServer(signalingSettingsOverall.getOcs().getSettings().getExternalSignalingServer());
|
|
|
externalSignalingServer.setExternalSignalingTicket(signalingSettingsOverall.getOcs().getSettings().getExternalSignalingTicket());
|
|
|
}
|
|
@@ -1150,7 +1158,7 @@ public class CallController extends BaseController {
|
|
|
|
|
|
|
|
|
} else {
|
|
|
-
|
|
|
+ setUpAndInitiateScarletConnection();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1165,6 +1173,57 @@ public class CallController extends BaseController {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ private void setUpAndInitiateScarletConnection() {
|
|
|
+ scarletHelper = new ScarletHelper();
|
|
|
+ externalSignaling = scarletHelper.getExternalSignalingInstanceForServer(
|
|
|
+ externalSignalingServer.getExternalSignalingServer(), false);
|
|
|
+
|
|
|
+ externalSignaling.observeOnHelloBackEvent().subscribe(new FlowableSubscriber<HelloResponseWebSocketMessage>() {
|
|
|
+ @Override
|
|
|
+ public void onSubscribe(Subscription s) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onNext(HelloResponseWebSocketMessage helloResponseWebSocketMessage) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onError(Throwable t) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onComplete() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ externalSignaling.observeOnConnectionOpenedEvent().subscribe(new FlowableSubscriber<WebSocket.Event.OnConnectionOpened>() {
|
|
|
+ @Override
|
|
|
+ public void onSubscribe(Subscription s) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onNext(WebSocket.Event.OnConnectionOpened onConnectionOpened) {
|
|
|
+ externalSignaling.sendHello(scarletHelper.getAssembledHelloModel(conversationUser,
|
|
|
+ externalSignalingServer.getExternalSignalingTicket()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onError(Throwable t) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onComplete() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
@OnClick({R.id.pip_video_view, R.id.remote_renderers_layout})
|
|
|
public void showCallControls() {
|
|
|
animateCallControls(true, 0);
|