Extract testPush to its own class and rename PushersManager to DefaultPusherSubscriber
This commit is contained in:
parent
233052a3d5
commit
fd8734859a
4 changed files with 61 additions and 30 deletions
|
|
@ -21,6 +21,7 @@ import io.element.android.libraries.di.AppScope
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.push.api.GetCurrentPushProvider
|
import io.element.android.libraries.push.api.GetCurrentPushProvider
|
||||||
import io.element.android.libraries.push.api.PushService
|
import io.element.android.libraries.push.api.PushService
|
||||||
|
import io.element.android.libraries.push.impl.test.TestPush
|
||||||
import io.element.android.libraries.pushproviders.api.Distributor
|
import io.element.android.libraries.pushproviders.api.Distributor
|
||||||
import io.element.android.libraries.pushproviders.api.PushProvider
|
import io.element.android.libraries.pushproviders.api.PushProvider
|
||||||
import io.element.android.libraries.pushstore.api.UserPushStoreFactory
|
import io.element.android.libraries.pushstore.api.UserPushStoreFactory
|
||||||
|
|
@ -29,7 +30,7 @@ import javax.inject.Inject
|
||||||
|
|
||||||
@ContributesBinding(AppScope::class)
|
@ContributesBinding(AppScope::class)
|
||||||
class DefaultPushService @Inject constructor(
|
class DefaultPushService @Inject constructor(
|
||||||
private val pushersManager: PushersManager,
|
private val testPush: TestPush,
|
||||||
private val userPushStoreFactory: UserPushStoreFactory,
|
private val userPushStoreFactory: UserPushStoreFactory,
|
||||||
private val pushProviders: Set<@JvmSuppressWildcards PushProvider>,
|
private val pushProviders: Set<@JvmSuppressWildcards PushProvider>,
|
||||||
private val getCurrentPushProvider: GetCurrentPushProvider,
|
private val getCurrentPushProvider: GetCurrentPushProvider,
|
||||||
|
|
@ -74,7 +75,7 @@ class DefaultPushService @Inject constructor(
|
||||||
override suspend fun testPush(): Boolean {
|
override suspend fun testPush(): Boolean {
|
||||||
val pushProvider = getCurrentPushProvider() ?: return false
|
val pushProvider = getCurrentPushProvider() ?: return false
|
||||||
val config = pushProvider.getCurrentUserPushConfig() ?: return false
|
val config = pushProvider.getCurrentUserPushConfig() ?: return false
|
||||||
pushersManager.testPush(config)
|
testPush.execute(config)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,13 +22,9 @@ import io.element.android.libraries.core.log.logger.LoggerTag
|
||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
import io.element.android.libraries.di.AppScope
|
import io.element.android.libraries.di.AppScope
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.pusher.SetHttpPusherData
|
import io.element.android.libraries.matrix.api.pusher.SetHttpPusherData
|
||||||
import io.element.android.libraries.matrix.api.pusher.UnsetHttpPusherData
|
import io.element.android.libraries.matrix.api.pusher.UnsetHttpPusherData
|
||||||
import io.element.android.libraries.push.impl.pushgateway.PushGatewayNotifyRequest
|
|
||||||
import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig
|
|
||||||
import io.element.android.libraries.pushproviders.api.PusherSubscriber
|
import io.element.android.libraries.pushproviders.api.PusherSubscriber
|
||||||
import io.element.android.libraries.pushstore.api.UserPushStoreFactory
|
import io.element.android.libraries.pushstore.api.UserPushStoreFactory
|
||||||
import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret
|
import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret
|
||||||
|
|
@ -37,29 +33,14 @@ import javax.inject.Inject
|
||||||
|
|
||||||
internal const val DEFAULT_PUSHER_FILE_TAG = "mobile"
|
internal const val DEFAULT_PUSHER_FILE_TAG = "mobile"
|
||||||
|
|
||||||
private val loggerTag = LoggerTag("PushersManager", LoggerTag.PushLoggerTag)
|
private val loggerTag = LoggerTag("DefaultPusherSubscriber", LoggerTag.PushLoggerTag)
|
||||||
|
|
||||||
@ContributesBinding(AppScope::class)
|
@ContributesBinding(AppScope::class)
|
||||||
class PushersManager @Inject constructor(
|
class DefaultPusherSubscriber @Inject constructor(
|
||||||
// private val localeProvider: LocaleProvider,
|
|
||||||
private val buildMeta: BuildMeta,
|
private val buildMeta: BuildMeta,
|
||||||
// private val getDeviceInfoUseCase: GetDeviceInfoUseCase,
|
|
||||||
private val pushGatewayNotifyRequest: PushGatewayNotifyRequest,
|
|
||||||
private val pushClientSecret: PushClientSecret,
|
private val pushClientSecret: PushClientSecret,
|
||||||
private val userPushStoreFactory: UserPushStoreFactory,
|
private val userPushStoreFactory: UserPushStoreFactory,
|
||||||
) : PusherSubscriber {
|
) : PusherSubscriber {
|
||||||
suspend fun testPush(config: CurrentUserPushConfig) {
|
|
||||||
pushGatewayNotifyRequest.execute(
|
|
||||||
PushGatewayNotifyRequest.Params(
|
|
||||||
url = config.url,
|
|
||||||
appId = PushConfig.PUSHER_APP_ID,
|
|
||||||
pushKey = config.pushKey,
|
|
||||||
eventId = TEST_EVENT_ID,
|
|
||||||
roomId = TEST_ROOM_ID,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a pusher to the server if not done yet.
|
* Register a pusher to the server if not done yet.
|
||||||
*/
|
*/
|
||||||
|
|
@ -131,9 +112,4 @@ class PushersManager @Inject constructor(
|
||||||
Timber.tag(loggerTag.value).e(throwable, "Unable to unregister the pusher")
|
Timber.tag(loggerTag.value).e(throwable, "Unable to unregister the pusher")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
|
||||||
val TEST_EVENT_ID = EventId("\$THIS_IS_A_FAKE_EVENT_ID")
|
|
||||||
val TEST_ROOM_ID = RoomId("!room:domain")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -23,10 +23,12 @@ import io.element.android.libraries.core.log.logger.LoggerTag
|
||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
import io.element.android.libraries.di.AppScope
|
import io.element.android.libraries.di.AppScope
|
||||||
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
|
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
|
||||||
import io.element.android.libraries.push.impl.PushersManager
|
import io.element.android.libraries.push.impl.DefaultPusherSubscriber
|
||||||
import io.element.android.libraries.push.impl.notifications.DefaultNotificationDrawerManager
|
import io.element.android.libraries.push.impl.notifications.DefaultNotificationDrawerManager
|
||||||
import io.element.android.libraries.push.impl.notifications.NotifiableEventResolver
|
import io.element.android.libraries.push.impl.notifications.NotifiableEventResolver
|
||||||
import io.element.android.libraries.push.impl.store.DefaultPushDataStore
|
import io.element.android.libraries.push.impl.store.DefaultPushDataStore
|
||||||
|
import io.element.android.libraries.push.impl.test.DefaultTestPush
|
||||||
|
import io.element.android.libraries.push.impl.test.TestPush
|
||||||
import io.element.android.libraries.push.impl.troubleshoot.DiagnosticPushHandler
|
import io.element.android.libraries.push.impl.troubleshoot.DiagnosticPushHandler
|
||||||
import io.element.android.libraries.pushproviders.api.PushData
|
import io.element.android.libraries.pushproviders.api.PushData
|
||||||
import io.element.android.libraries.pushproviders.api.PushHandler
|
import io.element.android.libraries.pushproviders.api.PushHandler
|
||||||
|
|
@ -76,7 +78,7 @@ class DefaultPushHandler @Inject constructor(
|
||||||
defaultPushDataStore.incrementPushCounter()
|
defaultPushDataStore.incrementPushCounter()
|
||||||
|
|
||||||
// Diagnostic Push
|
// Diagnostic Push
|
||||||
if (pushData.eventId == PushersManager.TEST_EVENT_ID) {
|
if (pushData.eventId == DefaultTestPush.TEST_EVENT_ID) {
|
||||||
diagnosticPushHandler.handlePush()
|
diagnosticPushHandler.handlePush()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.push.impl.test
|
||||||
|
|
||||||
|
import com.squareup.anvil.annotations.ContributesBinding
|
||||||
|
import io.element.android.appconfig.PushConfig
|
||||||
|
import io.element.android.libraries.di.AppScope
|
||||||
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
import io.element.android.libraries.push.impl.pushgateway.PushGatewayNotifyRequest
|
||||||
|
import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
interface TestPush {
|
||||||
|
suspend fun execute(config: CurrentUserPushConfig)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ContributesBinding(AppScope::class)
|
||||||
|
class DefaultTestPush @Inject constructor(
|
||||||
|
private val pushGatewayNotifyRequest: PushGatewayNotifyRequest,
|
||||||
|
) : TestPush {
|
||||||
|
override suspend fun execute(config: CurrentUserPushConfig) {
|
||||||
|
pushGatewayNotifyRequest.execute(
|
||||||
|
PushGatewayNotifyRequest.Params(
|
||||||
|
url = config.url,
|
||||||
|
appId = PushConfig.PUSHER_APP_ID,
|
||||||
|
pushKey = config.pushKey,
|
||||||
|
eventId = TEST_EVENT_ID,
|
||||||
|
roomId = TEST_ROOM_ID,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val TEST_EVENT_ID = EventId("\$THIS_IS_A_FAKE_EVENT_ID")
|
||||||
|
val TEST_ROOM_ID = RoomId("!room:domain")
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue