Loading app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt +2 −2 Original line number Diff line number Diff line Loading @@ -41,10 +41,10 @@ class AuthenticatorRepository @Inject constructor( for (authenticator in authenticators) { if (!authenticator.isStoreActive()) continue if (authenticator::class.java.simpleName in clearAuthTypes) { authenticator.clearSavedAuth() authenticator.logout() } val authObject = authenticator.getAuthObject() val authObject = authenticator.login() authObjectsLocal.add(authObject) if (authObject is AuthObject.GPlayAuth) { Loading app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt +2 −2 Original line number Diff line number Diff line Loading @@ -44,12 +44,12 @@ class CleanApkAuthenticator @Inject constructor( return loginData.isOpenSourceSelected() || loginData.isPWASelected() } override suspend fun getAuthObject(): AuthObject.CleanApk { override suspend fun login(): AuthObject.CleanApk { return AuthObject.CleanApk( ResultSupreme.Success(Unit), user, ) } override suspend fun clearSavedAuth() {} override suspend fun logout() {} } app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt +15 −15 Original line number Diff line number Diff line Loading @@ -25,16 +25,16 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.User import foundation.e.apps.data.login.api.GPlayApiFactory import foundation.e.apps.data.login.api.GPlayLoginInterface import foundation.e.apps.data.login.api.GoogleLoginApi import foundation.e.apps.data.login.api.LoginApiRepository import foundation.e.apps.data.login.api.GooglePlayLogger import foundation.e.apps.data.login.api.GoogleAccountLogger import foundation.e.apps.data.login.api.GooglePlayWrapper import timber.log.Timber import java.util.Locale import javax.inject.Inject import javax.inject.Singleton /** * Class to get GPlay auth data. Call [getAuthObject] to get an already saved auth data * Class to get GPlay auth data. Call [login] to get an already saved auth data * or to fetch a new one for first use. Handles auth validation internally. * * https://gitlab.e.foundation/e/backlog/-/issues/5680 Loading @@ -52,11 +52,11 @@ class GooglePlayAuthenticator @Inject constructor( private val user: User get() = loginData.getUserType() private val gPlayLoginInterface: GPlayLoginInterface private val logger: GooglePlayLogger get() = gPlayApiFactory.getGPlayApi(user) private val loginApiRepository: LoginApiRepository get() = LoginApiRepository(gPlayLoginInterface, user) private val loggerWrapper: GooglePlayWrapper get() = GooglePlayWrapper(logger, user) private val locale: Locale get() = context.resources.configuration.locales[0] Loading @@ -74,7 +74,7 @@ class GooglePlayAuthenticator @Inject constructor( /** * Main entry point to get GPlay auth data. */ override suspend fun getAuthObject(): AuthObject.GPlayAuth { override suspend fun login(): AuthObject.GPlayAuth { val savedAuth = getSavedAuthData() val authData = ( Loading Loading @@ -102,7 +102,7 @@ class GooglePlayAuthenticator @Inject constructor( return AuthObject.GPlayAuth(result, user) } override suspend fun clearSavedAuth() { override suspend fun logout() { loginData.clearAuthData() } Loading Loading @@ -155,7 +155,7 @@ class GooglePlayAuthenticator @Inject constructor( * Get AuthData for ANONYMOUS mode. */ private suspend fun getAuthData(): ResultSupreme<AuthData?> { return loginApiRepository.fetchAuthData("", "", locale).run { return loggerWrapper.login("", "", locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } Loading @@ -175,14 +175,14 @@ class GooglePlayAuthenticator @Inject constructor( * Use it to fetch auth data. */ if (aasToken.isNotBlank()) { return loginApiRepository.fetchAuthData(email, aasToken, locale) return loggerWrapper.login(email, aasToken, locale) } /* * If aasToken is not yet saved / made, fetch it from email and oauthToken. */ val aasTokenResponse = loginApiRepository.getAasToken( gPlayLoginInterface as GoogleLoginApi, val aasTokenResponse = loggerWrapper.getAasToken( logger as GoogleAccountLogger, email, oauthToken ) Loading @@ -206,7 +206,7 @@ class GooglePlayAuthenticator @Inject constructor( * Finally save the aasToken and create auth data. */ loginData.saveAasToken(aasTokenFetched) return loginApiRepository.fetchAuthData(email, aasTokenFetched, locale).run { return loggerWrapper.login(email, aasTokenFetched, locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } Loading @@ -228,5 +228,5 @@ class GooglePlayAuthenticator @Inject constructor( } private suspend fun isAuthDataValid(savedAuth: AuthData?) = savedAuth != null && loginApiRepository.login(savedAuth).exception == null savedAuth != null && loggerWrapper.validate(savedAuth).exception == null } app/src/main/java/foundation/e/apps/data/login/StoreAuthenticator.kt +2 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ package foundation.e.apps.data.login * Store (Google Play Store, Clean Apk) authenticator. */ interface StoreAuthenticator { suspend fun getAuthObject(): AuthObject suspend fun clearSavedAuth() suspend fun login(): AuthObject suspend fun logout() fun isStoreActive(): Boolean } app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginApi.kt→app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt +7 −7 Original line number Diff line number Diff line Loading @@ -26,20 +26,20 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.Properties class AnonymousLoginApi( class AnonymousLogger( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val gson: Gson, ) : GPlayLoginInterface { ) : GooglePlayLogger { private val tokenUrl: String = "https://eu.gtoken.ecloud.global" /** * Fetches AuthData for Anonymous login. * @param email Keep it blank (""). * @param aasToken Keep it blank (""). * Log anonymously a user * @param email email of the user * @param aasToken aasToken corresponding to the user */ override suspend fun fetchAuthData(email: String, aasToken: String): AuthData? { override suspend fun login(email: String, aasToken: String): AuthData? { var authData: AuthData? = null withContext(Dispatchers.IO) { val response = Loading Loading @@ -68,7 +68,7 @@ class AnonymousLoginApi( * Check if an AuthData is valid. Returns a [PlayResponse]. * Check [PlayResponse.isSuccessful] to see if the validation was successful. */ override suspend fun login(authData: AuthData): PlayResponse { override suspend fun validate(authData: AuthData): PlayResponse { var result = PlayResponse() withContext(Dispatchers.IO) { try { Loading Loading
app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt +2 −2 Original line number Diff line number Diff line Loading @@ -41,10 +41,10 @@ class AuthenticatorRepository @Inject constructor( for (authenticator in authenticators) { if (!authenticator.isStoreActive()) continue if (authenticator::class.java.simpleName in clearAuthTypes) { authenticator.clearSavedAuth() authenticator.logout() } val authObject = authenticator.getAuthObject() val authObject = authenticator.login() authObjectsLocal.add(authObject) if (authObject is AuthObject.GPlayAuth) { Loading
app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt +2 −2 Original line number Diff line number Diff line Loading @@ -44,12 +44,12 @@ class CleanApkAuthenticator @Inject constructor( return loginData.isOpenSourceSelected() || loginData.isPWASelected() } override suspend fun getAuthObject(): AuthObject.CleanApk { override suspend fun login(): AuthObject.CleanApk { return AuthObject.CleanApk( ResultSupreme.Success(Unit), user, ) } override suspend fun clearSavedAuth() {} override suspend fun logout() {} }
app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt +15 −15 Original line number Diff line number Diff line Loading @@ -25,16 +25,16 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.User import foundation.e.apps.data.login.api.GPlayApiFactory import foundation.e.apps.data.login.api.GPlayLoginInterface import foundation.e.apps.data.login.api.GoogleLoginApi import foundation.e.apps.data.login.api.LoginApiRepository import foundation.e.apps.data.login.api.GooglePlayLogger import foundation.e.apps.data.login.api.GoogleAccountLogger import foundation.e.apps.data.login.api.GooglePlayWrapper import timber.log.Timber import java.util.Locale import javax.inject.Inject import javax.inject.Singleton /** * Class to get GPlay auth data. Call [getAuthObject] to get an already saved auth data * Class to get GPlay auth data. Call [login] to get an already saved auth data * or to fetch a new one for first use. Handles auth validation internally. * * https://gitlab.e.foundation/e/backlog/-/issues/5680 Loading @@ -52,11 +52,11 @@ class GooglePlayAuthenticator @Inject constructor( private val user: User get() = loginData.getUserType() private val gPlayLoginInterface: GPlayLoginInterface private val logger: GooglePlayLogger get() = gPlayApiFactory.getGPlayApi(user) private val loginApiRepository: LoginApiRepository get() = LoginApiRepository(gPlayLoginInterface, user) private val loggerWrapper: GooglePlayWrapper get() = GooglePlayWrapper(logger, user) private val locale: Locale get() = context.resources.configuration.locales[0] Loading @@ -74,7 +74,7 @@ class GooglePlayAuthenticator @Inject constructor( /** * Main entry point to get GPlay auth data. */ override suspend fun getAuthObject(): AuthObject.GPlayAuth { override suspend fun login(): AuthObject.GPlayAuth { val savedAuth = getSavedAuthData() val authData = ( Loading Loading @@ -102,7 +102,7 @@ class GooglePlayAuthenticator @Inject constructor( return AuthObject.GPlayAuth(result, user) } override suspend fun clearSavedAuth() { override suspend fun logout() { loginData.clearAuthData() } Loading Loading @@ -155,7 +155,7 @@ class GooglePlayAuthenticator @Inject constructor( * Get AuthData for ANONYMOUS mode. */ private suspend fun getAuthData(): ResultSupreme<AuthData?> { return loginApiRepository.fetchAuthData("", "", locale).run { return loggerWrapper.login("", "", locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } Loading @@ -175,14 +175,14 @@ class GooglePlayAuthenticator @Inject constructor( * Use it to fetch auth data. */ if (aasToken.isNotBlank()) { return loginApiRepository.fetchAuthData(email, aasToken, locale) return loggerWrapper.login(email, aasToken, locale) } /* * If aasToken is not yet saved / made, fetch it from email and oauthToken. */ val aasTokenResponse = loginApiRepository.getAasToken( gPlayLoginInterface as GoogleLoginApi, val aasTokenResponse = loggerWrapper.getAasToken( logger as GoogleAccountLogger, email, oauthToken ) Loading @@ -206,7 +206,7 @@ class GooglePlayAuthenticator @Inject constructor( * Finally save the aasToken and create auth data. */ loginData.saveAasToken(aasTokenFetched) return loginApiRepository.fetchAuthData(email, aasTokenFetched, locale).run { return loggerWrapper.login(email, aasTokenFetched, locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } Loading @@ -228,5 +228,5 @@ class GooglePlayAuthenticator @Inject constructor( } private suspend fun isAuthDataValid(savedAuth: AuthData?) = savedAuth != null && loginApiRepository.login(savedAuth).exception == null savedAuth != null && loggerWrapper.validate(savedAuth).exception == null }
app/src/main/java/foundation/e/apps/data/login/StoreAuthenticator.kt +2 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ package foundation.e.apps.data.login * Store (Google Play Store, Clean Apk) authenticator. */ interface StoreAuthenticator { suspend fun getAuthObject(): AuthObject suspend fun clearSavedAuth() suspend fun login(): AuthObject suspend fun logout() fun isStoreActive(): Boolean }
app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginApi.kt→app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt +7 −7 Original line number Diff line number Diff line Loading @@ -26,20 +26,20 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.Properties class AnonymousLoginApi( class AnonymousLogger( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val gson: Gson, ) : GPlayLoginInterface { ) : GooglePlayLogger { private val tokenUrl: String = "https://eu.gtoken.ecloud.global" /** * Fetches AuthData for Anonymous login. * @param email Keep it blank (""). * @param aasToken Keep it blank (""). * Log anonymously a user * @param email email of the user * @param aasToken aasToken corresponding to the user */ override suspend fun fetchAuthData(email: String, aasToken: String): AuthData? { override suspend fun login(email: String, aasToken: String): AuthData? { var authData: AuthData? = null withContext(Dispatchers.IO) { val response = Loading Loading @@ -68,7 +68,7 @@ class AnonymousLoginApi( * Check if an AuthData is valid. Returns a [PlayResponse]. * Check [PlayResponse.isSuccessful] to see if the validation was successful. */ override suspend fun login(authData: AuthData): PlayResponse { override suspend fun validate(authData: AuthData): PlayResponse { var result = PlayResponse() withContext(Dispatchers.IO) { try { Loading