Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2019-09-05 12:03:21 +02:00
parent 4697e4f340
commit 69c4435b1e

View File

@ -878,7 +878,9 @@ public class CallController extends BaseController {
@Override @Override
public void onDestroy() { public void onDestroy() {
onHangupClick(); if (!currentCallStatus.equals(CallStatus.LEAVING)) {
onHangupClick();
}
powerManagerUtils.updatePhoneState(PowerManagerUtils.PhoneState.IDLE); powerManagerUtils.updatePhoneState(PowerManagerUtils.PhoneState.IDLE);
super.onDestroy(); super.onDestroy();
} }
@ -1074,91 +1076,93 @@ public class CallController extends BaseController {
@Override @Override
public void onNext(GenericOverall genericOverall) { public void onNext(GenericOverall genericOverall) {
setCallState(CallStatus.ESTABLISHED); if (!currentCallStatus.equals(CallStatus.LEAVING)) {
setCallState(CallStatus.ESTABLISHED);
ApplicationWideCurrentRoomHolder.getInstance().setInCall(true); ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
if (needsPing) { if (needsPing) {
ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken)) ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS))
.takeWhile(observable -> isConnectionEstablished()) .takeWhile(observable -> isConnectionEstablished())
.retry(3, observable -> isConnectionEstablished()) .retry(3, observable -> isConnectionEstablished())
.subscribe(new Observer<GenericOverall>() { .subscribe(new Observer<GenericOverall>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
pingDisposable = 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;
if (isMultiSession) { if (isMultiSession) {
urlToken = roomToken; urlToken = roomToken;
} }
if (!conversationUser.hasSpreedFeatureCapability("no-ping") && !TextUtils.isEmpty(roomId)) { if (!conversationUser.hasSpreedFeatureCapability("no-ping") && !TextUtils.isEmpty(roomId)) {
NotificationUtils.cancelExistingNotificationsForRoom(getApplicationContext(), conversationUser, roomId); NotificationUtils.cancelExistingNotificationsForRoom(getApplicationContext(), conversationUser, roomId);
} else if (!TextUtils.isEmpty(roomToken)) { } else if (!TextUtils.isEmpty(roomToken)) {
NotificationUtils.cancelExistingNotificationsForRoom(getApplicationContext(), conversationUser, roomToken); NotificationUtils.cancelExistingNotificationsForRoom(getApplicationContext(), conversationUser, roomToken);
} }
if (!hasExternalSignalingServer) { if (!hasExternalSignalingServer) {
ncApi.pullSignalingMessages(credentials, ApiUtils.getUrlForSignaling(baseUrl, urlToken)) ncApi.pullSignalingMessages(credentials, ApiUtils.getUrlForSignaling(baseUrl, urlToken))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.repeatWhen(observable -> observable) .repeatWhen(observable -> observable)
.takeWhile(observable -> isConnectionEstablished()) .takeWhile(observable -> isConnectionEstablished())
.retry(3, observable -> isConnectionEstablished()) .retry(3, observable -> isConnectionEstablished())
.subscribe(new Observer<SignalingOverall>() { .subscribe(new Observer<SignalingOverall>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
signalingDisposable = d; signalingDisposable = d;
} }
@Override @Override
public void onNext(SignalingOverall signalingOverall) { public void onNext(SignalingOverall signalingOverall) {
if (signalingOverall.getOcs().getSignalings() != null) { if (signalingOverall.getOcs().getSignalings() != null) {
for (int i = 0; i < signalingOverall.getOcs().getSignalings().size(); i++) { for (int i = 0; i < signalingOverall.getOcs().getSignalings().size(); i++) {
try { try {
receivedSignalingMessage(signalingOverall.getOcs().getSignalings().get(i)); receivedSignalingMessage(signalingOverall.getOcs().getSignalings().get(i));
} catch (IOException e) { } catch (IOException e) {
Log.e(TAG, "Failed to process received signaling" + Log.e(TAG, "Failed to process received signaling" +
" message"); " message");
}
} }
} }
} }
}
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
dispose(signalingDisposable); dispose(signalingDisposable);
} }
@Override @Override
public void onComplete() { public void onComplete() {
dispose(signalingDisposable); dispose(signalingDisposable);
} }
}); });
}
} }
} }
@ -1331,6 +1335,7 @@ public class CallController extends BaseController {
private void hangup(boolean shutDownView) { private void hangup(boolean shutDownView) {
stopCallingSound(); stopCallingSound();
dispose(null); dispose(null);
if (shutDownView) { if (shutDownView) {
if (videoCapturer != null) { if (videoCapturer != null) {
@ -2261,20 +2266,20 @@ public class CallController extends BaseController {
handler.removeCallbacksAndMessages(null); handler.removeCallbacksAndMessages(null);
} }
if (!hasMCU) { /*if (!hasMCU) {
setCallState(CallStatus.RECONNECTING); setCallState(CallStatus.RECONNECTING);
hangupNetworkCalls(false); hangupNetworkCalls(false);
} }*/
} else if (networkEvent.getNetworkConnectionEvent().equals(NetworkEvent.NetworkConnectionEvent.NETWORK_DISCONNECTED)) { } else if (networkEvent.getNetworkConnectionEvent().equals(NetworkEvent.NetworkConnectionEvent.NETWORK_DISCONNECTED)) {
if (handler != null) { if (handler != null) {
handler.removeCallbacksAndMessages(null); handler.removeCallbacksAndMessages(null);
} }
if (!hasMCU) { /* if (!hasMCU) {
setCallState(CallStatus.OFFLINE); setCallState(CallStatus.OFFLINE);
hangup(false); hangup(false);
} }*/
} }
} }
} }