diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallNotificationActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallNotificationActivity.java index 7c126e4d6..4d211e030 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallNotificationActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallNotificationActivity.java @@ -69,6 +69,7 @@ import org.parceler.Parcels; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; import javax.inject.Inject; @@ -76,6 +77,7 @@ import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import autodagger.AutoInjector; import butterknife.OnClick; +import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; @@ -217,7 +219,9 @@ public class CallNotificationActivity extends CallBaseActivity { ncApi.getPeersForCall(credentials, ApiUtils.getUrlForCall(apiVersion, userBeingCalled.getBaseUrl(), currentConversation.getToken())) .subscribeOn(Schedulers.io()) - .takeWhile(observable -> !leavingScreen) + .repeatWhen(completed -> completed.zipWith(Observable.range(1, 12), (n, i) -> i) + .flatMap(retryCount -> Observable.timer(5, TimeUnit.SECONDS)) + .takeWhile(observable -> !leavingScreen)) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { @@ -253,9 +257,7 @@ public class CallNotificationActivity extends CallBaseActivity { @Override public void onComplete() { - if (!leavingScreen) { - handler.postDelayed(() -> checkIfAnyParticipantsRemainInRoom(), 5000); - } + runOnUiThread(() -> hangup()); } });