From 61f9b20554654a2412a2ce6d15bcc63662848e50 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 30 Aug 2024 16:15:54 +0200 Subject: [PATCH] Ensure starting PinUnlockActivity does not crash the application. Fix regression from #3222 d4f8052696f69521c86f13115a703d854ac325c4 --- .../impl/unlock/di/PinUnlockBindings.kt | 4 +-- .../logout/impl/DefaultLogoutUseCase.kt | 28 +++++++-------- .../logout/impl/SessionLogoutModule.kt | 36 ------------------- 3 files changed, 15 insertions(+), 53 deletions(-) delete mode 100644 features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/SessionLogoutModule.kt diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/di/PinUnlockBindings.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/di/PinUnlockBindings.kt index 0f71222ebdf..ddd62d2fb68 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/di/PinUnlockBindings.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/di/PinUnlockBindings.kt @@ -18,9 +18,9 @@ package io.element.android.features.lockscreen.impl.unlock.di import com.squareup.anvil.annotations.ContributesTo import io.element.android.features.lockscreen.impl.unlock.activity.PinUnlockActivity -import io.element.android.libraries.di.SessionScope +import io.element.android.libraries.di.AppScope -@ContributesTo(SessionScope::class) +@ContributesTo(AppScope::class) interface PinUnlockBindings { fun inject(activity: PinUnlockActivity) } diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutUseCase.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutUseCase.kt index ffd8d11406d..0ae58aa61e5 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutUseCase.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutUseCase.kt @@ -17,27 +17,25 @@ package io.element.android.features.logout.impl import com.squareup.anvil.annotations.ContributesBinding -import dagger.assisted.Assisted -import dagger.assisted.AssistedFactory -import dagger.assisted.AssistedInject import io.element.android.features.logout.api.LogoutUseCase import io.element.android.libraries.di.AppScope import io.element.android.libraries.matrix.api.MatrixClientProvider -import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService +import javax.inject.Inject -class DefaultLogoutUseCase @AssistedInject constructor( - @Assisted private val sessionId: String, +@ContributesBinding(AppScope::class) +class DefaultLogoutUseCase @Inject constructor( + private val authenticationService: MatrixAuthenticationService, private val matrixClientProvider: MatrixClientProvider, ) : LogoutUseCase { - @ContributesBinding(AppScope::class) - @AssistedFactory - interface Factory : LogoutUseCase.Factory { - override fun create(sessionId: String): DefaultLogoutUseCase - } - override suspend fun logout(ignoreSdkError: Boolean): String? { - val matrixClient = matrixClientProvider.getOrRestore(SessionId(sessionId)).getOrThrow() - val result = matrixClient.logout(ignoreSdkError = ignoreSdkError) - return result + val currentSession = authenticationService.getLatestSessionId() + return if (currentSession != null) { + matrixClientProvider.getOrRestore(currentSession) + .getOrThrow() + .logout(ignoreSdkError = true) + } else { + error("No session to sign out") + } } } diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/SessionLogoutModule.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/SessionLogoutModule.kt deleted file mode 100644 index ec725a34a6a..00000000000 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/SessionLogoutModule.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 - * - * https://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.features.logout.impl - -import com.squareup.anvil.annotations.ContributesTo -import dagger.Module -import dagger.Provides -import io.element.android.features.logout.api.LogoutUseCase -import io.element.android.libraries.di.SessionScope -import io.element.android.libraries.matrix.api.user.CurrentSessionIdHolder - -@Module -@ContributesTo(SessionScope::class) -object SessionLogoutModule { - @Provides - fun provideLogoutUseCase( - currentSessionIdHolder: CurrentSessionIdHolder, - factory: DefaultLogoutUseCase.Factory, - ): LogoutUseCase { - return factory.create(currentSessionIdHolder.current.value) - } -}