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

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

Sanitize getAppDetails() calls

parent 865c4604
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -22,5 +22,5 @@ import foundation.e.apps.data.application.data.Application

interface StoreRepository {
    suspend fun getHomeScreenData(): Map<String, List<Application>>
    suspend fun getAppDetails(packageNameOrId: String): Any?
    suspend fun getAppDetails(packageNameOrId: String): Application
}
+5 −8
Original line number Diff line number Diff line
@@ -60,8 +60,7 @@ class AppsApiImpl @Inject constructor(

            if (result?.hasSingleResult() == true) {
                application =
                    (appSources.cleanApkAppsRepo.getAppDetails(result.apps[0]._id)
                            as Response<CleanApkApplication>).body()?.app ?: Application()
                    appSources.cleanApkAppsRepo.getAppDetails(result.apps[0]._id)
            }

            application.updateFilterLevel(null)
@@ -189,18 +188,16 @@ class AppsApiImpl @Inject constructor(
        authData: AuthData,
        origin: Origin
    ): Pair<Application, ResultStatus> {
        var application: Application?
        var application: Application

        val result = handleNetworkResult {
            application = if (origin == Origin.CLEANAPK) {
                (appSources.cleanApkAppsRepo.getAppDetails(id)
                        as Response<CleanApkApplication>).body()?.app
                appSources.cleanApkAppsRepo.getAppDetails(id)
            } else {
                val app = appSources.gplayRepo.getAppDetails(packageName) as App?
                app?.toApplication(context)
                appSources.gplayRepo.getAppDetails(packageName)
            }

            application?.let {
            application.let {
                applicationDataManager.updateStatus(it)
                it.updateType()
                it.updateSource(context)
+3 −2
Original line number Diff line number Diff line
@@ -88,8 +88,9 @@ class CleanApkAppsRepository @Inject constructor(
        return cleanApkRetrofit.checkAvailablePackages(packageNames)
    }

    override suspend fun getAppDetails(packageNameOrId: String): Response<CleanApkApplication> {
        return cleanApkRetrofit.getAppOrPWADetailsByID(packageNameOrId, null, null)
    override suspend fun getAppDetails(packageNameOrId: String): Application {
        val response = cleanApkRetrofit.getAppOrPWADetailsByID(packageNameOrId, null, null)
        return response.body()?.app ?: throw IllegalStateException("No app data found")
    }

    override suspend fun getDownloadInfo(idOrPackageName: String, versionCode: Any?): Response<Download> {
+3 −2
Original line number Diff line number Diff line
@@ -83,7 +83,8 @@ class CleanApkPwaRepository @Inject constructor(
        return cleanAPKRetrofit.checkAvailablePackages(packageNames)
    }

    override suspend fun getAppDetails(packageNameOrId: String): Response<CleanApkApplication> {
        return cleanAPKRetrofit.getAppOrPWADetailsByID(packageNameOrId, null, null)
    override suspend fun getAppDetails(packageNameOrId: String): Application {
        val response = cleanAPKRetrofit.getAppOrPWADetailsByID(packageNameOrId, null, null)
        return response.body()?.app ?: throw IllegalStateException("No app data found")
    }
}
+10 −10
Original line number Diff line number Diff line
@@ -19,9 +19,8 @@
package foundation.e.apps.data.playstore

import android.content.Context
import android.util.Log
import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.App as GplayApp
import com.aurora.gplayapi.data.models.AuthData
import com.aurora.gplayapi.data.models.Category
import com.aurora.gplayapi.data.models.ContentRating
@@ -84,7 +83,7 @@ class PlayStoreRepository @Inject constructor(
    fun getSearchResult(
        query: String,
        subBundle: MutableSet<SearchBundle.SubBundle>?
    ): Pair<List<App>, MutableSet<SearchBundle.SubBundle>> {
    ): Pair<List<GplayApp>, MutableSet<SearchBundle.SubBundle>> {
        val authData = authenticatorRepository.getGPlayAuthOrThrow()
        val searchHelper = SearchHelper(authData).using(gPlayHttpClient)

@@ -103,7 +102,7 @@ class PlayStoreRepository @Inject constructor(
    private fun getSearchResultPair(
        searchBundle: SearchBundle,
        query: String
    ): Pair<MutableList<App>, MutableSet<SearchBundle.SubBundle>> {
    ): Pair<MutableList<GplayApp>, MutableSet<SearchBundle.SubBundle>> {
        val apps = searchBundle.appList
        Timber.d("Found ${apps.size} apps for query, $query")
        return Pair(apps, searchBundle.subBundles)
@@ -147,19 +146,20 @@ class PlayStoreRepository @Inject constructor(
        return categoryList
    }

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

        withContext(Dispatchers.IO) {
            val appDetailsHelper = AppDetailsHelper(authData).using(gPlayHttpClient)
            appDetails = appDetailsHelper.getAppByPackageName(packageNameOrId)
        }
        return appDetails

        return appDetails?.toApplication(context) ?: Application()
    }

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

        withContext(Dispatchers.IO) {
@@ -179,7 +179,7 @@ class PlayStoreRepository @Inject constructor(
        chart: Chart,
        authData: AuthData
    ): List<Application> {
        val topApps = mutableListOf<App>()
        val topApps = mutableListOf<GplayApp>()
        withContext(Dispatchers.IO) {
            val topChartsHelper = TopChartsHelper(authData).using(gPlayHttpClient)
            topApps.addAll(topChartsHelper.getCluster(type, chart).clusterAppList)
Loading