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

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

refactor: let SearchRepository handle fetching search suggestions and results...

refactor: let SearchRepository handle fetching search suggestions and results instead of ApplicationRepository in SearchViewModel
parent 537cb2d4
Loading
Loading
Loading
Loading
+15 −22
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ package foundation.e.apps.data.application
import androidx.lifecycle.LiveData
import com.aurora.gplayapi.data.models.AuthData
import foundation.e.apps.data.ResultSupreme
import foundation.e.apps.data.Stores
import foundation.e.apps.data.application.apps.AppsApi
import foundation.e.apps.data.application.category.CategoryApi
import foundation.e.apps.data.application.data.Application
@@ -28,9 +29,6 @@ import foundation.e.apps.data.application.data.Category
import foundation.e.apps.data.application.data.Home
import foundation.e.apps.data.application.downloadInfo.DownloadInfoApi
import foundation.e.apps.data.application.home.HomeApi
import foundation.e.apps.data.application.search.SearchRepository
import foundation.e.apps.data.application.search.SearchResult
import foundation.e.apps.data.application.search.SearchSuggestion
import foundation.e.apps.data.application.utils.CategoryType
import foundation.e.apps.data.enums.FilterLevel
import foundation.e.apps.data.enums.ResultStatus
@@ -42,19 +40,30 @@ import javax.inject.Singleton

@Singleton
class ApplicationRepository @Inject constructor(
    private val searchRepository: SearchRepository,
    private val homeApi: HomeApi,
    private val categoryApi: CategoryApi,
    private val appsApi: AppsApi,
    private val downloadInfoApi: DownloadInfoApi
    private val downloadInfoApi: DownloadInfoApi,
    private val stores: Stores
) {
    companion object {
        const val APP_TYPE_ANY = "any"
        const val APP_TYPE_OPEN = "open"
        const val APP_TYPE_PWA = "pwa"
    }


    suspend fun getHomeScreenData(): LiveData<ResultSupreme<List<Home>>> {
        return homeApi.fetchHomeScreenData()
    }

    fun getSelectedAppTypes(): List<String> {
        return searchRepository.getSelectedAppTypes()
        val selectedAppTypes = mutableListOf<String>()
        if (stores.isStoreEnabled(Source.PLAY_STORE)) selectedAppTypes.add(APP_TYPE_ANY)
        if (stores.isStoreEnabled(Source.OPEN_SOURCE)) selectedAppTypes.add(APP_TYPE_OPEN)
        if (stores.isStoreEnabled(Source.PWA)) selectedAppTypes.add(APP_TYPE_PWA)

        return selectedAppTypes
    }

    suspend fun getApplicationDetails(
@@ -104,22 +113,6 @@ class ApplicationRepository @Inject constructor(
        return categoryApi.getCategoriesList(type)
    }

    suspend fun getSearchSuggestions(query: String): List<SearchSuggestion> {
        return searchRepository.getSearchSuggestions(query)
    }

    suspend fun getCleanApkSearchResults(
        query: String
    ): SearchResult {
        return searchRepository.getCleanApkSearchResults(query)
    }

    suspend fun getGplaySearchResults(
        query: String
    ): SearchResult {
        return searchRepository.getGplaySearchResult(query)
    }

    suspend fun getAppsListBasedOnCategory(
        authData: AuthData,
        category: String,
+3 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.liveData
import foundation.e.apps.data.ResultSupreme
import foundation.e.apps.data.Stores
import foundation.e.apps.data.application.ApplicationRepository
import foundation.e.apps.data.application.data.Home
import foundation.e.apps.data.application.search.SearchRepository
import foundation.e.apps.data.enums.ResultStatus
@@ -78,8 +79,8 @@ class HomeApiImpl @Inject constructor(
        setHomeErrorMessage(result.getResultStatus(), source)
        priorList.sortBy {
            when (it.source) {
                SearchRepository.APP_TYPE_OPEN -> AppSourceWeight.OPEN_SOURCE.ordinal
                SearchRepository.APP_TYPE_PWA -> AppSourceWeight.PWA.ordinal
                ApplicationRepository.APP_TYPE_OPEN -> AppSourceWeight.OPEN_SOURCE.ordinal
                ApplicationRepository.APP_TYPE_PWA -> AppSourceWeight.PWA.ordinal
                else -> AppSourceWeight.GPLAY.ordinal
            }
        }
+0 −7
Original line number Diff line number Diff line
@@ -25,13 +25,6 @@ import foundation.e.apps.data.application.data.Application
typealias SearchResult = ResultSupreme<Pair<List<Application>, Boolean>>

interface SearchRepository {
    companion object {
        const val APP_TYPE_ANY = "any"
        const val APP_TYPE_OPEN = "open"
        const val APP_TYPE_PWA = "pwa"
    }

    fun getSelectedAppTypes(): List<String>

    /**
     * Fetches search results from cleanAPK and GPlay servers and returns them
+0 −12
Original line number Diff line number Diff line
@@ -28,9 +28,6 @@ import foundation.e.apps.data.Stores
import foundation.e.apps.data.application.ApplicationDataManager
import foundation.e.apps.data.application.apps.AppsApi
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.search.SearchRepository.Companion.APP_TYPE_ANY
import foundation.e.apps.data.application.search.SearchRepository.Companion.APP_TYPE_OPEN
import foundation.e.apps.data.application.search.SearchRepository.Companion.APP_TYPE_PWA
import foundation.e.apps.data.enums.ResultStatus
import foundation.e.apps.data.enums.Source
import foundation.e.apps.data.handleNetworkResult
@@ -52,15 +49,6 @@ class SearchRepositoryImpl @Inject constructor(
    @ApplicationContext
    lateinit var context: Context

    override fun getSelectedAppTypes(): List<String> {
        val selectedAppTypes = mutableListOf<String>()
        if (stores.isStoreEnabled(Source.PLAY_STORE)) selectedAppTypes.add(APP_TYPE_ANY)
        if (stores.isStoreEnabled(Source.OPEN_SOURCE)) selectedAppTypes.add(APP_TYPE_OPEN)
        if (stores.isStoreEnabled(Source.PWA)) selectedAppTypes.add(APP_TYPE_PWA)

        return selectedAppTypes
    }

    /**
     * Fetches search results from cleanAPK and returns them
     * @param query Query
+2 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@

package foundation.e.apps.data.cleanapk.repositories

import foundation.e.apps.data.application.ApplicationRepository
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.data.Home
import foundation.e.apps.data.application.search.SearchRepository
@@ -53,7 +54,7 @@ class CleanApkAppsRepository @Inject constructor(

        listHome.forEach { (title, apps) ->
            apps.forEach { app -> app.source = Source.OPEN_SOURCE }
            list.add(Home(title, apps, SearchRepository.APP_TYPE_OPEN))
            list.add(Home(title, apps, ApplicationRepository.APP_TYPE_OPEN))
        }

        return list
Loading