diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt index c619629152..f1c28b7a82 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt @@ -142,7 +142,7 @@ class LoggedInPresenter @Inject constructor( .also { Timber.tag(pusherTag.value).w("No distributors available") } .also { // In this case, consider the push provider is chosen. - pushService.selectPushProvider(matrixClient, pushProvider) + pushService.selectPushProvider(matrixClient.sessionId, pushProvider) } .also { pusherRegistrationState.value = AsyncData.Failure(PusherRegistrationFailure.NoDistributorsAvailable()) } pushService.registerWith(matrixClient, pushProvider, distributor) diff --git a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt index 961856148e..ec44876634 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt @@ -378,7 +378,7 @@ class LoggedInPresenterTest { val lambda = lambdaRecorder> { _, _, _ -> Result.success(Unit) } - val selectPushProviderLambda = lambdaRecorder { _, _ -> } + val selectPushProviderLambda = lambdaRecorder { _, _ -> } val sessionVerificationService = FakeSessionVerificationService( initialSessionVerifiedStatus = SessionVerifiedStatus.Verified ) @@ -408,8 +408,8 @@ class LoggedInPresenterTest { selectPushProviderLambda.assertions() .isCalledOnce() .with( - // MatrixClient - any(), + // SessionId + value(A_SESSION_ID), // PushProvider value(pushProvider), ) @@ -481,7 +481,7 @@ class LoggedInPresenterTest { registerWithLambda: (MatrixClient, PushProvider, Distributor) -> Result = { _, _, _ -> Result.success(Unit) }, - selectPushProviderLambda: (MatrixClient, PushProvider) -> Unit = { _, _ -> lambdaError() }, + selectPushProviderLambda: (SessionId, PushProvider) -> Unit = { _, _ -> lambdaError() }, currentPushProvider: () -> PushProvider? = { null }, setIgnoreRegistrationErrorLambda: (SessionId, Boolean) -> Unit = { _, _ -> lambdaError() }, ): PushService { diff --git a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/PushService.kt b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/PushService.kt index a28abbd9ef..872a968642 100644 --- a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/PushService.kt +++ b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/PushService.kt @@ -40,7 +40,7 @@ interface PushService { * To be used when there is no distributor available. */ suspend fun selectPushProvider( - matrixClient: MatrixClient, + sessionId: SessionId, pushProvider: PushProvider, ) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt index ca192ea886..262d8901ef 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt @@ -76,11 +76,11 @@ class DefaultPushService @Inject constructor( } override suspend fun selectPushProvider( - matrixClient: MatrixClient, + sessionId: SessionId, pushProvider: PushProvider, ) { Timber.d("Select ${pushProvider.name}") - val userPushStore = userPushStoreFactory.getOrCreate(matrixClient.sessionId) + val userPushStore = userPushStoreFactory.getOrCreate(sessionId) userPushStore.setPushProviderName(pushProvider.name) } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt index 985f540204..af638d084b 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt @@ -265,6 +265,22 @@ class DefaultPushServiceTest { assertThat(pushClientSecretStore.getSecret(A_SESSION_ID)).isNull() } + @Test + fun `selectPushProvider should store the data in the store`() = runTest { + val userPushStore = FakeUserPushStore() + val defaultPushService = createDefaultPushService( + userPushStoreFactory = FakeUserPushStoreFactory( + userPushStore = { userPushStore }, + ), + ) + val aPushProvider = FakePushProvider( + name = "aCurrentPushProvider", + ) + assertThat(userPushStore.getPushProviderName()).isNull() + defaultPushService.selectPushProvider(A_SESSION_ID, aPushProvider) + assertThat(userPushStore.getPushProviderName()).isEqualTo(aPushProvider.name) + } + private fun createDefaultPushService( testPush: TestPush = FakeTestPush(), userPushStoreFactory: UserPushStoreFactory = FakeUserPushStoreFactory(), diff --git a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakePushService.kt b/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakePushService.kt index 7af2b73fe5..6b7512afa8 100644 --- a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakePushService.kt +++ b/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakePushService.kt @@ -24,7 +24,7 @@ class FakePushService( Result.success(Unit) }, private val currentPushProvider: () -> PushProvider? = { availablePushProviders.firstOrNull() }, - private val selectPushProviderLambda: suspend (MatrixClient, PushProvider) -> Unit = { _, _ -> lambdaError() }, + private val selectPushProviderLambda: suspend (SessionId, PushProvider) -> Unit = { _, _ -> lambdaError() }, private val setIgnoreRegistrationErrorLambda: (SessionId, Boolean) -> Unit = { _, _ -> lambdaError() }, ) : PushService { override suspend fun getCurrentPushProvider(): PushProvider? { @@ -50,8 +50,8 @@ class FakePushService( } } - override suspend fun selectPushProvider(matrixClient: MatrixClient, pushProvider: PushProvider) { - selectPushProviderLambda(matrixClient, pushProvider) + override suspend fun selectPushProvider(sessionId: SessionId, pushProvider: PushProvider) { + selectPushProviderLambda(sessionId, pushProvider) } private val ignoreRegistrationError = MutableStateFlow(false)