diff --git a/matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/auth/AuthenticatorTest.kt b/matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/auth/AuthenticationServiceTest.kt similarity index 90% rename from matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/auth/AuthenticatorTest.kt rename to matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/auth/AuthenticationServiceTest.kt index 5c86f5ad22..c3babd7e5a 100644 --- a/matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/auth/AuthenticatorTest.kt +++ b/matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/auth/AuthenticationServiceTest.kt @@ -21,7 +21,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.rule.GrantPermissionRule import im.vector.matrix.android.InstrumentedTest import im.vector.matrix.android.OkReplayRuleChainNoActivity -import im.vector.matrix.android.api.auth.Authenticator +import im.vector.matrix.android.api.auth.AuthenticationService import okreplay.* import org.junit.ClassRule import org.junit.Rule @@ -29,9 +29,9 @@ import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) -internal class AuthenticatorTest : InstrumentedTest { +internal class AuthenticationServiceTest : InstrumentedTest { - lateinit var authenticator: Authenticator + lateinit var authenticationService: AuthenticationService lateinit var okReplayInterceptor: OkReplayInterceptor private val okReplayConfig = OkReplayConfig.Builder() diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/Matrix.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/Matrix.kt index 3c4e9b23e8..34e284fd94 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/Matrix.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/Matrix.kt @@ -22,8 +22,7 @@ import androidx.work.Configuration import androidx.work.WorkManager import com.zhuinden.monarchy.Monarchy import im.vector.matrix.android.BuildConfig -import im.vector.matrix.android.api.auth.Authenticator -import im.vector.matrix.android.api.auth.registration.RegistrationService +import im.vector.matrix.android.api.auth.AuthenticationService import im.vector.matrix.android.internal.SessionManager import im.vector.matrix.android.internal.di.DaggerMatrixComponent import im.vector.matrix.android.internal.network.UserAgentHolder @@ -47,8 +46,7 @@ data class MatrixConfiguration( */ class Matrix private constructor(context: Context, matrixConfiguration: MatrixConfiguration) { - @Inject internal lateinit var authenticator: Authenticator - @Inject internal lateinit var registrationService: RegistrationService + @Inject internal lateinit var authenticationService: AuthenticationService @Inject internal lateinit var userAgentHolder: UserAgentHolder @Inject internal lateinit var backgroundDetectionObserver: BackgroundDetectionObserver @Inject internal lateinit var olmManager: OlmManager @@ -66,12 +64,8 @@ class Matrix private constructor(context: Context, matrixConfiguration: MatrixCo fun getUserAgent() = userAgentHolder.userAgent - fun authenticator(): Authenticator { - return authenticator - } - - fun registrationService(): RegistrationService { - return registrationService + fun authenticationService(): AuthenticationService { + return authenticationService } companion object { diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/Authenticator.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/AuthenticationService.kt similarity index 80% rename from matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/Authenticator.kt rename to matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/AuthenticationService.kt index 4285546abb..5083172124 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/Authenticator.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/AuthenticationService.kt @@ -20,14 +20,16 @@ import im.vector.matrix.android.api.MatrixCallback import im.vector.matrix.android.api.auth.data.Credentials import im.vector.matrix.android.api.auth.data.HomeServerConnectionConfig import im.vector.matrix.android.api.auth.data.SessionParams +import im.vector.matrix.android.api.auth.login.LoginWizard +import im.vector.matrix.android.api.auth.registration.RegistrationWizard import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.util.Cancelable import im.vector.matrix.android.internal.auth.data.LoginFlowResponse /** - * This interface defines methods to authenticate to a matrix server. + * This interface defines methods to authenticate or to create an account to a matrix server. */ -interface Authenticator { +interface AuthenticationService { /** * Request the supported login flows for this homeserver @@ -35,10 +37,15 @@ interface Authenticator { fun getLoginFlow(homeServerConnectionConfig: HomeServerConnectionConfig, callback: MatrixCallback): Cancelable /** - * Return an AuthenticationWizard + * Return an LoginWizard * @param homeServerConnectionConfig this param is used to request the Homeserver */ - fun createAuthenticationWizard(homeServerConnectionConfig: HomeServerConnectionConfig): AuthenticationWizard + fun createLoginWizard(homeServerConnectionConfig: HomeServerConnectionConfig): LoginWizard + + /** + * Return a RegistrationWizard, to create an matrix account on a homeserver + */ + fun getOrCreateRegistrationWizard(homeServerConnectionConfig: HomeServerConnectionConfig): RegistrationWizard /** * Check if there is an authenticated [Session]. diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/HomeServerConnectionConfig.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/HomeServerConnectionConfig.kt index e85b05092f..853ea93544 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/HomeServerConnectionConfig.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/HomeServerConnectionConfig.kt @@ -25,7 +25,7 @@ import okhttp3.TlsVersion /** * This data class holds how to connect to a specific Homeserver. - * It's used with [im.vector.matrix.android.api.auth.Authenticator] class. + * It's used with [im.vector.matrix.android.api.auth.AuthenticationService] class. * You should use the [Builder] to create one. */ @JsonClass(generateAdapter = true) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/AuthenticationWizard.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/login/LoginWizard.kt similarity index 84% rename from matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/AuthenticationWizard.kt rename to matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/login/LoginWizard.kt index 24384c1fe3..d7b2f5d960 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/AuthenticationWizard.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/login/LoginWizard.kt @@ -14,13 +14,13 @@ * limitations under the License. */ -package im.vector.matrix.android.api.auth +package im.vector.matrix.android.api.auth.login import im.vector.matrix.android.api.MatrixCallback import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.util.Cancelable -interface AuthenticationWizard { +interface LoginWizard { /** * @param login the login field @@ -29,10 +29,10 @@ interface AuthenticationWizard { * @param callback the matrix callback on which you'll receive the result of authentication. * @return return a [Cancelable] */ - fun authenticate(login: String, - password: String, - deviceName: String, - callback: MatrixCallback): Cancelable + fun login(login: String, + password: String, + deviceName: String, + callback: MatrixCallback): Cancelable /** * Reset user password diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/registration/RegistrationService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/registration/RegistrationService.kt deleted file mode 100644 index b314f92b9b..0000000000 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/registration/RegistrationService.kt +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2019 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 im.vector.matrix.android.api.auth.registration - -import im.vector.matrix.android.api.auth.data.HomeServerConnectionConfig - -interface RegistrationService { - - fun getOrCreateRegistrationWizard(homeServerConnectionConfig: HomeServerConnectionConfig): RegistrationWizard -} diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/AuthAPI.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/AuthAPI.kt index 961fac60ff..41da0e78cb 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/AuthAPI.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/AuthAPI.kt @@ -20,7 +20,7 @@ import im.vector.matrix.android.api.auth.data.Credentials import im.vector.matrix.android.internal.auth.data.LoginFlowResponse import im.vector.matrix.android.internal.auth.data.PasswordLoginParams import im.vector.matrix.android.internal.auth.registration.* -import im.vector.matrix.android.internal.auth.signin.ResetPasswordMailConfirmed +import im.vector.matrix.android.internal.auth.login.ResetPasswordMailConfirmed import im.vector.matrix.android.internal.network.NetworkConstants import retrofit2.Call import retrofit2.http.* diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/AuthModule.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/AuthModule.kt index e54073ac08..9709ce43c9 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/AuthModule.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/AuthModule.kt @@ -20,11 +20,9 @@ import android.content.Context import dagger.Binds import dagger.Module import dagger.Provides -import im.vector.matrix.android.api.auth.Authenticator -import im.vector.matrix.android.api.auth.registration.RegistrationService +import im.vector.matrix.android.api.auth.AuthenticationService import im.vector.matrix.android.internal.auth.db.AuthRealmModule import im.vector.matrix.android.internal.auth.db.RealmSessionParamsStore -import im.vector.matrix.android.internal.auth.registration.DefaultRegistrationService import im.vector.matrix.android.internal.database.RealmKeysUtils import im.vector.matrix.android.internal.di.AuthDatabase import io.realm.RealmConfiguration @@ -61,8 +59,5 @@ internal abstract class AuthModule { abstract fun bindSessionParamsStore(sessionParamsStore: RealmSessionParamsStore): SessionParamsStore @Binds - abstract fun bindAuthenticator(authenticator: DefaultAuthenticator): Authenticator - - @Binds - abstract fun bindRegistrationService(service: DefaultRegistrationService): RegistrationService + abstract fun bindAuthenticationService(authenticationService: DefaultAuthenticationService): AuthenticationService } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/DefaultAuthenticator.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/DefaultAuthenticationService.kt similarity index 73% rename from matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/DefaultAuthenticator.kt rename to matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/DefaultAuthenticationService.kt index e233322186..8229336e91 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/DefaultAuthenticator.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/DefaultAuthenticationService.kt @@ -18,15 +18,18 @@ package im.vector.matrix.android.internal.auth import dagger.Lazy import im.vector.matrix.android.api.MatrixCallback -import im.vector.matrix.android.api.auth.AuthenticationWizard -import im.vector.matrix.android.api.auth.Authenticator +import im.vector.matrix.android.api.auth.AuthenticationService import im.vector.matrix.android.api.auth.data.Credentials import im.vector.matrix.android.api.auth.data.HomeServerConnectionConfig import im.vector.matrix.android.api.auth.data.SessionParams +import im.vector.matrix.android.api.auth.login.LoginWizard +import im.vector.matrix.android.api.auth.registration.RegistrationWizard import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.util.Cancelable import im.vector.matrix.android.internal.SessionManager import im.vector.matrix.android.internal.auth.data.LoginFlowResponse +import im.vector.matrix.android.internal.auth.login.DefaultLoginWizard +import im.vector.matrix.android.internal.auth.registration.DefaultRegistrationWizard import im.vector.matrix.android.internal.di.Unauthenticated import im.vector.matrix.android.internal.extensions.foldToCallback import im.vector.matrix.android.internal.network.RetrofitFactory @@ -39,13 +42,13 @@ import kotlinx.coroutines.withContext import okhttp3.OkHttpClient import javax.inject.Inject -internal class DefaultAuthenticator @Inject constructor(@Unauthenticated - private val okHttpClient: Lazy, - private val retrofitFactory: RetrofitFactory, - private val coroutineDispatchers: MatrixCoroutineDispatchers, - private val sessionParamsStore: SessionParamsStore, - private val sessionManager: SessionManager -) : Authenticator { +internal class DefaultAuthenticationService @Inject constructor(@Unauthenticated + private val okHttpClient: Lazy, + private val retrofitFactory: RetrofitFactory, + private val coroutineDispatchers: MatrixCoroutineDispatchers, + private val sessionParamsStore: SessionParamsStore, + private val sessionManager: SessionManager +) : AuthenticationService { override fun hasAuthenticatedSessions(): Boolean { return sessionParamsStore.getLast() != null @@ -80,8 +83,18 @@ internal class DefaultAuthenticator @Inject constructor(@Unauthenticated } } - override fun createAuthenticationWizard(homeServerConnectionConfig: HomeServerConnectionConfig): AuthenticationWizard { - return DefaultAuthenticationWizard( + override fun getOrCreateRegistrationWizard(homeServerConnectionConfig: HomeServerConnectionConfig): RegistrationWizard { + // TODO Persist the wizard? + return DefaultRegistrationWizard(homeServerConnectionConfig, + okHttpClient, + retrofitFactory, + coroutineDispatchers, + sessionParamsStore, + sessionManager) + } + + override fun createLoginWizard(homeServerConnectionConfig: HomeServerConnectionConfig): LoginWizard { + return DefaultLoginWizard( homeServerConnectionConfig, coroutineDispatchers, sessionParamsStore, diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/DefaultAuthenticationWizard.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/login/DefaultLoginWizard.kt similarity index 92% rename from matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/DefaultAuthenticationWizard.kt rename to matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/login/DefaultLoginWizard.kt index 378b3ec105..c155b91f33 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/DefaultAuthenticationWizard.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/login/DefaultLoginWizard.kt @@ -14,26 +14,27 @@ * limitations under the License. */ -package im.vector.matrix.android.internal.auth +package im.vector.matrix.android.internal.auth.login import android.util.Patterns import dagger.Lazy import im.vector.matrix.android.api.MatrixCallback -import im.vector.matrix.android.api.auth.AuthenticationWizard import im.vector.matrix.android.api.auth.data.Credentials import im.vector.matrix.android.api.auth.data.HomeServerConnectionConfig import im.vector.matrix.android.api.auth.data.SessionParams +import im.vector.matrix.android.api.auth.login.LoginWizard import im.vector.matrix.android.api.auth.registration.RegisterThreePid import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.util.Cancelable import im.vector.matrix.android.api.util.NoOpCancellable import im.vector.matrix.android.internal.SessionManager +import im.vector.matrix.android.internal.auth.AuthAPI +import im.vector.matrix.android.internal.auth.SessionParamsStore import im.vector.matrix.android.internal.auth.data.PasswordLoginParams import im.vector.matrix.android.internal.auth.data.ThreePidMedium import im.vector.matrix.android.internal.auth.registration.AddThreePidRegistrationParams import im.vector.matrix.android.internal.auth.registration.AddThreePidRegistrationResponse import im.vector.matrix.android.internal.auth.registration.RegisterAddThreePidTask -import im.vector.matrix.android.internal.auth.signin.ResetPasswordMailConfirmed import im.vector.matrix.android.internal.extensions.foldToCallback import im.vector.matrix.android.internal.network.RetrofitFactory import im.vector.matrix.android.internal.network.executeRequest @@ -51,14 +52,14 @@ internal data class ResetPasswordData( val addThreePidRegistrationResponse: AddThreePidRegistrationResponse ) -internal class DefaultAuthenticationWizard( +internal class DefaultLoginWizard( private val homeServerConnectionConfig: HomeServerConnectionConfig, private val coroutineDispatchers: MatrixCoroutineDispatchers, private val sessionParamsStore: SessionParamsStore, private val sessionManager: SessionManager, retrofitFactory: RetrofitFactory, okHttpClient: Lazy -) : AuthenticationWizard { +) : LoginWizard { private var clientSecret = UUID.randomUUID().toString() private var sendAttempt = 0 @@ -68,10 +69,10 @@ internal class DefaultAuthenticationWizard( private val authAPI = retrofitFactory.create(okHttpClient, homeServerConnectionConfig.homeServerUri.toString()) .create(AuthAPI::class.java) - override fun authenticate(login: String, - password: String, - deviceName: String, - callback: MatrixCallback): Cancelable { + override fun login(login: String, + password: String, + deviceName: String, + callback: MatrixCallback): Cancelable { val job = GlobalScope.launch(coroutineDispatchers.main) { val sessionOrFailure = runCatching { authenticate(login, password, deviceName) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/signin/ResetPasswordMailConfirmed.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/login/ResetPasswordMailConfirmed.kt similarity index 96% rename from matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/signin/ResetPasswordMailConfirmed.kt rename to matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/login/ResetPasswordMailConfirmed.kt index 88fa411f5d..9be4451628 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/signin/ResetPasswordMailConfirmed.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/login/ResetPasswordMailConfirmed.kt @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package im.vector.matrix.android.internal.auth.signin +package im.vector.matrix.android.internal.auth.login import com.squareup.moshi.Json import com.squareup.moshi.JsonClass diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/registration/DefaultRegistrationService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/registration/DefaultRegistrationService.kt deleted file mode 100644 index 68915fd990..0000000000 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/auth/registration/DefaultRegistrationService.kt +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2019 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 im.vector.matrix.android.internal.auth.registration - -import dagger.Lazy -import im.vector.matrix.android.api.auth.data.HomeServerConnectionConfig -import im.vector.matrix.android.api.auth.registration.RegistrationService -import im.vector.matrix.android.api.auth.registration.RegistrationWizard -import im.vector.matrix.android.internal.SessionManager -import im.vector.matrix.android.internal.auth.SessionParamsStore -import im.vector.matrix.android.internal.di.Unauthenticated -import im.vector.matrix.android.internal.network.RetrofitFactory -import im.vector.matrix.android.internal.util.MatrixCoroutineDispatchers -import okhttp3.OkHttpClient -import javax.inject.Inject - -internal class DefaultRegistrationService @Inject constructor(@Unauthenticated - private val okHttpClient: Lazy, - private val retrofitFactory: RetrofitFactory, - private val coroutineDispatchers: MatrixCoroutineDispatchers, - private val sessionParamsStore: SessionParamsStore, - private val sessionManager: SessionManager) : RegistrationService { - - override fun getOrCreateRegistrationWizard(homeServerConnectionConfig: HomeServerConnectionConfig): RegistrationWizard { - // TODO Persist the wizard? - return DefaultRegistrationWizard(homeServerConnectionConfig, - okHttpClient, - retrofitFactory, - coroutineDispatchers, - sessionParamsStore, - sessionManager) - } -} diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/MatrixComponent.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/MatrixComponent.kt index 97285bc75d..e8fa659d8d 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/MatrixComponent.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/MatrixComponent.kt @@ -22,8 +22,7 @@ import com.squareup.moshi.Moshi import dagger.BindsInstance import dagger.Component import im.vector.matrix.android.api.Matrix -import im.vector.matrix.android.api.auth.Authenticator -import im.vector.matrix.android.api.auth.registration.RegistrationService +import im.vector.matrix.android.api.auth.AuthenticationService import im.vector.matrix.android.internal.SessionManager import im.vector.matrix.android.internal.auth.AuthModule import im.vector.matrix.android.internal.auth.SessionParamsStore @@ -45,9 +44,7 @@ internal interface MatrixComponent { @Unauthenticated fun okHttpClient(): OkHttpClient - fun authenticator(): Authenticator - - fun registrationService(): RegistrationService + fun authenticationService(): AuthenticationService fun context(): Context diff --git a/vector/src/main/java/im/vector/riotx/VectorApplication.kt b/vector/src/main/java/im/vector/riotx/VectorApplication.kt index 20a17e55d4..5ca888fc2e 100644 --- a/vector/src/main/java/im/vector/riotx/VectorApplication.kt +++ b/vector/src/main/java/im/vector/riotx/VectorApplication.kt @@ -36,7 +36,7 @@ import com.github.piasy.biv.BigImageViewer import com.github.piasy.biv.loader.glide.GlideImageLoader import im.vector.matrix.android.api.Matrix import im.vector.matrix.android.api.MatrixConfiguration -import im.vector.matrix.android.api.auth.Authenticator +import im.vector.matrix.android.api.auth.AuthenticationService import im.vector.riotx.core.di.ActiveSessionHolder import im.vector.riotx.core.di.DaggerVectorComponent import im.vector.riotx.core.di.HasVectorInjector @@ -63,7 +63,7 @@ class VectorApplication : Application(), HasVectorInjector, MatrixConfiguration. lateinit var appContext: Context // font thread handler - @Inject lateinit var authenticator: Authenticator + @Inject lateinit var authenticationService: AuthenticationService @Inject lateinit var vectorConfiguration: VectorConfiguration @Inject lateinit var emojiCompatFontProvider: EmojiCompatFontProvider @Inject lateinit var emojiCompatWrapper: EmojiCompatWrapper @@ -115,8 +115,8 @@ class VectorApplication : Application(), HasVectorInjector, MatrixConfiguration. emojiCompatWrapper.init(fontRequest) notificationUtils.createNotificationChannels() - if (authenticator.hasAuthenticatedSessions() && !activeSessionHolder.hasActiveSession()) { - val lastAuthenticatedSession = authenticator.getLastAuthenticatedSession()!! + if (authenticationService.hasAuthenticatedSessions() && !activeSessionHolder.hasActiveSession()) { + val lastAuthenticatedSession = authenticationService.getLastAuthenticatedSession()!! activeSessionHolder.setActiveSession(lastAuthenticatedSession) lastAuthenticatedSession.configureAndStart(pushRuleTriggerListener, sessionListener) } diff --git a/vector/src/main/java/im/vector/riotx/core/di/ActiveSessionHolder.kt b/vector/src/main/java/im/vector/riotx/core/di/ActiveSessionHolder.kt index 3eccb668ea..12dfcbcaac 100644 --- a/vector/src/main/java/im/vector/riotx/core/di/ActiveSessionHolder.kt +++ b/vector/src/main/java/im/vector/riotx/core/di/ActiveSessionHolder.kt @@ -17,7 +17,7 @@ package im.vector.riotx.core.di import arrow.core.Option -import im.vector.matrix.android.api.auth.Authenticator +import im.vector.matrix.android.api.auth.AuthenticationService import im.vector.matrix.android.api.session.Session import im.vector.riotx.ActiveSessionDataSource import im.vector.riotx.features.crypto.keysrequest.KeyRequestHandler @@ -27,7 +27,7 @@ import javax.inject.Inject import javax.inject.Singleton @Singleton -class ActiveSessionHolder @Inject constructor(private val authenticator: Authenticator, +class ActiveSessionHolder @Inject constructor(private val authenticationService: AuthenticationService, private val sessionObservableStore: ActiveSessionDataSource, private val keyRequestHandler: KeyRequestHandler, private val incomingVerificationRequestHandler: IncomingVerificationRequestHandler @@ -64,7 +64,7 @@ class ActiveSessionHolder @Inject constructor(private val authenticator: Authent // TODO: Stop sync ? // fun switchToSession(sessionParams: SessionParams) { -// val newActiveSession = authenticator.getSession(sessionParams) +// val newActiveSession = authenticationService.getSession(sessionParams) // activeSession.set(newActiveSession) // } } diff --git a/vector/src/main/java/im/vector/riotx/core/di/VectorComponent.kt b/vector/src/main/java/im/vector/riotx/core/di/VectorComponent.kt index e06093a5c8..c4b2c40787 100644 --- a/vector/src/main/java/im/vector/riotx/core/di/VectorComponent.kt +++ b/vector/src/main/java/im/vector/riotx/core/di/VectorComponent.kt @@ -21,8 +21,7 @@ import android.content.res.Resources import dagger.BindsInstance import dagger.Component import im.vector.matrix.android.api.Matrix -import im.vector.matrix.android.api.auth.Authenticator -import im.vector.matrix.android.api.auth.registration.RegistrationService +import im.vector.matrix.android.api.auth.AuthenticationService import im.vector.matrix.android.api.session.Session import im.vector.riotx.ActiveSessionDataSource import im.vector.riotx.EmojiCompatFontProvider @@ -101,9 +100,7 @@ interface VectorComponent { fun incomingKeyRequestHandler(): KeyRequestHandler - fun authenticator(): Authenticator - - fun registrationService(): RegistrationService + fun authenticationService(): AuthenticationService fun bugReporter(): BugReporter diff --git a/vector/src/main/java/im/vector/riotx/core/di/VectorModule.kt b/vector/src/main/java/im/vector/riotx/core/di/VectorModule.kt index 3206c441e2..84441d88e1 100644 --- a/vector/src/main/java/im/vector/riotx/core/di/VectorModule.kt +++ b/vector/src/main/java/im/vector/riotx/core/di/VectorModule.kt @@ -24,8 +24,7 @@ import dagger.Binds import dagger.Module import dagger.Provides import im.vector.matrix.android.api.Matrix -import im.vector.matrix.android.api.auth.Authenticator -import im.vector.matrix.android.api.auth.registration.RegistrationService +import im.vector.matrix.android.api.auth.AuthenticationService import im.vector.matrix.android.api.session.Session import im.vector.riotx.features.navigation.DefaultNavigator import im.vector.riotx.features.navigation.Navigator @@ -65,14 +64,8 @@ abstract class VectorModule { @Provides @JvmStatic - fun providesAuthenticator(matrix: Matrix): Authenticator { - return matrix.authenticator() - } - - @Provides - @JvmStatic - fun providesRegistrationService(matrix: Matrix): RegistrationService { - return matrix.registrationService() + fun providesAuthenticationService(matrix: Matrix): AuthenticationService { + return matrix.authenticationService() } } diff --git a/vector/src/main/java/im/vector/riotx/features/MainActivity.kt b/vector/src/main/java/im/vector/riotx/features/MainActivity.kt index 02a206fc9b..7064ad0d49 100644 --- a/vector/src/main/java/im/vector/riotx/features/MainActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/MainActivity.kt @@ -21,9 +21,7 @@ import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AlertDialog import com.bumptech.glide.Glide -import im.vector.matrix.android.api.Matrix import im.vector.matrix.android.api.MatrixCallback -import im.vector.matrix.android.api.auth.Authenticator import im.vector.riotx.R import im.vector.riotx.core.di.ActiveSessionHolder import im.vector.riotx.core.di.ScreenComponent @@ -56,8 +54,6 @@ class MainActivity : VectorBaseActivity() { } } - @Inject lateinit var matrix: Matrix - @Inject lateinit var authenticator: Authenticator @Inject lateinit var sessionHolder: ActiveSessionHolder @Inject lateinit var errorFormatter: ErrorFormatter diff --git a/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt b/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt index eeb0419611..8e2ed99c29 100644 --- a/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt @@ -21,12 +21,11 @@ import com.airbnb.mvrx.* import com.squareup.inject.assisted.Assisted import com.squareup.inject.assisted.AssistedInject import im.vector.matrix.android.api.MatrixCallback -import im.vector.matrix.android.api.auth.AuthenticationWizard -import im.vector.matrix.android.api.auth.Authenticator +import im.vector.matrix.android.api.auth.login.LoginWizard +import im.vector.matrix.android.api.auth.AuthenticationService import im.vector.matrix.android.api.auth.data.HomeServerConnectionConfig import im.vector.matrix.android.api.auth.registration.FlowResult import im.vector.matrix.android.api.auth.registration.RegistrationResult -import im.vector.matrix.android.api.auth.registration.RegistrationService import im.vector.matrix.android.api.auth.registration.RegistrationWizard import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.util.Cancelable @@ -47,8 +46,7 @@ import java.util.concurrent.CancellationException * */ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginViewState, - private val authenticator: Authenticator, - private val registrationService: RegistrationService, + private val authenticationService: AuthenticationService, private val activeSessionHolder: ActiveSessionHolder, private val pushRuleTriggerListener: PushRuleTriggerListener, private val sessionListener: SessionListener) @@ -75,7 +73,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi private set private var registrationWizard: RegistrationWizard? = null - private var authenticationWizard: AuthenticationWizard? = null + private var loginWizard: LoginWizard? = null var serverType: ServerType = ServerType.MatrixOrg private set @@ -310,9 +308,9 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi } private fun handleResetPassword(action: LoginAction.ResetPassword) { - val safeAuthenticationWizard = authenticationWizard + val safeLoginWizard = loginWizard - if (safeAuthenticationWizard == null) { + if (safeLoginWizard == null) { setState { copy( asyncResetPassword = Fail(Throwable("Bad configuration")) @@ -327,7 +325,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi ) } - currentTask = safeAuthenticationWizard.resetPassword(action.email, action.newPassword, object : MatrixCallback { + currentTask = safeLoginWizard.resetPassword(action.email, action.newPassword, object : MatrixCallback { override fun onSuccess(data: Unit) { setState { copy( @@ -349,9 +347,9 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi } private fun handleResetPasswordMailConfirmed() { - val safeAuthenticationWizard = authenticationWizard + val safeLoginWizard = loginWizard - if (safeAuthenticationWizard == null) { + if (safeLoginWizard == null) { setState { copy( asyncResetMailConfirmed = Fail(Throwable("Bad configuration")) @@ -364,7 +362,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi ) } - currentTask = safeAuthenticationWizard.resetPasswordMailConfirmed(object : MatrixCallback { + currentTask = safeLoginWizard.resetPasswordMailConfirmed(object : MatrixCallback { override fun onSuccess(data: Unit) { setState { copy( @@ -386,9 +384,9 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi } private fun handleLogin(action: LoginAction.Login) { - val safeAuthenticationWizard = authenticationWizard + val safeLoginWizard = loginWizard - if (safeAuthenticationWizard == null) { + if (safeLoginWizard == null) { setState { copy( asyncLoginAction = Fail(Throwable("Bad configuration")) @@ -401,7 +399,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi ) } - currentTask = safeAuthenticationWizard.authenticate( + currentTask = safeLoginWizard.login( action.login, action.password, action.initialDeviceName, @@ -440,7 +438,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi ) } - registrationWizard = registrationService.getOrCreateRegistrationWizard(homeServerConnectionConfigFinal) + registrationWizard = authenticationService.getOrCreateRegistrationWizard(homeServerConnectionConfigFinal) currentTask = registrationWizard?.getRegistrationFlow(registrationCallback) } @@ -453,7 +451,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi // Notify the user _viewEvents.post(LoginViewEvents.RegistrationError(Throwable("Bad configuration"))) } else { - authenticationWizard = authenticator.createAuthenticationWizard(homeServerConnectionConfigFinal) + loginWizard = authenticationService.createLoginWizard(homeServerConnectionConfigFinal) } } @@ -479,7 +477,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi // Should not happen Timber.w("homeServerConnectionConfig is null") } else { - authenticator.createSessionFromSso(homeServerConnectionConfigFinal, action.credentials, object : MatrixCallback { + authenticationService.createSessionFromSso(homeServerConnectionConfigFinal, action.credentials, object : MatrixCallback { override fun onSuccess(data: Session) { onSessionCreated(data) } @@ -507,7 +505,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi currentTask?.cancel() currentTask = null homeServerConnectionConfig = newConfig - authenticationWizard = null + loginWizard = null registrationWizard = null val homeServerConnectionConfigFinal = homeServerConnectionConfig @@ -526,7 +524,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi ) } - currentTask = authenticator.getLoginFlow(homeServerConnectionConfigFinal, object : MatrixCallback { + currentTask = authenticationService.getLoginFlow(homeServerConnectionConfigFinal, object : MatrixCallback { override fun onFailure(failure: Throwable) { setState { copy(