Loading app/build.gradle +7 −8 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ dependencies { api files('libs/splitinstall-lib.jar') implementation 'foundation.e.lib:telemetry:0.0.11-alpha' implementation "foundation.e:gplayapi:3.2.10-4" implementation 'foundation.e:gplayapi:3.4.2-0' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.fragment:fragment-ktx:1.5.6' Loading Loading @@ -249,9 +249,9 @@ dependencies { implementation "androidx.navigation:navigation-ui-ktx:$navigation_version" // Hilt def hilt_version = '2.40.5' kapt "com.google.dagger:hilt-compiler:2.44.2" implementation "com.google.dagger:hilt-android:2.44.2" def hilt_version = '2.51.1' kapt "com.google.dagger:hilt-compiler:$hilt_version" implementation "com.google.dagger:hilt-android:$hilt_version" implementation 'androidx.hilt:hilt-work:1.0.0' kapt 'androidx.hilt:hilt-compiler:1.0.0' Loading @@ -271,10 +271,9 @@ dependencies { testImplementation "org.jetbrains.kotlin:kotlin-test:$test_kotlin_version" // Room def roomVersion = "2.4.1" kapt "androidx.room:room-compiler:$roomVersion" implementation "androidx.room:room-ktx:$roomVersion" implementation "androidx.room:room-runtime:$roomVersion" kapt "androidx.room:room-compiler:2.6.1" implementation "androidx.room:room-ktx:2.6.1" implementation "androidx.room:room-runtime:2.6.1" // WorkManager implementation 'androidx.work:work-runtime-ktx:2.7.1' Loading app/src/main/java/foundation/e/apps/data/NetworkHandler.kt +1 −1 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ private const val ERROR_GPLAY_API = "Gplay api has faced error!" private const val REGEX_429_OR_401 = "429|401" private const val MAX_RETRY_DELAY_IN_SECONDS = 300 private const val ONE_SECOND_IN_MILLIS = 1000L private const val INITIAL_DELAY_RETRY_IN_SECONDS = 10 private const val INITIAL_DELAY_RETRY_IN_SECONDS = 1 suspend fun <T> handleNetworkResult(call: suspend () -> T): ResultSupreme<T> { return try { Loading app/src/main/java/foundation/e/apps/data/application/ApplicationDataManager.kt +4 −6 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package foundation.e.apps.data.application import com.aurora.gplayapi.Constants import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.application.data.Home import foundation.e.apps.data.enums.FilterLevel Loading @@ -37,8 +36,8 @@ class ApplicationDataManager @Inject constructor( private val appLoungePackageManager: AppLoungePackageManager, private val pwaManager: PwaManager ) { suspend fun updateFilterLevel(authData: AuthData?, application: Application) { application.filterLevel = getAppFilterLevel(application, authData) suspend fun updateFilterLevel(application: Application) { application.filterLevel = getAppFilterLevel(application) } suspend fun prepareApps( Loading @@ -50,20 +49,19 @@ class ApplicationDataManager @Inject constructor( appList.forEach { it.updateType() updateStatus(it) updateFilterLevel(null, it) updateFilterLevel(it) } list.add(Home(value, appList)) } } suspend fun getAppFilterLevel(application: Application, authData: AuthData?): FilterLevel { suspend fun getAppFilterLevel(application: Application): FilterLevel { return when { application.package_name.isBlank() -> FilterLevel.UNKNOWN !application.isFree && application.price.isBlank() -> FilterLevel.UI application.origin == Origin.CLEANAPK -> FilterLevel.NONE application.origin == Origin.GITLAB_RELEASES -> FilterLevel.NONE !isRestricted(application) -> FilterLevel.NONE authData == null -> FilterLevel.UNKNOWN // cannot determine for gplay app !isApplicationVisible(application) -> FilterLevel.DATA application.originalSize == 0L -> FilterLevel.UI !isDownloadable(application) -> FilterLevel.UI Loading app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt +7 −7 Original line number Diff line number Diff line Loading @@ -63,7 +63,7 @@ class AppsApiImpl @Inject constructor( appSources.cleanApkAppsRepo.getAppDetails(result.apps[0]._id) } application.updateFilterLevel(null) application.updateFilterLevel() } return Pair(application, result.getResultStatus()) Loading @@ -72,8 +72,8 @@ class AppsApiImpl @Inject constructor( /* * Handy method to run on an instance of FusedApp to update its filter level. */ private suspend fun Application.updateFilterLevel(authData: AuthData?) { this.filterLevel = applicationDataManager.getAppFilterLevel(this, authData) private suspend fun Application.updateFilterLevel() { this.filterLevel = applicationDataManager.getAppFilterLevel(this) } override suspend fun getApplicationDetails( Loading Loading @@ -148,7 +148,7 @@ class AppsApiImpl @Inject constructor( applicationList: MutableList<Application> ) { val application = app.toApplication(context) val filter = applicationDataManager.getAppFilterLevel(application, authData) val filter = applicationDataManager.getAppFilterLevel(application) if (filter.isUnFiltered()) { applicationList.add( application.apply { Loading @@ -173,7 +173,7 @@ class AppsApiImpl @Inject constructor( if (hasSingleResult()) { applicationList.add( apps[0].apply { updateFilterLevel(null) updateFilterLevel() } ) } Loading Loading @@ -201,7 +201,7 @@ class AppsApiImpl @Inject constructor( applicationDataManager.updateStatus(it) it.updateType() it.updateSource(context) it.updateFilterLevel(authData) it.updateFilterLevel() } application } Loading @@ -217,7 +217,7 @@ class AppsApiImpl @Inject constructor( application: Application, authData: AuthData? ): FilterLevel { return applicationDataManager.getAppFilterLevel(application, authData) return applicationDataManager.getAppFilterLevel(application) } override fun isAnyFusedAppUpdated( Loading app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt +7 −15 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ package foundation.e.apps.data.application.category import android.content.Context import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.StreamCluster import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.data.AppSourcesContainer Loading Loading @@ -180,15 +179,13 @@ class CategoryApiImpl @Inject constructor( var nextPageUrl = "" return handleNetworkResult { val streamCluster = appSources.gplayRepo.getAppsByCategory(category, pageUrl) as StreamCluster val cluster = appSources.gplayRepo.getAppsByCategory(category, pageUrl) val filteredAppList = filterRestrictedGPlayApps(authData, streamCluster.clusterAppList) filteredAppList.data?.let { applicationList = it.toMutableList() } val filteredAppList = filterRestrictedGPlayApps(cluster.clusterAppList) applicationList = (filteredAppList.data ?: emptyList()).toMutableList() nextPageUrl = streamCluster.clusterNextPageUrl nextPageUrl = cluster.clusterNextPageUrl if (nextPageUrl.isNotEmpty()) { applicationList.add(Application(isPlaceHolder = true)) } Loading @@ -208,17 +205,12 @@ class CategoryApiImpl @Inject constructor( * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5131 [2] */ private suspend fun filterRestrictedGPlayApps( authData: AuthData, appList: List<App>, ): ResultSupreme<List<Application>> { val filteredApplications = mutableListOf<Application>() return handleNetworkResult { appList.forEach { val filter = applicationDataManager.getAppFilterLevel( it.toApplication(context), authData ) val filter = applicationDataManager.getAppFilterLevel(it.toApplication(context)) if (filter.isUnFiltered()) { filteredApplications.add( it.toApplication(context).apply { Loading @@ -242,7 +234,7 @@ class CategoryApiImpl @Inject constructor( response?.apps?.forEach { applicationDataManager.updateStatus(it) it.updateType() applicationDataManager.updateFilterLevel(null, it) applicationDataManager.updateFilterLevel(it) list.add(it) } } Loading Loading
app/build.gradle +7 −8 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ dependencies { api files('libs/splitinstall-lib.jar') implementation 'foundation.e.lib:telemetry:0.0.11-alpha' implementation "foundation.e:gplayapi:3.2.10-4" implementation 'foundation.e:gplayapi:3.4.2-0' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.fragment:fragment-ktx:1.5.6' Loading Loading @@ -249,9 +249,9 @@ dependencies { implementation "androidx.navigation:navigation-ui-ktx:$navigation_version" // Hilt def hilt_version = '2.40.5' kapt "com.google.dagger:hilt-compiler:2.44.2" implementation "com.google.dagger:hilt-android:2.44.2" def hilt_version = '2.51.1' kapt "com.google.dagger:hilt-compiler:$hilt_version" implementation "com.google.dagger:hilt-android:$hilt_version" implementation 'androidx.hilt:hilt-work:1.0.0' kapt 'androidx.hilt:hilt-compiler:1.0.0' Loading @@ -271,10 +271,9 @@ dependencies { testImplementation "org.jetbrains.kotlin:kotlin-test:$test_kotlin_version" // Room def roomVersion = "2.4.1" kapt "androidx.room:room-compiler:$roomVersion" implementation "androidx.room:room-ktx:$roomVersion" implementation "androidx.room:room-runtime:$roomVersion" kapt "androidx.room:room-compiler:2.6.1" implementation "androidx.room:room-ktx:2.6.1" implementation "androidx.room:room-runtime:2.6.1" // WorkManager implementation 'androidx.work:work-runtime-ktx:2.7.1' Loading
app/src/main/java/foundation/e/apps/data/NetworkHandler.kt +1 −1 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ private const val ERROR_GPLAY_API = "Gplay api has faced error!" private const val REGEX_429_OR_401 = "429|401" private const val MAX_RETRY_DELAY_IN_SECONDS = 300 private const val ONE_SECOND_IN_MILLIS = 1000L private const val INITIAL_DELAY_RETRY_IN_SECONDS = 10 private const val INITIAL_DELAY_RETRY_IN_SECONDS = 1 suspend fun <T> handleNetworkResult(call: suspend () -> T): ResultSupreme<T> { return try { Loading
app/src/main/java/foundation/e/apps/data/application/ApplicationDataManager.kt +4 −6 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package foundation.e.apps.data.application import com.aurora.gplayapi.Constants import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.application.data.Home import foundation.e.apps.data.enums.FilterLevel Loading @@ -37,8 +36,8 @@ class ApplicationDataManager @Inject constructor( private val appLoungePackageManager: AppLoungePackageManager, private val pwaManager: PwaManager ) { suspend fun updateFilterLevel(authData: AuthData?, application: Application) { application.filterLevel = getAppFilterLevel(application, authData) suspend fun updateFilterLevel(application: Application) { application.filterLevel = getAppFilterLevel(application) } suspend fun prepareApps( Loading @@ -50,20 +49,19 @@ class ApplicationDataManager @Inject constructor( appList.forEach { it.updateType() updateStatus(it) updateFilterLevel(null, it) updateFilterLevel(it) } list.add(Home(value, appList)) } } suspend fun getAppFilterLevel(application: Application, authData: AuthData?): FilterLevel { suspend fun getAppFilterLevel(application: Application): FilterLevel { return when { application.package_name.isBlank() -> FilterLevel.UNKNOWN !application.isFree && application.price.isBlank() -> FilterLevel.UI application.origin == Origin.CLEANAPK -> FilterLevel.NONE application.origin == Origin.GITLAB_RELEASES -> FilterLevel.NONE !isRestricted(application) -> FilterLevel.NONE authData == null -> FilterLevel.UNKNOWN // cannot determine for gplay app !isApplicationVisible(application) -> FilterLevel.DATA application.originalSize == 0L -> FilterLevel.UI !isDownloadable(application) -> FilterLevel.UI Loading
app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt +7 −7 Original line number Diff line number Diff line Loading @@ -63,7 +63,7 @@ class AppsApiImpl @Inject constructor( appSources.cleanApkAppsRepo.getAppDetails(result.apps[0]._id) } application.updateFilterLevel(null) application.updateFilterLevel() } return Pair(application, result.getResultStatus()) Loading @@ -72,8 +72,8 @@ class AppsApiImpl @Inject constructor( /* * Handy method to run on an instance of FusedApp to update its filter level. */ private suspend fun Application.updateFilterLevel(authData: AuthData?) { this.filterLevel = applicationDataManager.getAppFilterLevel(this, authData) private suspend fun Application.updateFilterLevel() { this.filterLevel = applicationDataManager.getAppFilterLevel(this) } override suspend fun getApplicationDetails( Loading Loading @@ -148,7 +148,7 @@ class AppsApiImpl @Inject constructor( applicationList: MutableList<Application> ) { val application = app.toApplication(context) val filter = applicationDataManager.getAppFilterLevel(application, authData) val filter = applicationDataManager.getAppFilterLevel(application) if (filter.isUnFiltered()) { applicationList.add( application.apply { Loading @@ -173,7 +173,7 @@ class AppsApiImpl @Inject constructor( if (hasSingleResult()) { applicationList.add( apps[0].apply { updateFilterLevel(null) updateFilterLevel() } ) } Loading Loading @@ -201,7 +201,7 @@ class AppsApiImpl @Inject constructor( applicationDataManager.updateStatus(it) it.updateType() it.updateSource(context) it.updateFilterLevel(authData) it.updateFilterLevel() } application } Loading @@ -217,7 +217,7 @@ class AppsApiImpl @Inject constructor( application: Application, authData: AuthData? ): FilterLevel { return applicationDataManager.getAppFilterLevel(application, authData) return applicationDataManager.getAppFilterLevel(application) } override fun isAnyFusedAppUpdated( Loading
app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt +7 −15 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ package foundation.e.apps.data.application.category import android.content.Context import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.StreamCluster import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.data.AppSourcesContainer Loading Loading @@ -180,15 +179,13 @@ class CategoryApiImpl @Inject constructor( var nextPageUrl = "" return handleNetworkResult { val streamCluster = appSources.gplayRepo.getAppsByCategory(category, pageUrl) as StreamCluster val cluster = appSources.gplayRepo.getAppsByCategory(category, pageUrl) val filteredAppList = filterRestrictedGPlayApps(authData, streamCluster.clusterAppList) filteredAppList.data?.let { applicationList = it.toMutableList() } val filteredAppList = filterRestrictedGPlayApps(cluster.clusterAppList) applicationList = (filteredAppList.data ?: emptyList()).toMutableList() nextPageUrl = streamCluster.clusterNextPageUrl nextPageUrl = cluster.clusterNextPageUrl if (nextPageUrl.isNotEmpty()) { applicationList.add(Application(isPlaceHolder = true)) } Loading @@ -208,17 +205,12 @@ class CategoryApiImpl @Inject constructor( * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5131 [2] */ private suspend fun filterRestrictedGPlayApps( authData: AuthData, appList: List<App>, ): ResultSupreme<List<Application>> { val filteredApplications = mutableListOf<Application>() return handleNetworkResult { appList.forEach { val filter = applicationDataManager.getAppFilterLevel( it.toApplication(context), authData ) val filter = applicationDataManager.getAppFilterLevel(it.toApplication(context)) if (filter.isUnFiltered()) { filteredApplications.add( it.toApplication(context).apply { Loading @@ -242,7 +234,7 @@ class CategoryApiImpl @Inject constructor( response?.apps?.forEach { applicationDataManager.updateStatus(it) it.updateType() applicationDataManager.updateFilterLevel(null, it) applicationDataManager.updateFilterLevel(it) list.add(it) } } Loading