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

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

Introduce getGPlayAuthOrThrow() method

To remove !! operator and to make it explicit for the calling method that
an exception can be thrown.
parent 971ed5d8
Loading
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -31,8 +31,15 @@ class AuthenticatorRepository @Inject constructor(
    private val authenticators: List<StoreAuthenticator>,
) {

    var gplayAuth: AuthData? = null
        get() = field ?: throw GPlayLoginException(false, "AuthData is not available!", getUserType())
    private var gPlayAuth: AuthData? = null

    fun getGPlayAuthOrThrow(): AuthData {
        return gPlayAuth ?: throw GPlayLoginException(false, "AuthData is not available!", getUserType())
    }

    fun setGPlayAuth(auth: AuthData) {
       gPlayAuth = auth
    }

    suspend fun getAuthObjects(clearAuthTypes: List<String> = listOf()): List<AuthObject> {

@@ -48,7 +55,7 @@ class AuthenticatorRepository @Inject constructor(
            authObjectsLocal.add(authObject)

            if (authObject is AuthObject.GPlayAuth) {
                gplayAuth = authObject.result.data
                gPlayAuth = authObject.result.data
            }
        }

@@ -74,7 +81,7 @@ class AuthenticatorRepository @Inject constructor(
    suspend fun getValidatedAuthData(): ResultSupreme<AuthData?> {
        val authDataValidator = (authenticators.find { it is AuthDataValidator } as AuthDataValidator)
        val validateAuthData = authDataValidator.validateAuthData()
        this.gplayAuth = validateAuthData.data
        this.gPlayAuth = validateAuthData.data
        return validateAuthData
    }

+13 −13
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ class PlayStoreRepository @Inject constructor(
    override suspend fun getHomeScreenData(): Any {
        val homeScreenData = mutableMapOf<String, List<App>>()
        val homeElements = createTopChartElements()
        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()

        homeElements.forEach {
            val chart = it.value.keys.iterator().next()
@@ -76,11 +76,11 @@ class PlayStoreRepository @Inject constructor(
        context.getString(R.string.movers_shakers_games) to mapOf(Chart.MOVERS_SHAKERS to TopChartsHelper.Type.GAME),
    )

    suspend fun getSearchResult(
    fun getSearchResult(
        query: String,
        subBundle: MutableSet<SearchBundle.SubBundle>?
    ): Pair<List<App>, MutableSet<SearchBundle.SubBundle>> {
        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()
        val searchHelper = SearchHelper(authData).using(gPlayHttpClient)

        Timber.d("Fetching search result for $query, subBundle: $subBundle")
@@ -105,7 +105,7 @@ class PlayStoreRepository @Inject constructor(
    }

    suspend fun getSearchSuggestions(query: String): List<SearchSuggestEntry> {
        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()

        val searchData = mutableListOf<SearchSuggestEntry>()
        withContext(Dispatchers.IO) {
@@ -116,7 +116,7 @@ class PlayStoreRepository @Inject constructor(
    }

    suspend fun getAppsByCategory(category: String, pageUrl: String?): StreamCluster {
        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()

        val subCategoryHelper = CategoryAppsHelper(authData).using(gPlayHttpClient)

@@ -133,7 +133,7 @@ class PlayStoreRepository @Inject constructor(
            return categoryList
        }

        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()

        withContext(Dispatchers.IO) {
            val categoryHelper = CategoryHelper(authData).using(gPlayHttpClient)
@@ -144,7 +144,7 @@ class PlayStoreRepository @Inject constructor(

    override suspend fun getAppDetails(packageNameOrId: String): App? {
        var appDetails: App?
        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()

        withContext(Dispatchers.IO) {
            val appDetailsHelper = AppDetailsHelper(authData).using(gPlayHttpClient)
@@ -155,7 +155,7 @@ class PlayStoreRepository @Inject constructor(

    suspend fun getAppsDetails(packageNamesOrIds: List<String>): List<App> {
        val appDetailsList = mutableListOf<App>()
        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()

        withContext(Dispatchers.IO) {
            val appDetailsHelper = AppDetailsHelper(authData).using(gPlayHttpClient)
@@ -188,7 +188,7 @@ class PlayStoreRepository @Inject constructor(
        offerType: Int
    ): List<File> {
        val downloadData = mutableListOf<File>()
        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()

        withContext(Dispatchers.IO) {
            val version = versionCode?.let { it as Int } ?: -1
@@ -205,7 +205,7 @@ class PlayStoreRepository @Inject constructor(
        offerType: Int
    ): List<File> {
        val downloadData = mutableListOf<File>()
        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()

        withContext(Dispatchers.IO) {
            val purchaseHelper = PurchaseHelper(authData).using(gPlayHttpClient)
@@ -220,7 +220,7 @@ class PlayStoreRepository @Inject constructor(
        appPackage: String,
        contentRating: ContentRating
    ): ContentRating {
        val authData = authenticatorRepository.gplayAuth!!
        val authData = authenticatorRepository.getGPlayAuthOrThrow()
        val contentRatingHelper = ContentRatingHelper(authData)

        return withContext(Dispatchers.IO) {
@@ -231,8 +231,8 @@ class PlayStoreRepository @Inject constructor(
        }
    }

    suspend fun getEnglishContentRating(packageName: String): ContentRating? {
        val authData = authenticatorRepository.gplayAuth ?: return null
    suspend fun getEnglishContentRating(packageName: String): ContentRating {
        val authData = authenticatorRepository.getGPlayAuthOrThrow()
        val contentRatingHelper = ContentRatingHelper(authData)

        return withContext(Dispatchers.IO) {
+1 −5
Original line number Diff line number Diff line
@@ -71,11 +71,7 @@ class SplitInstallBinder(
        coroutineScope.launch {
            try {
                authenticatorRepository.getValidatedAuthData()
                if (authenticatorRepository.gplayAuth == null) {
                    Timber.w(AUTH_DATA_ERROR_MESSAGE)
                    handleError(packageName)
                    return@launch
                }
                authenticatorRepository.getGPlayAuthOrThrow()
                downloadModule(packageName, moduleName)
            } catch (exception: GPlayLoginException) {
                Timber.w("$AUTH_DATA_ERROR_MESSAGE $exception")
+3 −2
Original line number Diff line number Diff line
@@ -200,7 +200,7 @@ class AgeRatingProvider : ContentProvider() {
    private fun canSetupAuthData() {
        val authData = dataStoreManager.getAuthData()
        if (authData.email.isNotBlank() && authData.authToken.isNotBlank()) {
            authenticatorRepository.gplayAuth = authData
            authenticatorRepository.setGPlayAuth(authData)
        }
    }

@@ -280,7 +280,8 @@ class AgeRatingProvider : ContentProvider() {

    private fun hasAuthData(): Boolean {
        return try {
            authenticatorRepository.gplayAuth != null
            authenticatorRepository.getGPlayAuthOrThrow()
            true
        } catch (e: GPlayLoginException) {
            Timber.e("No AuthData to check content rating")
            false