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

Verified Commit 84a1faca authored by Fahim M. Choudhury's avatar Fahim M. Choudhury
Browse files

fix: avoid incomplete CleanAPK batch details

Fall back to per-package detail fetches so list items keep the Open Source label when batch availability data is incomplete.
parent 78c26e01
Loading
Loading
Loading
Loading
+1 −30
Original line number Diff line number Diff line
@@ -107,38 +107,9 @@ class CleanApkAppsRepository @Inject constructor(
    }

    override suspend fun getAppDetailsForPackages(packageNames: List<String>): List<Application> {
        if (packageNames.isEmpty()) {
            return emptyList()
        }

        val response = cleanApkRetrofit.checkAvailablePackages(
            packages = packageNames,
            architectures = SystemInfoProvider.getSupportedArchitectureList()
        )
        val search = response.body()
        if (!response.isSuccessful || search?.success != true) {
        return packageNames.map { getAppDetails(it) }
    }

        val apps = search.apps
        val appsByPackage = apps.associateBy { it.package_name }

        val details = mutableListOf<Application>()
        for (packageName in packageNames) {
            val app = appsByPackage[packageName] ?: continue
            val response = cleanApkRetrofit.getAppOrPWADetailsByID(
                id = app._id,
                architectures = SystemInfoProvider.getSupportedArchitectureList(),
                type = null
            )
            response.body()?.app?.let {
                details.add(it.copy(source = if (it.is_pwa) Source.PWA else Source.OPEN_SOURCE))
            }
        }

        return details
    }

    override suspend fun getSearchResults(pattern: String): List<Application> {
        return cleanApkSearchHelper.getSearchResults(
            keyword = pattern,
+1 −35
Original line number Diff line number Diff line
@@ -101,43 +101,9 @@ class CleanApkPwaRepository @Inject constructor(
    }

    override suspend fun getAppDetailsForPackages(packageNames: List<String>): List<Application> {
        if (packageNames.isEmpty()) {
            return emptyList()
        }

        val response = cleanApkRetrofit.checkAvailablePackages(
            packageNames,
            CleanApkRetrofit.APP_TYPE_PWA
        )
        val search = response.body()
        if (!response.isSuccessful || search?.success != true) {
        return packageNames.map { getAppDetails(it) }
    }

        val apps = search.apps
        val appsByPackage = apps.associateBy { it.package_name }

        val details = mutableListOf<Application>()
        for (packageName in packageNames) {
            val app = appsByPackage[packageName] ?: continue
            val response = cleanApkRetrofit.getAppOrPWADetailsByID(app._id, null, null)
            response.body()?.app?.let {
                details.add(
                    if (it.is_pwa) {
                        it.copy(
                            source = Source.PWA,
                            type = Type.PWA
                        )
                    } else {
                        it
                    }
                )
            }
        }

        return details
    }

    override suspend fun getSearchResults(pattern: String): List<Application> {
        return cleanApkSearchHelper.getSearchResults(
            keyword = pattern,