Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4894a39 authored by Jonathan Klee's avatar Jonathan Klee
Browse files

Rename GPlayLoginInterface to GooglePlayLogger

parent baadf6ac
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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) {
+2 −2
Original line number Diff line number Diff line
@@ -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() {}
}
+15 −15
Original line number Diff line number Diff line
@@ -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
@@ -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]
@@ -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 = (
@@ -102,7 +102,7 @@ class GooglePlayAuthenticator @Inject constructor(
        return AuthObject.GPlayAuth(result, user)
    }

    override suspend fun clearSavedAuth() {
    override suspend fun logout() {
        loginData.clearAuthData()
    }

@@ -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
        }
@@ -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
        )
@@ -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
        }
@@ -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
}
+2 −2
Original line number Diff line number Diff line
@@ -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
}
+7 −7
Original line number Diff line number Diff line
@@ -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 =
@@ -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