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

Commit 06fd16c5 authored by Fahim M. Choudhury's avatar Fahim M. Choudhury
Browse files

refactor(updates): use Dispatchers.IO for fetching updates

parent 1d9df776
Loading
Loading
Loading
Loading
+23 −13
Original line number Diff line number Diff line
@@ -30,6 +30,8 @@ import foundation.e.apps.data.handleNetworkResult
import foundation.e.apps.data.playstore.PlayStoreRepository
import foundation.e.apps.domain.model.install.Status
import foundation.e.apps.ui.applicationlist.ApplicationDiffUtil
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import javax.inject.Inject

class AppsApiImpl @Inject constructor(
@@ -40,9 +42,11 @@ class AppsApiImpl @Inject constructor(
    override suspend fun getCleanapkAppDetails(packageName: String): Pair<Application, ResultStatus> {
        var application = Application()
        val result = handleNetworkResult {
            application = enabledStoreRepositoryProvider.awaitStore(Source.OPEN_SOURCE)
            application = withContext(Dispatchers.IO) {
                enabledStoreRepositoryProvider.awaitStore(Source.OPEN_SOURCE)
                    ?.getAppDetails(packageName)
                    ?: Application()
            }
            application.source = Source.OPEN_SOURCE
            application.updateType()
            application.updateFilterLevel()
@@ -92,15 +96,17 @@ class AppsApiImpl @Inject constructor(
        packageNameList: List<String>,
    ): Pair<List<Application>, ResultStatus> {
        val status = ResultStatus.OK
        val applicationList = mutableListOf<Application>()

        val applicationList = withContext(Dispatchers.IO) {
            val list = mutableListOf<Application>()
            for (packageName in packageNameList) {
            applicationList.add(
                list.add(
                    enabledStoreRepositoryProvider.awaitStore(Source.OPEN_SOURCE)
                        ?.getAppDetails(packageName)
                        ?: Application()
                )
            }
            list
        }

        return Pair(applicationList, status)
    }
@@ -112,8 +118,10 @@ class AppsApiImpl @Inject constructor(

        val playStore = enabledStoreRepositoryProvider.awaitStore(Source.PLAY_STORE) as? PlayStoreRepository
        val response = handleNetworkResult {
            withContext(Dispatchers.IO) {
                playStore?.getAppsDetails(packageNameList).orEmpty()
            }
        }
        val apps = response.data ?: emptyList()
        for (app in apps) {
            handleFilteredApps(app, applicationList)
@@ -151,7 +159,9 @@ class AppsApiImpl @Inject constructor(
            val store = enabledStoreRepositoryProvider.awaitStore(source)
                ?: throw IllegalStateException("Could not get store")

            application = store.getAppDetails(packageName)
            application = withContext(Dispatchers.IO) {
                store.getAppDetails(packageName)
            }
            application.let {
                applicationDataManager.updateStatus(it)
                it.source = source
+6 −2
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher
import foundation.e.apps.data.enums.Source
import foundation.e.apps.data.handleNetworkResult
import foundation.e.apps.data.installation.model.AppInstall
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import javax.inject.Inject

class DownloadInfoApiImpl @Inject constructor(
@@ -127,6 +129,8 @@ class DownloadInfoApiImpl @Inject constructor(
    }

    override suspend fun getOSSDownloadInfo(id: String, version: String?) =
        withContext(Dispatchers.IO) {
            (appSources.cleanApkAppsRepo as CleanApkDownloadInfoFetcher)
                .getDownloadInfo(id, version)
        }
}
+5 −1
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@ import foundation.e.apps.data.fdroid.models.BuildInfo
import foundation.e.apps.data.fdroid.models.FdroidApiModel
import foundation.e.apps.data.fdroid.models.FdroidEntity
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import retrofit2.Response
import timber.log.Timber
import java.io.IOException
@@ -42,7 +44,9 @@ class FDroidRepository @Inject constructor(
    }

    suspend fun getBuildVersionInfo(packageName: String): List<BuildInfo> {
        return getFdroidApiResponse(packageName)?.body()?.builds ?: emptyList()
        return withContext(Dispatchers.IO) {
            getFdroidApiResponse(packageName)?.body()?.builds ?: emptyList()
        }
    }

    override suspend fun getAuthorName(application: Application): String {