From ec40ca9b666d429379dfc21cf62d3bb3db690e04 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Fri, 15 Oct 2021 00:08:19 +0200 Subject: [PATCH] hangup call notification after 1 minute Signed-off-by: Marcel Hibbe --- .../firebase/MagicFirebaseMessagingService.kt | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt index 4708f42e1..d8fd3fdb8 100644 --- a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt +++ b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt @@ -64,6 +64,7 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_FROM_NOTIFICATION_START_CA import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USER_ENTITY import com.nextcloud.talk.utils.preferences.AppPreferences import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder +import io.reactivex.Observable import io.reactivex.Observer import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers @@ -78,6 +79,7 @@ import java.net.CookieManager import java.security.InvalidKeyException import java.security.NoSuchAlgorithmException import java.security.PrivateKey +import java.util.concurrent.TimeUnit import javax.crypto.Cipher import javax.crypto.NoSuchPaddingException import javax.inject.Inject @@ -308,7 +310,7 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() { val ncApi = retrofit!!.newBuilder() .client(okHttpClient!!.newBuilder().cookieJar(JavaNetCookieJar(CookieManager())).build()).build() .create(NcApi::class.java) - var hasParticipantsInCall = false + var hasParticipantsInCall = true var inCallOnDifferentDevice = false val apiVersion = ApiUtils.getConversationApiVersion( @@ -324,8 +326,10 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() { decryptedPushMessage.id ) ) - .takeWhile { - isServiceInForeground + .repeatWhen { completed -> + completed.zipWith(Observable.range(1, 12), { _, i -> i }) + .flatMap { Observable.timer(5, TimeUnit.SECONDS) } + .takeWhile { isServiceInForeground && hasParticipantsInCall && !inCallOnDifferentDevice } } .subscribeOn(Schedulers.io()) .subscribe(object : Observer { @@ -343,23 +347,17 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() { } } } - if (!hasParticipantsInCall || inCallOnDifferentDevice) { Log.d(TAG, "no participants in call OR inCallOnDifferentDevice") stopForeground(true) handler.removeCallbacksAndMessages(null) - } else if (isServiceInForeground) { - handler.postDelayed( - { - checkIfCallIsActive(signatureVerification, decryptedPushMessage) - }, - 5000 - ) } } override fun onError(e: Throwable) {} override fun onComplete() { + stopForeground(true) + handler.removeCallbacksAndMessages(null) } }) }