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

Commit 3685137b authored by Hasib Prince's avatar Hasib Prince
Browse files

refactor: reused validation code

parent 79b55d3e
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4,5 +4,5 @@ import com.aurora.gplayapi.data.models.AuthData
import foundation.e.apps.api.ResultSupreme

interface AuthDataValidator {
    suspend fun fetchValidatedAuthData(): ResultSupreme<AuthData?>
    suspend fun fetchAuthData(): ResultSupreme<AuthData?>
}
 No newline at end of file
+26 −22
Original line number Diff line number Diff line
@@ -19,11 +19,9 @@ package foundation.e.apps.login

import android.content.Context
import com.aurora.gplayapi.data.models.AuthData
import com.aurora.gplayapi.helpers.AuthValidator
import com.google.gson.Gson
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.api.ResultSupreme
import foundation.e.apps.api.gplay.utils.GPlayHttpClient
import foundation.e.apps.login.api.GPlayApiFactory
import foundation.e.apps.login.api.GPlayLoginInterface
import foundation.e.apps.login.api.GoogleLoginApi
@@ -31,6 +29,7 @@ import foundation.e.apps.login.api.LoginApiRepository
import foundation.e.apps.utils.enums.ResultStatus
import foundation.e.apps.utils.enums.User
import foundation.e.apps.utils.exceptions.GPlayValidationException
import timber.log.Timber
import java.util.Locale
import javax.inject.Inject
import javax.inject.Singleton
@@ -51,9 +50,6 @@ class LoginSourceGPlay @Inject constructor(
    @Inject
    lateinit var gPlayApiFactory: GPlayApiFactory

    @Inject
    lateinit var gPlayHttpClient: GPlayHttpClient

    private val user: User
        get() = loginDataStore.getUserType()

@@ -257,13 +253,21 @@ class LoginSourceGPlay @Inject constructor(
        }
    }

    override suspend fun fetchValidatedAuthData(): ResultSupreme<AuthData?> {
    override suspend fun fetchAuthData(): ResultSupreme<AuthData?> {
        val savedAuth = getSavedAuthData()
        val isValid = AuthValidator(savedAuth!!).using(gPlayHttpClient).isValid()
        if (!isValid) {
            return generateAuthData()
        if (!isAuthDataValid(savedAuth)) {
            Timber.i("Validating AuthData...")
            val authData = generateAuthData()
            authData.data?.let {
                saveAuthData(it)
                return authData
            }
            return ResultSupreme.create(ResultStatus.UNKNOWN)
        }

        return ResultSupreme.create(ResultStatus.OK, savedAuth)
    }

    private suspend fun isAuthDataValid(savedAuth: AuthData?) =
        savedAuth != null && loginApiRepository.login(savedAuth).exception == null
}
+1 −1
Original line number Diff line number Diff line
@@ -63,6 +63,6 @@ class LoginSourceRepository @Inject constructor(

    suspend fun getValidatedAuthData(): ResultSupreme<AuthData?> {
        val authDataValidator = (sources.find { it is AuthDataValidator } as AuthDataValidator)
        return authDataValidator.fetchValidatedAuthData()
        return authDataValidator.fetchAuthData()
    }
}