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

Commit e71869ad authored by Hasib Prince's avatar Hasib Prince
Browse files

Merge branch '228-refactor_homepage' into 'main'

refactor: homepage

Closes #228

See merge request !391
parents 6134e8c2 38e2e506
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -40,8 +40,8 @@ import com.google.android.material.snackbar.Snackbar
import dagger.hilt.android.AndroidEntryPoint
import foundation.e.apps.data.fusedDownload.models.FusedDownload
import foundation.e.apps.data.login.AuthObject
import foundation.e.apps.data.login.PlayStoreAuthenticator
import foundation.e.apps.data.login.LoginViewModel
import foundation.e.apps.data.login.PlayStoreAuthenticator
import foundation.e.apps.data.login.exceptions.GPlayValidationException
import foundation.e.apps.data.preference.PreferenceManagerModule
import foundation.e.apps.databinding.ActivityMainBinding
@@ -105,7 +105,7 @@ class MainActivity : AppCompatActivity() {
            }
        }

        viewModel.setupConnectivityManager(this)
        viewModel.setupConnectivityManager(this.applicationContext)

        viewModel.internetConnection.observe(this) { isInternetAvailable ->
            hasInternet = isInternetAvailable
+0 −8
Original line number Diff line number Diff line
@@ -141,14 +141,6 @@ interface ApplicationApi {
     */
    fun getFusedAppInstallationStatus(application: Application): Status

    /**
     * @return true, if any change is found, otherwise false
     */
    fun isHomeDataUpdated(
        newHomeData: List<Home>,
        oldHomeData: List<Home>
    ): Boolean

    /**
     * @return returns true if there is changes in data, otherwise false
     */
+7 −44
Original line number Diff line number Diff line
@@ -27,16 +27,13 @@ import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Artwork
import com.aurora.gplayapi.data.models.AuthData
import com.aurora.gplayapi.data.models.Category as GplayapiCategory
import com.aurora.gplayapi.data.models.SearchBundle
import com.aurora.gplayapi.data.models.StreamCluster
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.R
import foundation.e.apps.data.ResultSupreme
import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher
import foundation.e.apps.data.cleanapk.data.app.Application as CleanApkApplication
import foundation.e.apps.data.cleanapk.data.categories.Categories
import foundation.e.apps.data.cleanapk.data.home.Home as CleanApkHome
import foundation.e.apps.data.cleanapk.data.home.HomeScreen
import foundation.e.apps.data.cleanapk.data.search.Search
import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository
@@ -58,9 +55,9 @@ import foundation.e.apps.data.application.data.Ratings
import foundation.e.apps.data.application.utils.CategoryType
import foundation.e.apps.data.application.utils.CategoryUtils
import foundation.e.apps.data.fusedDownload.models.FusedDownload
import foundation.e.apps.data.playstore.PlayStoreRepository
import foundation.e.apps.data.handleNetworkResult
import foundation.e.apps.data.login.AuthObject
import foundation.e.apps.data.playstore.PlayStoreRepository
import foundation.e.apps.data.preference.PreferenceManagerModule
import foundation.e.apps.install.pkg.PWAManagerModule
import foundation.e.apps.install.pkg.PkgManagerModule
@@ -77,6 +74,9 @@ import timber.log.Timber
import javax.inject.Inject
import javax.inject.Named
import javax.inject.Singleton
import com.aurora.gplayapi.data.models.Category as GplayapiCategory
import foundation.e.apps.data.cleanapk.data.app.Application as CleanApkApplication
import foundation.e.apps.data.cleanapk.data.home.Home as CleanApkHome

typealias FusedHomeDeferred = Deferred<ResultSupreme<List<Home>>>

@@ -134,9 +134,11 @@ class ApplicationApiImpl @Inject constructor(
                resultGplay?.await()?.let {
                    emit(it)
                }

                resultOpenSource?.await()?.let {
                    emit(it)
                }

                resultPWA?.await()?.let {
                    emit(it)
                }
@@ -1284,45 +1286,6 @@ class ApplicationApiImpl @Inject constructor(
        return list
    }

    /**
     * @return true, if any change is found, otherwise false
     */
    override fun isHomeDataUpdated(
        newHomeData: List<Home>,
        oldHomeData: List<Home>
    ): Boolean {
        if (newHomeData.size != oldHomeData.size) {
            return true
        }

        oldHomeData.forEach {
            val fusedHome = newHomeData[oldHomeData.indexOf(it)]
            if (!it.title.contentEquals(fusedHome.title) || areFusedAppsUpdated(it, fusedHome)) {
                return true
            }
        }
        return false
    }

    private fun areFusedAppsUpdated(
        oldHome: Home,
        newHome: Home,
    ): Boolean {
        val fusedAppDiffUtil = HomeChildFusedAppDiffUtil()
        if (oldHome.list.size != newHome.list.size) {
            return true
        }

        oldHome.list.forEach { oldFusedApp ->
            val indexOfOldFusedApp = oldHome.list.indexOf(oldFusedApp)
            val fusedApp = newHome.list[indexOfOldFusedApp]
            if (!fusedAppDiffUtil.areContentsTheSame(oldFusedApp, fusedApp)) {
                return true
            }
        }
        return false
    }

    /**
     * @return returns true if there is changes in data, otherwise false
     */
@@ -1350,7 +1313,7 @@ class ApplicationApiImpl @Inject constructor(
                return@forEach
            }
            val currentAppStatus =
                pkgManagerModule.getPackageStatus(it.package_name, it.latest_version_code)
                getFusedAppInstallationStatus(it)
            if (it.status != currentAppStatus) {
                return true
            }
+0 −5
Original line number Diff line number Diff line
@@ -135,11 +135,6 @@ class ApplicationRepository @Inject constructor(private val applicationAPIImpl:
        return applicationAPIImpl.getFusedAppInstallationStatus(application)
    }

    fun isHomeDataUpdated(
        newHomeData: List<Home>,
        oldHomeData: List<Home>
    ) = applicationAPIImpl.isHomeDataUpdated(newHomeData, oldHomeData)

    fun isAnyFusedAppUpdated(
        newApplications: List<Application>,
        oldApplications: List<Application>
+4 −1
Original line number Diff line number Diff line
@@ -18,8 +18,11 @@

package foundation.e.apps.data.application.data

import java.util.UUID

data class Home(
    val title: String = String(),
    val list: List<Application> = emptyList(),
    var source: String = String()
    var source: String = String(),
    var id: String = UUID.randomUUID().toString()
)
Loading