From 3d1f0886749c4d7ed482d09f72d808edf679ecf1 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Wed, 18 Jul 2018 21:55:08 +0200 Subject: [PATCH] Fix #243 Signed-off-by: Mario Danic --- .../talk/controllers/CallController.java | 61 +++++++++++-------- .../talk/controllers/ChatController.java | 46 +++++++------- 2 files changed, 61 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index cc28da39e..4fe652f57 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -221,7 +221,9 @@ public class CallController extends BaseController { private boolean isMultiSession = false; private boolean hasChatSupport = false; - private boolean isVoiceOnlyCall = false; + private boolean needsPing = true; + + private boolean isVoiceOnlyCall; private boolean isFromNotification; private Handler handler = new Handler(); @@ -946,6 +948,15 @@ public class CallController extends BaseController { .getCapabilities().getSpreedCapability() .getFeatures().contains("chat-v2"); + needsPing = !(capabilitiesOverall.getOcs().getData() + .getCapabilities() != null && capabilitiesOverall.getOcs().getData() + .getCapabilities().getSpreedCapability() != null && + capabilitiesOverall.getOcs().getData() + .getCapabilities().getSpreedCapability() + .getFeatures() != null && capabilitiesOverall.getOcs().getData() + .getCapabilities().getSpreedCapability() + .getFeatures().contains("no-ping")); + joinRoomAndCall(); } @@ -1026,33 +1037,35 @@ public class CallController extends BaseController { ApplicationWideCurrentRoomHolder.getInstance().setInCall(true); ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(userEntity); - ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken)) - .subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) - .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) - .takeWhile(observable -> inCall) - .retry(3, observable -> inCall) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - pingDisposable = d; - } + if (needsPing) { + ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken)) + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) + .takeWhile(observable -> inCall) + .retry(3, observable -> inCall) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + pingDisposable = d; + } - @Override - public void onNext(GenericOverall genericOverall) { + @Override + public void onNext(GenericOverall genericOverall) { - } + } - @Override - public void onError(Throwable e) { - dispose(pingDisposable); - } + @Override + public void onError(Throwable e) { + dispose(pingDisposable); + } - @Override - public void onComplete() { - dispose(pingDisposable); - } - }); + @Override + public void onComplete() { + dispose(pingDisposable); + } + }); + } // Start pulling signaling messages String urlToken = null; diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java index 724998864..4b210ae9f 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java @@ -214,6 +214,7 @@ public class ChatController extends BaseController implements MessagesListAdapte if (args.containsKey(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL)) { this.startCallFromNotification = args.getBoolean(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL); } + this.voiceOnly = args.getBoolean(BundleKeys.KEY_CALL_VOICE_ONLY, false); } @@ -473,32 +474,33 @@ public class ChatController extends BaseController implements MessagesListAdapte } private void startPing() { - ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken)) - .subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) - .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) - .takeWhile(observable -> inChat) - .retry(3, observable -> inChat) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - disposableList.add(d); - } + if (!conversationUser.hasSpreedCapabilityWithName("no-ping")) { + ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken)) + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) + .takeWhile(observable -> inChat) + .retry(3, observable -> inChat) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + disposableList.add(d); + } - @Override - public void onNext(GenericOverall genericOverall) { + @Override + public void onNext(GenericOverall genericOverall) { - } + } - @Override - public void onError(Throwable e) { - } - - @Override - public void onComplete() { - } - }); + @Override + public void onError(Throwable e) { + } + @Override + public void onComplete() { + } + }); + } } @OnClick(R.id.emptyLayout)