Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2018-07-18 21:55:08 +02:00
parent bd15829b6a
commit 3d1f088674
2 changed files with 61 additions and 46 deletions

View File

@ -221,7 +221,9 @@ public class CallController extends BaseController {
private boolean isMultiSession = false; private boolean isMultiSession = false;
private boolean hasChatSupport = false; private boolean hasChatSupport = false;
private boolean isVoiceOnlyCall = false; private boolean needsPing = true;
private boolean isVoiceOnlyCall;
private boolean isFromNotification; private boolean isFromNotification;
private Handler handler = new Handler(); private Handler handler = new Handler();
@ -946,6 +948,15 @@ public class CallController extends BaseController {
.getCapabilities().getSpreedCapability() .getCapabilities().getSpreedCapability()
.getFeatures().contains("chat-v2"); .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(); joinRoomAndCall();
} }
@ -1026,33 +1037,35 @@ public class CallController extends BaseController {
ApplicationWideCurrentRoomHolder.getInstance().setInCall(true); ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(userEntity); ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(userEntity);
ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken)) if (needsPing) {
.subscribeOn(Schedulers.newThread()) ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken))
.observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.newThread())
.repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) .observeOn(AndroidSchedulers.mainThread())
.takeWhile(observable -> inCall) .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS))
.retry(3, observable -> inCall) .takeWhile(observable -> inCall)
.subscribe(new Observer<GenericOverall>() { .retry(3, observable -> inCall)
@Override .subscribe(new Observer<GenericOverall>() {
public void onSubscribe(Disposable d) { @Override
pingDisposable = d; public void onSubscribe(Disposable d) {
} pingDisposable = d;
}
@Override @Override
public void onNext(GenericOverall genericOverall) { public void onNext(GenericOverall genericOverall) {
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
dispose(pingDisposable); dispose(pingDisposable);
} }
@Override @Override
public void onComplete() { public void onComplete() {
dispose(pingDisposable); dispose(pingDisposable);
} }
}); });
}
// Start pulling signaling messages // Start pulling signaling messages
String urlToken = null; String urlToken = null;

View File

@ -214,6 +214,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
if (args.containsKey(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL)) { if (args.containsKey(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL)) {
this.startCallFromNotification = args.getBoolean(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); this.voiceOnly = args.getBoolean(BundleKeys.KEY_CALL_VOICE_ONLY, false);
} }
@ -473,32 +474,33 @@ public class ChatController extends BaseController implements MessagesListAdapte
} }
private void startPing() { private void startPing() {
ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken)) if (!conversationUser.hasSpreedCapabilityWithName("no-ping")) {
.subscribeOn(Schedulers.newThread()) ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken))
.observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.newThread())
.repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) .observeOn(AndroidSchedulers.mainThread())
.takeWhile(observable -> inChat) .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS))
.retry(3, observable -> inChat) .takeWhile(observable -> inChat)
.subscribe(new Observer<GenericOverall>() { .retry(3, observable -> inChat)
@Override .subscribe(new Observer<GenericOverall>() {
public void onSubscribe(Disposable d) { @Override
disposableList.add(d); public void onSubscribe(Disposable d) {
} disposableList.add(d);
}
@Override @Override
public void onNext(GenericOverall genericOverall) { public void onNext(GenericOverall genericOverall) {
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
} }
@Override
public void onComplete() {
}
});
@Override
public void onComplete() {
}
});
}
} }
@OnClick(R.id.emptyLayout) @OnClick(R.id.emptyLayout)