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

Commit 0fb72326 authored by Jonathan Klee's avatar Jonathan Klee
Browse files

Fix deep links

parent a76999e4
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -78,10 +78,6 @@ class ApplicationRepository @Inject constructor(
        return appsApi.getApplicationDetails(id, packageName, source)
    }

    suspend fun getCleanapkAppDetails(packageName: String): Pair<Application, ResultStatus> {
        return appsApi.getCleanapkAppDetails(packageName)
    }

    suspend fun updateFusedDownloadWithDownloadingInfo(
        source: Source,
        appInstall: AppInstall
+12 −60
Original line number Diff line number Diff line
@@ -18,15 +18,9 @@

package foundation.e.apps.data.application.apps

import android.content.Context
import com.aurora.gplayapi.data.models.App
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.data.AppSourcesContainer
import foundation.e.apps.data.Stores
import foundation.e.apps.data.application.ApplicationDataManager
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.utils.toApplication
import foundation.e.apps.data.cleanapk.data.search.Search
import foundation.e.apps.data.enums.FilterLevel
import foundation.e.apps.data.enums.ResultStatus
import foundation.e.apps.data.enums.Status
@@ -38,30 +32,17 @@ import javax.inject.Inject
import foundation.e.apps.data.enums.Source

class AppsApiImpl @Inject constructor(
    @ApplicationContext private val context: Context,
    private val appLoungePreference: AppLoungePreference,
    private val appSources: AppSourcesContainer,
    private val stores: Stores,
    private val applicationDataManager: ApplicationDataManager
) : AppsApi {

    companion object {
        private const val KEY_SEARCH_PACKAGE_NAME = "package_name"
    }

    override suspend fun getCleanapkAppDetails(packageName: String): Pair<Application, ResultStatus> {
        var application = Application()
        val result = handleNetworkResult {
            val result = appSources.cleanApkAppsRepo.getSearchResult(
                packageName,
                KEY_SEARCH_PACKAGE_NAME
            ).body()

            if (result?.hasSingleResult() == true) {
                application =
                    appSources.cleanApkAppsRepo.getAppDetails(result.apps[0]._id)
            }

            application = stores.getStores()[Source.OPEN_SOURCE]?.getAppDetails(packageName) ?: Application()
            application.source = Source.OPEN_SOURCE
            application.updateType()
            application.updateFilterLevel()
        }

@@ -107,13 +88,11 @@ class AppsApiImpl @Inject constructor(
    private suspend fun getAppDetailsListFromCleanApk(
        packageNameList: List<String>,
    ): Pair<List<Application>, ResultStatus> {
        var status = ResultStatus.OK
        val status = ResultStatus.OK
        val applicationList = mutableListOf<Application>()

        for (packageName in packageNameList) {
            getCleanApkSearchResultByPackageName(packageName).data?.run {
                handleCleanApkSearch(applicationList)
            }
            applicationList.add(stores.getStores()[Source.OPEN_SOURCE]?.getAppDetails(packageName) ?: Application())
        }

        return Pair(applicationList, status)
@@ -124,13 +103,12 @@ class AppsApiImpl @Inject constructor(
    ): Pair<List<Application>, ResultStatus> {
        val applicationList = mutableListOf<Application>()

        val result = handleNetworkResult {
            appSources.gplayRepo.getAppsDetails(packageNameList).forEach { app ->
        for (packageName in packageNameList) {
            val app = stores.getStores()[Source.PLAY_STORE]?.getAppDetails(packageName) ?: Application()
            handleFilteredApps(app, applicationList)
        }
        }

        return Pair(applicationList, result.getResultStatus())
        return Pair(applicationList, ResultStatus.OK)
    }

    /*
@@ -140,44 +118,19 @@ class AppsApiImpl @Inject constructor(
     * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5174
     */
    private fun handleFilteredApps(
        app: App,
        app: Application,
        applicationList: MutableList<Application>
    ) {
        val application = app.toApplication(context)
        val filter = applicationDataManager.getAppFilterLevel(application)
        val filter = applicationDataManager.getAppFilterLevel(app)
        if (filter.isUnFiltered()) {
            applicationList.add(
                application.apply {
                app.apply {
                    filterLevel = filter
                }
            )
        }
    }

    private suspend fun getCleanApkSearchResultByPackageName(
        packageName: String,
    ) = handleNetworkResult {
        appSources.cleanApkAppsRepo.getSearchResult(
            packageName,
            KEY_SEARCH_PACKAGE_NAME
        ).body()
    }

    private fun Search.handleCleanApkSearch(
        applicationList: MutableList<Application>
    ) {
        if (hasSingleResult()) {
            applicationList.add(
                apps[0].apply {
                    updateFilterLevel()
                }
            )
        }
    }

    private fun Search.hasSingleResult() =
        apps.isNotEmpty() && numberOfResults == 1

    override suspend fun getApplicationDetails(
        id: String,
        packageName: String,
@@ -191,7 +144,6 @@ class AppsApiImpl @Inject constructor(
                ?: throw IllegalStateException("Could not get store")

            application = store.getAppDetails(packageName)

            application.let {
                applicationDataManager.updateStatus(it)
                it.source = source
+0 −11
Original line number Diff line number Diff line
@@ -57,17 +57,6 @@ class CleanApkAppsRepository @Inject constructor(
        return list
    }

    override suspend fun getSearchResult(query: String, searchBy: String?): Response<Search> {
        return cleanApkRetrofit.searchApps(
            query,
            CleanApkRetrofit.APP_SOURCE_FOSS,
            CleanApkRetrofit.APP_TYPE_ANY,
            NUMBER_OF_ITEMS,
            NUMBER_OF_PAGES,
            searchBy
        )
    }

    override suspend fun getAppsByCategory(
        category: String,
        paginationParameter: Any?
+0 −11
Original line number Diff line number Diff line
@@ -58,17 +58,6 @@ class CleanApkPwaRepository @Inject constructor(
        return list
    }

    override suspend fun getSearchResult(query: String, searchBy: String?): Response<Search> {
        return cleanApkRetrofit.searchApps(
            query,
            CleanApkRetrofit.APP_SOURCE_ANY,
            CleanApkRetrofit.APP_TYPE_PWA,
            20,
            1,
            searchBy
        )
    }

    override suspend fun getAppsByCategory(category: String, paginationParameter: Any?): Response<Search> {
        return cleanApkRetrofit.listApps(
            category,
+0 −1
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ const val NUMBER_OF_ITEMS = 20

const val NUMBER_OF_PAGES = 1
interface CleanApkRepository : StoreRepository {
    suspend fun getSearchResult(query: String, searchBy: String? = null): Response<Search>
    suspend fun getAppsByCategory(category: String, paginationParameter: Any? = null): Response<Search>
    suspend fun getCategories(): Response<Categories>
    suspend fun checkAvailablePackages(packageNames: List<String>): Response<Search>
Loading