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

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

Introduce Stores class

parent 37a5459d
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -19,8 +19,9 @@
package foundation.e.apps.data

import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.data.Home

interface StoreRepository {
    suspend fun getHomeScreenData(): Map<String, List<Application>>
    suspend fun getHomeScreenData(list: MutableList<Home>): List<Home>
    suspend fun getAppDetails(packageNameOrId: String): Application
}
+27 −0
Original line number Diff line number Diff line
package foundation.e.apps.data

import foundation.e.apps.data.cleanapk.repositories.CleanApkAppsRepository
import foundation.e.apps.data.cleanapk.repositories.CleanApkPwaRepository
import foundation.e.apps.data.enums.Source
import foundation.e.apps.data.playstore.PlayStoreRepository
import javax.inject.Inject
import javax.inject.Singleton

@Singleton
class Stores @Inject constructor(
    playStoreRepository: PlayStoreRepository,
    cleanApkAppsRepository: CleanApkAppsRepository,
    cleanApkPwaRepository: CleanApkPwaRepository,
) {
    private val stores = mutableMapOf<Source, StoreRepository>()

    fun getStores(): Map<Source, StoreRepository> {
        return stores
    }

    init {
        stores[Source.OPEN] = cleanApkAppsRepository
        stores[Source.PWA] = cleanApkPwaRepository
        stores[Source.GPLAY] = playStoreRepository
    }
}
 No newline at end of file
+3 −28
Original line number Diff line number Diff line
@@ -32,15 +32,14 @@ import javax.inject.Singleton

@Singleton
class ApplicationDataManager @Inject constructor(
    private val gPlayRepository: PlayStoreRepository,
    private val appLoungePackageManager: AppLoungePackageManager,
    private val pwaManager: PwaManager
) {
    suspend fun updateFilterLevel(application: Application) {
    fun updateFilterLevel(application: Application) {
        application.filterLevel = getAppFilterLevel(application)
    }

    suspend fun prepareApps(
    fun prepareApps(
        appList: List<Application>,
        list: MutableList<Home>,
        value: String
@@ -55,16 +54,14 @@ class ApplicationDataManager @Inject constructor(
        }
    }

    suspend fun getAppFilterLevel(application: Application): FilterLevel {
    fun getAppFilterLevel(application: Application): FilterLevel {
        return when {
            application.package_name.isBlank() -> FilterLevel.UNKNOWN
            !application.isFree && application.price.isBlank() -> FilterLevel.UI
            application.origin == Origin.CLEANAPK -> FilterLevel.NONE
            application.origin == Origin.GITLAB_RELEASES -> FilterLevel.NONE
            !isRestricted(application) -> FilterLevel.NONE
            !isApplicationVisible(application) -> FilterLevel.DATA
            application.originalSize == 0L -> FilterLevel.UI
            !isDownloadable(application) -> FilterLevel.UI
            else -> FilterLevel.NONE
        }
    }
@@ -73,28 +70,6 @@ class ApplicationDataManager @Inject constructor(
        return application.restriction != Constants.Restriction.NOT_RESTRICTED
    }

    /*
     * Some apps are simply not visible.
     * Example: com.skype.m2
     */
    private suspend fun isApplicationVisible(application: Application): Boolean {
        return kotlin.runCatching { gPlayRepository.getAppDetails(application.package_name) }.isSuccess
    }

    /*
     * Some apps are visible but not downloadable.
     * Example: com.riotgames.league.wildrift
     */
    private suspend fun isDownloadable(application: Application): Boolean {
        return kotlin.runCatching {
            gPlayRepository.getDownloadInfo(
                application.package_name,
                application.latest_version_code,
                application.offer_type,
            )
        }.isSuccess
    }

    fun updateStatus(application: Application) {
        if (application.status != Status.INSTALLATION_ISSUE) {
            application.status = getFusedAppInstallationStatus(application)
+2 −2
Original line number Diff line number Diff line
@@ -52,8 +52,8 @@ class ApplicationRepository @Inject constructor(
    private val downloadInfoApi: DownloadInfoApi
) {

    suspend fun getHomeScreenData(authData: AuthData): LiveData<ResultSupreme<List<Home>>> {
        return homeApi.fetchHomeScreenData(authData)
    suspend fun getHomeScreenData(): LiveData<ResultSupreme<List<Home>>> {
        return homeApi.fetchHomeScreenData()
    }

    fun getSelectedAppTypes(): List<String> {
+1 −3
Original line number Diff line number Diff line
@@ -24,7 +24,5 @@ import foundation.e.apps.data.ResultSupreme
import foundation.e.apps.data.application.data.Home

interface HomeApi {
    suspend fun fetchHomeScreenData(
        authData: AuthData,
    ): LiveData<ResultSupreme<List<Home>>>
    suspend fun fetchHomeScreenData(): LiveData<ResultSupreme<List<Home>>>
}
Loading