From 5e33b5584f5bd83d214fdfdaf88fb1c6cc9ea299 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 17 Apr 2023 17:18:37 +0530 Subject: [PATCH 01/13] PkgManagerModule.kt - getInstallerName() --- .../foundation/e/apps/manager/pkg/PkgManagerModule.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt b/app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt index e61b4d4cf..416504204 100644 --- a/app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt +++ b/app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt @@ -128,6 +128,15 @@ class PkgManagerModule @Inject constructor( } } + fun getInstallerName(packageName: String): String { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + val installerInfo = packageManager.getInstallSourceInfo(packageName) + installerInfo.originatingPackageName ?: installerInfo.installingPackageName ?: "" + } else { + packageManager.getInstallerPackageName(packageName) ?: "" + } + } + /** * Installs the given package using system API * @param list List of [File] to be written to install session. -- GitLab From 636c4fbee030bf01d4eb10d2e47f28423a777112 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 17 Apr 2023 17:22:38 +0530 Subject: [PATCH 02/13] other app store checkbox UI --- app/src/main/res/values/strings.xml | 3 +++ app/src/main/res/xml/settings_preferences.xml | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39baaa291..2c45bd026 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -57,6 +57,8 @@ Update check interval Only on un-metered networks Update apps automatically only on un-metered networks such as Wi-Fi + Update apps installed by other stores + Update apps installed from other app stores.\nSuch apps will be attempted to be updated from common apps and open source category. Automatically install updates Download and install app updates in the background Show available updates @@ -175,6 +177,7 @@ updateNotify updateInstallAuto updateUnmeteredOnly + updateAppsFromOtherStores Can\'t connect! Please check your internet connection and try again diff --git a/app/src/main/res/xml/settings_preferences.xml b/app/src/main/res/xml/settings_preferences.xml index c69f967b4..7f4c8836f 100644 --- a/app/src/main/res/xml/settings_preferences.xml +++ b/app/src/main/res/xml/settings_preferences.xml @@ -61,6 +61,14 @@ android:title="@string/preference_update_wifi_only_title" app:singleLineTitle="false" app:iconSpaceReserved="false" /> + + Date: Mon, 17 Apr 2023 17:28:19 +0530 Subject: [PATCH 03/13] PreferenceManagerModule - shouldUpdateAppsFromOtherStores --- .../e/apps/utils/modules/PreferenceManagerModule.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/utils/modules/PreferenceManagerModule.kt b/app/src/main/java/foundation/e/apps/utils/modules/PreferenceManagerModule.kt index ab738f396..a6274f061 100644 --- a/app/src/main/java/foundation/e/apps/utils/modules/PreferenceManagerModule.kt +++ b/app/src/main/java/foundation/e/apps/utils/modules/PreferenceManagerModule.kt @@ -60,4 +60,9 @@ class PreferenceManagerModule @Inject constructor( context.getString(R.string.update_check_intervals), context.getString(R.string.preference_update_interval_default) )!!.toLong() + + fun shouldUpdateAppsFromOtherStores() = preferenceManager.getBoolean( + context.getString(R.string.update_apps_from_other_stores), + true + ) } -- GitLab From 5ac4837d1de91305ce8f7bc4034365b0cb0e190f Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 17 Apr 2023 17:30:09 +0530 Subject: [PATCH 04/13] Constants defined for package names --- app/src/main/java/foundation/e/apps/utils/Constants.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/utils/Constants.kt b/app/src/main/java/foundation/e/apps/utils/Constants.kt index d8083adaf..2f04b8f0e 100644 --- a/app/src/main/java/foundation/e/apps/utils/Constants.kt +++ b/app/src/main/java/foundation/e/apps/utils/Constants.kt @@ -6,4 +6,8 @@ object Constants { const val PREFERENCE_SHOW_FOSS = "showFOSSApplications" const val PREFERENCE_SHOW_PWA = "showPWAApplications" const val PREFERENCE_SHOW_GPLAY = "showAllApplications" + + const val PACKAGE_NAME_F_DROID = "org.fdroid.fdroid" + const val PACKAGE_NAME_F_DROID_PRIVILEGED = "org.fdroid.fdroid.privileged" + const val PACKAGE_NAME_ANDROID_VENDING = "com.android.vending" } -- GitLab From ca1ddb568c9fda8b33b87a9b6a276f394db6c7c7 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Tue, 18 Apr 2023 02:23:27 +0530 Subject: [PATCH 05/13] UpdatesManagerImpl - getOpenSourceInstalledApps, getGPlayInstalledApps, getAppsFromOtherStores --- .../updates/manager/UpdatesManagerImpl.kt | 55 ++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt index d80a5ded2..aff8e1704 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt @@ -18,26 +18,77 @@ package foundation.e.apps.updates.manager +import android.content.Context +import android.content.pm.ApplicationInfo import com.aurora.gplayapi.data.models.AuthData +import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.api.faultyApps.FaultyAppRepository import foundation.e.apps.api.fused.FusedAPIImpl.Companion.APP_TYPE_ANY import foundation.e.apps.api.fused.FusedAPIRepository import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.manager.pkg.PkgManagerModule +import foundation.e.apps.utils.Constants import foundation.e.apps.utils.enums.Origin import foundation.e.apps.utils.enums.ResultStatus import foundation.e.apps.utils.enums.Status import foundation.e.apps.utils.enums.isUnFiltered +import foundation.e.apps.utils.modules.PreferenceManagerModule import javax.inject.Inject class UpdatesManagerImpl @Inject constructor( + @ApplicationContext private val context: Context, private val pkgManagerModule: PkgManagerModule, private val fusedAPIRepository: FusedAPIRepository, - private val faultyAppRepository: FaultyAppRepository + private val faultyAppRepository: FaultyAppRepository, + private val preferenceManagerModule: PreferenceManagerModule, ) { private val TAG = UpdatesManagerImpl::class.java.simpleName - // TODO: MAKE THIS LOGIC MORE SANE + private val userApplications: List + get() = pkgManagerModule.getAllUserApps() + + /** + * Lists apps directly updatable by App Lounge from the Open Source category. + * (This includes apps installed by F-Droid client app, if used by the user; + * F-Droid is not considered a third party source.) + */ + private fun getOpenSourceInstalledApps(): List { + return userApplications.filter { + pkgManagerModule.getInstallerName(it.packageName) in listOf( + context.packageName, + Constants.PACKAGE_NAME_F_DROID, + Constants.PACKAGE_NAME_F_DROID_PRIVILEGED, + ) + }.map { it.packageName } + } + + /** + * Lists GPlay apps directly updatable by App Lounge. + * + * GPlay apps installed by App Lounge alone can have their installer package + * set as "com.android.vending". + */ + private fun getGPlayInstalledApps(): List { + return userApplications.filter { + pkgManagerModule.getInstallerName(it.packageName) in listOf( + Constants.PACKAGE_NAME_ANDROID_VENDING, + ) + }.map { it.packageName } + } + + /** + * Lists apps installed from other app stores. + * (F-Droid client is not considered a third party source.) + * + * @return List of package names of apps installed from other app stores like + * Aurora Store, Apk mirror, apps installed from browser, apps from ADB etc. + */ + private fun getAppsFromOtherStores(): List { + return userApplications.filter { + it.packageName !in (getGPlayInstalledApps() + getOpenSourceInstalledApps()) + }.map { it.packageName } + } + suspend fun getUpdates(authData: AuthData): Pair, ResultStatus> { val pkgList = mutableListOf() val updateList = mutableListOf() -- GitLab From 9af69a0becfd8cd1407bd594cca23495a275e3de Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Tue, 18 Apr 2023 02:44:20 +0530 Subject: [PATCH 06/13] UpdatesManagerImpl - getUpdatesFromApi --- .../updates/manager/UpdatesManagerImpl.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt index aff8e1704..9b43d2c94 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt @@ -138,6 +138,29 @@ class UpdatesManagerImpl @Inject constructor( return Pair(nonFaultyUpdateList, status) } + /** + * Runs API (GPlay api or CleanApk) and accumulates the updatable apps + * into a provided list. + * + * @param apiFunction Function that calls an API method to fetch update information. + * Apps returned is filtered to get only the apps which can be downloaded and updated. + * @param updateAccumulationList A list into which the filtered results from + * [apiFunction] is stored. The caller needs to read this list to get the update info. + * + * @return ResultStatus from calling [apiFunction]. + */ + private suspend fun getUpdatesFromApi( + apiFunction: suspend () -> Pair, ResultStatus>, + updateAccumulationList: MutableList, + ): ResultStatus { + val apiResult = apiFunction() + val updatableApps = apiResult.first.filter { + it.status == Status.UPDATABLE && it.filterLevel.isUnFiltered() + } + updateAccumulationList.addAll(updatableApps) + return apiResult.second + } + suspend fun getUpdatesOSS(): Pair, ResultStatus> { val pkgList = mutableListOf() val updateList = mutableListOf() -- GitLab From e66a4c83a960694a27863c2a2befbbf19191cf8f Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 11 May 2023 01:26:39 +0530 Subject: [PATCH 07/13] getUpdatesFromApi - move method --- .../updates/manager/UpdatesManagerImpl.kt | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt index 9b43d2c94..363fd3442 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt @@ -138,29 +138,6 @@ class UpdatesManagerImpl @Inject constructor( return Pair(nonFaultyUpdateList, status) } - /** - * Runs API (GPlay api or CleanApk) and accumulates the updatable apps - * into a provided list. - * - * @param apiFunction Function that calls an API method to fetch update information. - * Apps returned is filtered to get only the apps which can be downloaded and updated. - * @param updateAccumulationList A list into which the filtered results from - * [apiFunction] is stored. The caller needs to read this list to get the update info. - * - * @return ResultStatus from calling [apiFunction]. - */ - private suspend fun getUpdatesFromApi( - apiFunction: suspend () -> Pair, ResultStatus>, - updateAccumulationList: MutableList, - ): ResultStatus { - val apiResult = apiFunction() - val updatableApps = apiResult.first.filter { - it.status == Status.UPDATABLE && it.filterLevel.isUnFiltered() - } - updateAccumulationList.addAll(updatableApps) - return apiResult.second - } - suspend fun getUpdatesOSS(): Pair, ResultStatus> { val pkgList = mutableListOf() val updateList = mutableListOf() @@ -192,6 +169,29 @@ class UpdatesManagerImpl @Inject constructor( return Pair(nonFaultyUpdateList, status) } + /** + * Runs API (GPlay api or CleanApk) and accumulates the updatable apps + * into a provided list. + * + * @param apiFunction Function that calls an API method to fetch update information. + * Apps returned is filtered to get only the apps which can be downloaded and updated. + * @param updateAccumulationList A list into which the filtered results from + * [apiFunction] is stored. The caller needs to read this list to get the update info. + * + * @return ResultStatus from calling [apiFunction]. + */ + private suspend fun getUpdatesFromApi( + apiFunction: suspend () -> Pair, ResultStatus>, + updateAccumulationList: MutableList, + ): ResultStatus { + val apiResult = apiFunction() + val updatableApps = apiResult.first.filter { + it.status == Status.UPDATABLE && it.filterLevel.isUnFiltered() + } + updateAccumulationList.addAll(updatableApps) + return apiResult.second + } + fun getApplicationCategoryPreference(): List { return fusedAPIRepository.getApplicationCategoryPreference() } -- GitLab From a3c84caecddef357f3a9118329cb57487f338697 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Tue, 18 Apr 2023 02:59:51 +0530 Subject: [PATCH 08/13] UpdatesManagerImpl - getUpdates() - do not consider apps from other stores --- .../updates/manager/UpdatesManagerImpl.kt | 54 +++++++------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt index 363fd3442..691319289 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt @@ -90,50 +90,36 @@ class UpdatesManagerImpl @Inject constructor( } suspend fun getUpdates(authData: AuthData): Pair, ResultStatus> { - val pkgList = mutableListOf() val updateList = mutableListOf() var status = ResultStatus.OK - val userApplications = pkgManagerModule.getAllUserApps() - userApplications.forEach { pkgList.add(it.packageName) } + val openSourceInstalledApps = getOpenSourceInstalledApps().toMutableList() + val gPlayInstalledApps = getGPlayInstalledApps().toMutableList() - if (pkgList.isNotEmpty()) { - // Get updates from CleanAPK + // Get open source app updates + if (openSourceInstalledApps.isNotEmpty()) { + status = getUpdatesFromApi({ + fusedAPIRepository.getApplicationDetails( + openSourceInstalledApps, + authData, + Origin.CLEANAPK + ) + }, updateList) + } - val cleanAPKResult = fusedAPIRepository.getApplicationDetails( - pkgList, - authData, - Origin.CLEANAPK - ) - cleanAPKResult.first.forEach { - if (it.package_name in pkgList) pkgList.remove(it.package_name) - if (it.status == Status.UPDATABLE && it.filterLevel.isUnFiltered()) updateList.add(it) - } - cleanAPKResult.second.let { - if (it != ResultStatus.OK) { - status = it - } - } + // Get GPlay app updates + if (getApplicationCategoryPreference().contains(APP_TYPE_ANY) && + gPlayInstalledApps.isNotEmpty()) { - if (getApplicationCategoryPreference().contains(APP_TYPE_ANY)) { - // Check for remaining apps from GPlay - val gPlayResult = fusedAPIRepository.getApplicationDetails( - pkgList, + status = getUpdatesFromApi({ + fusedAPIRepository.getApplicationDetails( + gPlayInstalledApps, authData, Origin.GPLAY ) - gPlayResult.first.forEach { - if (it.status == Status.UPDATABLE && it.filterLevel.isUnFiltered()) updateList.add( - it - ) - } - gPlayResult.second.let { - if (it != ResultStatus.OK) { - status = it - } - } - } + }, updateList) } + val nonFaultyUpdateList = faultyAppRepository.removeFaultyApps(updateList) return Pair(nonFaultyUpdateList, status) } -- GitLab From 3087fa79ee4ff743e57f5226a25f248b9ffcd6cb Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Tue, 18 Apr 2023 03:00:45 +0530 Subject: [PATCH 09/13] UpdatesManagerImpl - getUpdatesOSS() - do not consider apps from other stores --- .../updates/manager/UpdatesManagerImpl.kt | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt index 691319289..c1c5e189e 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt @@ -125,30 +125,19 @@ class UpdatesManagerImpl @Inject constructor( } suspend fun getUpdatesOSS(): Pair, ResultStatus> { - val pkgList = mutableListOf() val updateList = mutableListOf() var status = ResultStatus.OK - val userApplications = pkgManagerModule.getAllUserApps() - userApplications.forEach { pkgList.add(it.packageName) } + val openSourceInstalledApps = getOpenSourceInstalledApps().toMutableList() - if (pkgList.isNotEmpty()) { - // Get updates from CleanAPK - val cleanAPKResult = fusedAPIRepository.getApplicationDetails( - pkgList, - AuthData("", ""), - Origin.CLEANAPK - ) - cleanAPKResult.first.forEach { - if (it.status == Status.UPDATABLE && it.filterLevel.isUnFiltered()) updateList.add( - it + if (openSourceInstalledApps.isNotEmpty()) { + status = getUpdatesFromApi({ + fusedAPIRepository.getApplicationDetails( + openSourceInstalledApps, + AuthData("", ""), + Origin.CLEANAPK ) - } - cleanAPKResult.second.let { - if (it != ResultStatus.OK) { - status = it - } - } + }, updateList) } val nonFaultyUpdateList = faultyAppRepository.removeFaultyApps(updateList) -- GitLab From 686a10f5addaebcdcfb72448401f74792e0ba241 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 11 May 2023 02:54:45 +0530 Subject: [PATCH 10/13] UpdatesManagerImpl - getUpdates() - Consider other store apps --- .../e/apps/updates/manager/UpdatesManagerImpl.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt index c1c5e189e..57fc5f450 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt @@ -96,6 +96,12 @@ class UpdatesManagerImpl @Inject constructor( val openSourceInstalledApps = getOpenSourceInstalledApps().toMutableList() val gPlayInstalledApps = getGPlayInstalledApps().toMutableList() + val otherStoreApps = getAppsFromOtherStores() + + if (preferenceManagerModule.shouldUpdateAppsFromOtherStores()) { + openSourceInstalledApps.addAll(otherStoreApps) + } + // Get open source app updates if (openSourceInstalledApps.isNotEmpty()) { status = getUpdatesFromApi({ @@ -107,6 +113,12 @@ class UpdatesManagerImpl @Inject constructor( }, updateList) } + if (preferenceManagerModule.shouldUpdateAppsFromOtherStores()) { + val updateListFromFDroid = updateList.map { it.package_name } + val otherStoreAppsForGPlay = otherStoreApps - updateListFromFDroid.toSet() + gPlayInstalledApps.addAll(otherStoreAppsForGPlay) + } + // Get GPlay app updates if (getApplicationCategoryPreference().contains(APP_TYPE_ANY) && gPlayInstalledApps.isNotEmpty()) { -- GitLab From 1cd2769304d7c3bec16437d2e93b0e859c5a3d7b Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 11 May 2023 02:56:15 +0530 Subject: [PATCH 11/13] UpdatesManagerImpl - getUpdatesOSS() - Consider other store apps --- .../foundation/e/apps/updates/manager/UpdatesManagerImpl.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt index 57fc5f450..345f5fb45 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt @@ -142,6 +142,12 @@ class UpdatesManagerImpl @Inject constructor( val openSourceInstalledApps = getOpenSourceInstalledApps().toMutableList() + val otherStoreApps = getAppsFromOtherStores() + + if (preferenceManagerModule.shouldUpdateAppsFromOtherStores()) { + openSourceInstalledApps.addAll(otherStoreApps) + } + if (openSourceInstalledApps.isNotEmpty()) { status = getUpdatesFromApi({ fusedAPIRepository.getApplicationDetails( -- GitLab From c3a7d57a9da56f62692557e4fd3be36b84ea14f4 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 11 May 2023 14:23:32 +0530 Subject: [PATCH 12/13] mr suggestion 1 --- .../e/apps/updates/manager/UpdatesManagerImpl.kt | 13 ++++++++++--- .../main/java/foundation/e/apps/utils/Constants.kt | 4 ---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt index 345f5fb45..8df85a767 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt @@ -42,6 +42,13 @@ class UpdatesManagerImpl @Inject constructor( private val faultyAppRepository: FaultyAppRepository, private val preferenceManagerModule: PreferenceManagerModule, ) { + + companion object { + const val PACKAGE_NAME_F_DROID = "org.fdroid.fdroid" + const val PACKAGE_NAME_F_DROID_PRIVILEGED = "org.fdroid.fdroid.privileged" + const val PACKAGE_NAME_ANDROID_VENDING = "com.android.vending" + } + private val TAG = UpdatesManagerImpl::class.java.simpleName private val userApplications: List @@ -56,8 +63,8 @@ class UpdatesManagerImpl @Inject constructor( return userApplications.filter { pkgManagerModule.getInstallerName(it.packageName) in listOf( context.packageName, - Constants.PACKAGE_NAME_F_DROID, - Constants.PACKAGE_NAME_F_DROID_PRIVILEGED, + PACKAGE_NAME_F_DROID, + PACKAGE_NAME_F_DROID_PRIVILEGED, ) }.map { it.packageName } } @@ -71,7 +78,7 @@ class UpdatesManagerImpl @Inject constructor( private fun getGPlayInstalledApps(): List { return userApplications.filter { pkgManagerModule.getInstallerName(it.packageName) in listOf( - Constants.PACKAGE_NAME_ANDROID_VENDING, + PACKAGE_NAME_ANDROID_VENDING, ) }.map { it.packageName } } diff --git a/app/src/main/java/foundation/e/apps/utils/Constants.kt b/app/src/main/java/foundation/e/apps/utils/Constants.kt index 2f04b8f0e..d8083adaf 100644 --- a/app/src/main/java/foundation/e/apps/utils/Constants.kt +++ b/app/src/main/java/foundation/e/apps/utils/Constants.kt @@ -6,8 +6,4 @@ object Constants { const val PREFERENCE_SHOW_FOSS = "showFOSSApplications" const val PREFERENCE_SHOW_PWA = "showPWAApplications" const val PREFERENCE_SHOW_GPLAY = "showAllApplications" - - const val PACKAGE_NAME_F_DROID = "org.fdroid.fdroid" - const val PACKAGE_NAME_F_DROID_PRIVILEGED = "org.fdroid.fdroid.privileged" - const val PACKAGE_NAME_ANDROID_VENDING = "com.android.vending" } -- GitLab From 172c4c5a457672b421662b2319c6b7b3b323f9d9 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 11 May 2023 14:24:51 +0530 Subject: [PATCH 13/13] mr suggestion 2 --- .../updates/manager/UpdatesManagerImpl.kt | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt index 8df85a767..97ef1bdd6 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerImpl.kt @@ -54,48 +54,6 @@ class UpdatesManagerImpl @Inject constructor( private val userApplications: List get() = pkgManagerModule.getAllUserApps() - /** - * Lists apps directly updatable by App Lounge from the Open Source category. - * (This includes apps installed by F-Droid client app, if used by the user; - * F-Droid is not considered a third party source.) - */ - private fun getOpenSourceInstalledApps(): List { - return userApplications.filter { - pkgManagerModule.getInstallerName(it.packageName) in listOf( - context.packageName, - PACKAGE_NAME_F_DROID, - PACKAGE_NAME_F_DROID_PRIVILEGED, - ) - }.map { it.packageName } - } - - /** - * Lists GPlay apps directly updatable by App Lounge. - * - * GPlay apps installed by App Lounge alone can have their installer package - * set as "com.android.vending". - */ - private fun getGPlayInstalledApps(): List { - return userApplications.filter { - pkgManagerModule.getInstallerName(it.packageName) in listOf( - PACKAGE_NAME_ANDROID_VENDING, - ) - }.map { it.packageName } - } - - /** - * Lists apps installed from other app stores. - * (F-Droid client is not considered a third party source.) - * - * @return List of package names of apps installed from other app stores like - * Aurora Store, Apk mirror, apps installed from browser, apps from ADB etc. - */ - private fun getAppsFromOtherStores(): List { - return userApplications.filter { - it.packageName !in (getGPlayInstalledApps() + getOpenSourceInstalledApps()) - }.map { it.packageName } - } - suspend fun getUpdates(authData: AuthData): Pair, ResultStatus> { val updateList = mutableListOf() var status = ResultStatus.OK @@ -169,6 +127,48 @@ class UpdatesManagerImpl @Inject constructor( return Pair(nonFaultyUpdateList, status) } + /** + * Lists apps directly updatable by App Lounge from the Open Source category. + * (This includes apps installed by F-Droid client app, if used by the user; + * F-Droid is not considered a third party source.) + */ + private fun getOpenSourceInstalledApps(): List { + return userApplications.filter { + pkgManagerModule.getInstallerName(it.packageName) in listOf( + context.packageName, + PACKAGE_NAME_F_DROID, + PACKAGE_NAME_F_DROID_PRIVILEGED, + ) + }.map { it.packageName } + } + + /** + * Lists GPlay apps directly updatable by App Lounge. + * + * GPlay apps installed by App Lounge alone can have their installer package + * set as "com.android.vending". + */ + private fun getGPlayInstalledApps(): List { + return userApplications.filter { + pkgManagerModule.getInstallerName(it.packageName) in listOf( + PACKAGE_NAME_ANDROID_VENDING, + ) + }.map { it.packageName } + } + + /** + * Lists apps installed from other app stores. + * (F-Droid client is not considered a third party source.) + * + * @return List of package names of apps installed from other app stores like + * Aurora Store, Apk mirror, apps installed from browser, apps from ADB etc. + */ + private fun getAppsFromOtherStores(): List { + return userApplications.filter { + it.packageName !in (getGPlayInstalledApps() + getOpenSourceInstalledApps()) + }.map { it.packageName } + } + /** * Runs API (GPlay api or CleanApk) and accumulates the updatable apps * into a provided list. -- GitLab