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

Verified Commit 4f0ad378 authored by Fahim M. Choudhury's avatar Fahim M. Choudhury
Browse files

refactor: delegate search suggestions to store repositories abstraction...

refactor: delegate search suggestions to store repositories abstraction instead of concrete implementation

SearchRepositoryImpl uses StoreRepository abstraction to get search suggestions from and getting rid of AppSourcesContainer dependency.

As CleanApk doesn't provide search suggestions yet, its repositories return empty list.
parent ac8cc49d
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -20,9 +20,11 @@ package foundation.e.apps.data


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


interface StoreRepository {
interface StoreRepository {
    suspend fun getHomeScreenData(list: MutableList<Home>): List<Home>
    suspend fun getHomeScreenData(list: MutableList<Home>): List<Home>
    suspend fun getAppDetails(packageName: String): Application
    suspend fun getAppDetails(packageName: String): Application
    suspend fun getSearchResults(pattern: String): List<Application>
    suspend fun getSearchResults(pattern: String): List<Application>
    suspend fun getSearchSuggestions(pattern: String): List<SearchSuggestion>
}
}
+13 −4
Original line number Original line Diff line number Diff line
@@ -22,11 +22,11 @@ package foundation.e.apps.data.application.search
import android.content.Context
import android.content.Context
import com.aurora.gplayapi.data.models.SearchBundle
import com.aurora.gplayapi.data.models.SearchBundle
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.data.AppSourcesContainer
import foundation.e.apps.data.ResultSupreme
import foundation.e.apps.data.ResultSupreme
import foundation.e.apps.data.Stores
import foundation.e.apps.data.Stores
import foundation.e.apps.data.application.ApplicationDataManager
import foundation.e.apps.data.application.ApplicationDataManager
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository
import foundation.e.apps.data.enums.ResultStatus
import foundation.e.apps.data.enums.ResultStatus
import foundation.e.apps.data.enums.Source
import foundation.e.apps.data.enums.Source
import foundation.e.apps.data.handleNetworkResult
import foundation.e.apps.data.handleNetworkResult
@@ -39,7 +39,6 @@ import javax.inject.Singleton


@Singleton
@Singleton
class SearchRepositoryImpl @Inject constructor(
class SearchRepositoryImpl @Inject constructor(
    private val appSources: AppSourcesContainer,
    private val stores: Stores,
    private val stores: Stores,
    private val applicationDataManager: ApplicationDataManager
    private val applicationDataManager: ApplicationDataManager
) : SearchRepository {
) : SearchRepository {
@@ -273,7 +272,11 @@ class SearchRepositoryImpl @Inject constructor(
    override suspend fun getSearchSuggestions(query: String): List<SearchSuggestion> {
    override suspend fun getSearchSuggestions(query: String): List<SearchSuggestion> {
        var searchSuggestions = listOf<SearchSuggestion>()
        var searchSuggestions = listOf<SearchSuggestion>()
        handleNetworkResult {
        handleNetworkResult {
            searchSuggestions = appSources.gplayRepo.getSearchSuggestions(query)
            searchSuggestions = stores.getStores()
                .map { it.value }
                .flatMap { storeRepository ->
                    storeRepository.getSearchSuggestions(query)
                }
        }
        }


        return searchSuggestions
        return searchSuggestions
@@ -335,7 +338,13 @@ class SearchRepositoryImpl @Inject constructor(
            if (gPlayApps.isEmpty()) return emptyList()
            if (gPlayApps.isEmpty()) return emptyList()


            val packageNames = gPlayApps.map { it.package_name }
            val packageNames = gPlayApps.map { it.package_name }
            val response = appSources.cleanApkAppsRepo.checkAvailablePackages(packageNames)
            val storeRepository = stores.getStore(Source.OPEN_SOURCE)

            if (storeRepository !is CleanApkRepository) {
                return gPlayApps
            }

            val response = storeRepository.checkAvailablePackages(packageNames)


            val availableApps = response.body()?.apps ?: emptyList()
            val availableApps = response.body()?.apps ?: emptyList()


+5 −0
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@ import foundation.e.apps.data.application.ApplicationRepository
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.data.Home
import foundation.e.apps.data.application.data.Home
import foundation.e.apps.data.application.search.SearchRepository
import foundation.e.apps.data.application.search.SearchRepository
import foundation.e.apps.data.application.search.SearchSuggestion
import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher
import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher
import foundation.e.apps.data.cleanapk.CleanApkRetrofit
import foundation.e.apps.data.cleanapk.CleanApkRetrofit
import foundation.e.apps.data.cleanapk.CleanApkSearchHelper
import foundation.e.apps.data.cleanapk.CleanApkSearchHelper
@@ -99,6 +100,10 @@ class CleanApkAppsRepository @Inject constructor(
        )
        )
    }
    }


    override suspend fun getSearchSuggestions(pattern: String): List<SearchSuggestion> {
        return emptyList() // Not supported yet
    }

    override suspend fun getDownloadInfo(idOrPackageName: String, versionCode: Any?): Response<Download> {
    override suspend fun getDownloadInfo(idOrPackageName: String, versionCode: Any?): Response<Download> {
        val version = versionCode?.let { it as String }
        val version = versionCode?.let { it as String }
        return cleanApkRetrofit.getDownloadInfo(idOrPackageName, version, null)
        return cleanApkRetrofit.getDownloadInfo(idOrPackageName, version, null)
+5 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.data.application.ApplicationRepository
import foundation.e.apps.data.application.ApplicationRepository
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.data.Home
import foundation.e.apps.data.application.data.Home
import foundation.e.apps.data.application.search.SearchSuggestion
import foundation.e.apps.data.cleanapk.CleanApkRetrofit
import foundation.e.apps.data.cleanapk.CleanApkRetrofit
import foundation.e.apps.data.cleanapk.CleanApkSearchHelper
import foundation.e.apps.data.cleanapk.CleanApkSearchHelper
import foundation.e.apps.data.cleanapk.data.categories.Categories
import foundation.e.apps.data.cleanapk.data.categories.Categories
@@ -96,4 +97,8 @@ class CleanApkPwaRepository @Inject constructor(
            appType = CleanApkRetrofit.APP_TYPE_PWA,
            appType = CleanApkRetrofit.APP_TYPE_PWA,
        )
        )
    }
    }

    override suspend fun getSearchSuggestions(pattern: String): List<SearchSuggestion> {
        return emptyList() // Not supported yet
    }
}
}
+0 −1
Original line number Original line Diff line number Diff line
@@ -118,7 +118,6 @@ class SearchRepositoryImplTest {
        )
        )


        searchRepository = SearchRepositoryImpl(
        searchRepository = SearchRepositoryImpl(
            appSourcesContainer,
            stores,
            stores,
            applicationDataManager
            applicationDataManager
        )
        )