Give ability to configure the Firebase push gateway.
This commit is contained in:
parent
3ca624648b
commit
cf60f943a8
10 changed files with 70 additions and 11 deletions
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright 2025 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.pushproviders.firebase
|
||||
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import io.element.android.features.enterprise.api.EnterpriseService
|
||||
import io.element.android.libraries.di.AppScope
|
||||
import javax.inject.Inject
|
||||
|
||||
interface FirebaseGatewayProvider {
|
||||
fun getFirebaseGateway(): String
|
||||
}
|
||||
|
||||
@ContributesBinding(AppScope::class)
|
||||
class DefaultFirebaseGatewayProvider @Inject constructor(
|
||||
private val enterpriseService: EnterpriseService,
|
||||
) : FirebaseGatewayProvider {
|
||||
override fun getFirebaseGateway(): String {
|
||||
return enterpriseService.firebasePushGateway() ?: FirebaseConfig.PUSHER_HTTP_URL
|
||||
}
|
||||
}
|
||||
|
|
@ -36,6 +36,7 @@ class DefaultFirebaseNewTokenHandler @Inject constructor(
|
|||
private val userPushStoreFactory: UserPushStoreFactory,
|
||||
private val matrixClientProvider: MatrixClientProvider,
|
||||
private val firebaseStore: FirebaseStore,
|
||||
private val firebaseGatewayProvider: FirebaseGatewayProvider,
|
||||
) : FirebaseNewTokenHandler {
|
||||
override suspend fun handle(firebaseToken: String) {
|
||||
firebaseStore.storeFcmToken(firebaseToken)
|
||||
|
|
@ -55,7 +56,7 @@ class DefaultFirebaseNewTokenHandler @Inject constructor(
|
|||
.registerPusher(
|
||||
matrixClient = client,
|
||||
pushKey = firebaseToken,
|
||||
gateway = FirebaseConfig.PUSHER_HTTP_URL,
|
||||
gateway = firebaseGatewayProvider.getFirebaseGateway(),
|
||||
)
|
||||
.onFailure {
|
||||
Timber.tag(loggerTag.value).e(it, "Failed to register pusher for session $sessionId")
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ class FirebasePushProvider @Inject constructor(
|
|||
private val pusherSubscriber: PusherSubscriber,
|
||||
private val isPlayServiceAvailable: IsPlayServiceAvailable,
|
||||
private val firebaseTokenRotator: FirebaseTokenRotator,
|
||||
private val firebaseGatewayProvider: FirebaseGatewayProvider,
|
||||
) : PushProvider {
|
||||
override val index = FirebaseConfig.INDEX
|
||||
override val name = FirebaseConfig.NAME
|
||||
|
|
@ -48,7 +49,7 @@ class FirebasePushProvider @Inject constructor(
|
|||
return pusherSubscriber.registerPusher(
|
||||
matrixClient = matrixClient,
|
||||
pushKey = pushKey,
|
||||
gateway = FirebaseConfig.PUSHER_HTTP_URL,
|
||||
gateway = firebaseGatewayProvider.getFirebaseGateway(),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -60,7 +61,7 @@ class FirebasePushProvider @Inject constructor(
|
|||
Timber.tag(loggerTag.value).w("Unable to unregister pusher, Firebase token is not known.")
|
||||
Result.success(Unit)
|
||||
} else {
|
||||
pusherSubscriber.unregisterPusher(matrixClient, pushKey, FirebaseConfig.PUSHER_HTTP_URL)
|
||||
pusherSubscriber.unregisterPusher(matrixClient, pushKey, firebaseGatewayProvider.getFirebaseGateway())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -72,7 +73,7 @@ class FirebasePushProvider @Inject constructor(
|
|||
override suspend fun getCurrentUserPushConfig(): CurrentUserPushConfig? {
|
||||
return firebaseStore.getFcmToken()?.let { fcmToken ->
|
||||
CurrentUserPushConfig(
|
||||
url = FirebaseConfig.PUSHER_HTTP_URL,
|
||||
url = firebaseGatewayProvider.getFirebaseGateway(),
|
||||
pushKey = fcmToken
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue