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

Commit 6ac04e09 authored by Sayantan Roychowdhury's avatar Sayantan Roychowdhury
Browse files

Merge branch '5508-skip_login' into 'main'

Issue 5508: Skip login token validation

See merge request !244
parents f5fa0d8c 492fbd30
Loading
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -107,6 +107,13 @@ class FusedAPIImpl @Inject constructor(
        return true
    }

    fun isCategoriesEmpty(fusedCategories: List<FusedCategory>): Boolean {
        fusedCategories.forEach {
            if (it.title.isNotEmpty()) return false
        }
        return true
    }

    fun getApplicationCategoryPreference(): String {
        return preferenceManagerModule.preferredApplicationType()
    }
@@ -168,7 +175,11 @@ class FusedAPIImpl @Inject constructor(

        setHomeErrorMessage(apiStatus, source)

        scope.emit(ResultSupreme.create(apiStatus, priorList))
        scope.emit(
            ResultSupreme.create(apiStatus, priorList.toList()).apply {
                otherPayload = source.name
            }
        )
    }

    private fun setHomeErrorMessage(apiStatus: ResultStatus, source: Source) {
@@ -1314,7 +1325,7 @@ class FusedAPIImpl @Inject constructor(
                    updateFilterLevel(authData)
                }
            }
            list.add(FusedHome(it.key, result))
            list.add(FusedHome(it.key, result, source = APP_TYPE_ANY))
        }
        return list
    }
+4 −0
Original line number Diff line number Diff line
@@ -86,6 +86,10 @@ class FusedAPIRepository @Inject constructor(private val fusedAPIImpl: FusedAPII
        return fusedAPIImpl.isFusedHomesEmpty(fusedHomes)
    }

    fun isCategoriesEmpty(fusedCategories: List<FusedCategory>): Boolean {
        return fusedAPIImpl.isCategoriesEmpty(fusedCategories)
    }

    fun getApplicationCategoryPreference(): String {
        return fusedAPIImpl.getApplicationCategoryPreference()
    }
+26 −16
Original line number Diff line number Diff line
@@ -26,9 +26,12 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import foundation.e.apps.api.fused.FusedAPIRepository
import foundation.e.apps.api.fused.data.FusedCategory
import foundation.e.apps.login.AuthObject
import foundation.e.apps.utils.enums.AppTag
import foundation.e.apps.utils.enums.ResultStatus
import foundation.e.apps.utils.enums.User
import foundation.e.apps.utils.exceptions.CleanApkException
import foundation.e.apps.utils.exceptions.GPlayException
import foundation.e.apps.utils.exceptions.GPlayLoginException
import foundation.e.apps.utils.parentFragment.LoadingViewModel
import kotlinx.coroutines.launch
import javax.inject.Inject
@@ -49,25 +52,33 @@ class CategoriesViewModel @Inject constructor(
        super.onLoadData(authObjectList, { successAuthList, _ ->

            successAuthList.find { it is AuthObject.GPlayAuth }?.run {
                getCategoriesList(type, result.data!! as AuthData)
                getCategoriesList(type, result.data!! as AuthData, this.user)
                return@onLoadData
            }

            successAuthList.find { it is AuthObject.CleanApk }?.run {
                getCategoriesList(type, AuthData("", ""))
                getCategoriesList(type, AuthData("", ""), this.user)
                return@onLoadData
            }
        }, retryBlock)
    }

    fun getCategoriesList(type: Category.Type, authData: AuthData) {
    fun getCategoriesList(type: Category.Type, authData: AuthData, user: User) {
        viewModelScope.launch {
            val categoriesData = fusedAPIRepository.getCategoriesList(type, authData)
            categoriesList.postValue(categoriesData)

            val status = categoriesData.third

            if (status != ResultStatus.OK) {
            val categoriesList = categoriesData.first

            if (status == ResultStatus.OK) {
                if (categoriesList.all { it.tag is AppTag.GPlay } && isCategoriesEmpty(categoriesList)) {
                    exceptionsList.add(GPlayLoginException(false, "Received empty Categories", user))
                }
                return@launch
            }

            val exception =
                if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank())
                    GPlayException(
@@ -83,9 +94,8 @@ class CategoriesViewModel @Inject constructor(
            exceptionsLiveData.postValue(exceptionsList)
        }
    }
    }

    fun isCategoriesEmpty(): Boolean {
        return categoriesList.value?.first?.isEmpty() ?: true
    fun isCategoriesEmpty(fusedCategories: List<FusedCategory>): Boolean {
        return fusedAPIRepository.isCategoriesEmpty(fusedCategories)
    }
}
+17 −5
Original line number Diff line number Diff line
@@ -28,8 +28,11 @@ import foundation.e.apps.api.fused.FusedAPIRepository
import foundation.e.apps.api.fused.data.FusedApp
import foundation.e.apps.api.fused.data.FusedHome
import foundation.e.apps.login.AuthObject
import foundation.e.apps.utils.enums.Source
import foundation.e.apps.utils.enums.User
import foundation.e.apps.utils.exceptions.CleanApkException
import foundation.e.apps.utils.exceptions.GPlayException
import foundation.e.apps.utils.exceptions.GPlayLoginException
import foundation.e.apps.utils.parentFragment.LoadingViewModel
import kotlinx.coroutines.launch
import javax.inject.Inject
@@ -55,12 +58,12 @@ class HomeViewModel @Inject constructor(
        super.onLoadData(authObjectList, { successAuthList, _ ->

            successAuthList.find { it is AuthObject.GPlayAuth }?.run {
                getHomeScreenData(result.data!! as AuthData, lifecycleOwner)
                getHomeScreenData(result.data!! as AuthData, this.user, lifecycleOwner)
                return@onLoadData
            }

            successAuthList.find { it is AuthObject.CleanApk }?.run {
                getHomeScreenData(AuthData("", ""), lifecycleOwner)
                getHomeScreenData(AuthData("", ""), this.user, lifecycleOwner)
                return@onLoadData
            }
        }, retryBlock)
@@ -68,13 +71,22 @@ class HomeViewModel @Inject constructor(

    fun getHomeScreenData(
        authData: AuthData,
        user: User,
        lifecycleOwner: LifecycleOwner,
    ) {
        viewModelScope.launch {
            fusedAPIRepository.getHomeScreenData(authData).observe(lifecycleOwner) {
                homeScreenData.postValue(it)

                if (it.isSuccess()) return@observe
                val homeList = it.data ?: emptyList()
                val source = it.otherPayload?.toString() ?: ""

                if (it.isSuccess()) {
                    if (homeList.all { source == Source.GPLAY.name } && isFusedHomesEmpty(homeList)) {
                        exceptionsList.add(GPlayLoginException(false, "Received empty Home", user))
                    }
                    return@observe
                }

                val exception =
                    if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank())
@@ -97,8 +109,8 @@ class HomeViewModel @Inject constructor(
        return fusedAPIRepository.getApplicationCategoryPreference()
    }

    fun isFusedHomesEmpty(): Boolean {
        return homeScreenData.value?.data?.let {
    fun isFusedHomesEmpty(fusedHomes: List<FusedHome>): Boolean {
        return fusedHomes.let {
            fusedAPIRepository.isFusedHomesEmpty(it)
        } ?: true
    }
+3 −2
Original line number Diff line number Diff line
@@ -35,8 +35,9 @@ import foundation.e.apps.utils.enums.User
sealed class AuthObject {

    abstract val result: ResultSupreme<*>
    abstract val user: User

    class GPlayAuth(override val result: ResultSupreme<AuthData?>, val user: User) : AuthObject()
    class CleanApk(override val result: ResultSupreme<Unit>, val user: User) : AuthObject()
    class GPlayAuth(override val result: ResultSupreme<AuthData?>, override val user: User) : AuthObject()
    class CleanApk(override val result: ResultSupreme<Unit>, override val user: User) : AuthObject()
    // Add more auth types here
}
Loading