From 4ea4115371d07993c69ec11927edccac9f5a52aa Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Wed, 10 Dec 2025 09:52:34 +0100 Subject: [PATCH 1/6] style: fix NoConsecutiveBlankLines detekt errors --- app/detekt-baseline.xml | 9 -------- .../foundation/e/apps/data/NetworkHandler.kt | 1 - .../data/application/ApplicationRepository.kt | 17 +++++++------- .../data/cleanapk/CleanApkSearchHelper.kt | 2 -- .../foundation/e/apps/data/exodus/Report.kt | 2 -- .../data/playstore/PlayStoreSearchHelper.kt | 2 -- .../data/playstore/utils/GPlayHttpClient.kt | 15 ++++++------ .../foundation/e/apps/di/CommonUtilsModule.kt | 23 +++++++++---------- .../receivers/DumpAppInstallStatusReceiver.kt | 1 - .../apps/ui/categories/CategoriesViewModel.kt | 1 - 10 files changed, 26 insertions(+), 47 deletions(-) diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index d8771b24f..7ccef0102 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -183,15 +183,6 @@ NoBlankLineBeforeRbrace:UpdatableSystemAppsApi.kt$UpdatableSystemAppsApi$ NoBlankLineBeforeRbrace:UpdatesManagerRepository.kt$UpdatesManagerRepository$ NoBlankLineBeforeRbrace:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$ - NoConsecutiveBlankLines:ApplicationRepository.kt$ApplicationRepository$ - NoConsecutiveBlankLines:CategoriesViewModel.kt$CategoriesViewModel$ - NoConsecutiveBlankLines:CleanApkSearchHelper.kt$ - NoConsecutiveBlankLines:CommonUtilsModule.kt$CommonUtilsModule$ - NoConsecutiveBlankLines:DumpAppInstallStatusReceiver.kt$ - NoConsecutiveBlankLines:GPlayHttpClient.kt$GPlayHttpClient$ - NoConsecutiveBlankLines:NetworkHandler.kt$ - NoConsecutiveBlankLines:PlayStoreSearchHelper.kt$ - NoConsecutiveBlankLines:Report.kt$ NoEmptyFirstLineInMethodBlock:AgeRatingProvider.kt$AgeRatingProvider$ NoEmptyFirstLineInMethodBlock:AppInstallProcessor.kt$AppInstallProcessor$ NoEmptyFirstLineInMethodBlock:AppLoungePackageManager.kt$AppLoungePackageManager$ diff --git a/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt index 3e2e147e7..9ea78c446 100644 --- a/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt +++ b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt @@ -111,7 +111,6 @@ suspend fun retryWithBackoff(retryDelayInSeconds: Int = -1, operation: suspe private fun calculateRetryDelay(retryDelayInSecond: Int) = if (retryDelayInSecond < 0) INITIAL_DELAY_RETRY_IN_SECONDS else retryDelayInSecond * 2 - private fun shouldRetry(result: T, retryDelayInSecond: Int) = result is ResultSupreme<*> && !result.isSuccess() && diff --git a/app/src/main/java/foundation/e/apps/data/application/ApplicationRepository.kt b/app/src/main/java/foundation/e/apps/data/application/ApplicationRepository.kt index 471634516..e4c2087a5 100644 --- a/app/src/main/java/foundation/e/apps/data/application/ApplicationRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/application/ApplicationRepository.kt @@ -46,15 +46,14 @@ class ApplicationRepository @Inject constructor( 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>> { - return homeApi.fetchHomeScreenData() - } + const val APP_TYPE_ANY = "any" + const val APP_TYPE_OPEN = "open" + const val APP_TYPE_PWA = "pwa" + } + + suspend fun getHomeScreenData(): LiveData>> { + return homeApi.fetchHomeScreenData() + } fun getSelectedAppTypes(): List { val selectedAppTypes = mutableListOf() diff --git a/app/src/main/java/foundation/e/apps/data/cleanapk/CleanApkSearchHelper.kt b/app/src/main/java/foundation/e/apps/data/cleanapk/CleanApkSearchHelper.kt index 9e37ec9c7..ef9f2739e 100644 --- a/app/src/main/java/foundation/e/apps/data/cleanapk/CleanApkSearchHelper.kt +++ b/app/src/main/java/foundation/e/apps/data/cleanapk/CleanApkSearchHelper.kt @@ -42,7 +42,6 @@ class CleanApkSearchHelper @Inject constructor( NUMBER_OF_ITEMS, NUMBER_OF_PAGES ) - searchResult.body()?.apps.orEmpty() .map { it.apply { source = mapSource(it) } } } @@ -54,4 +53,3 @@ class CleanApkSearchHelper @Inject constructor( Source.OPEN_SOURCE } } - diff --git a/app/src/main/java/foundation/e/apps/data/exodus/Report.kt b/app/src/main/java/foundation/e/apps/data/exodus/Report.kt index 4de23637d..fc334eeb0 100644 --- a/app/src/main/java/foundation/e/apps/data/exodus/Report.kt +++ b/app/src/main/java/foundation/e/apps/data/exodus/Report.kt @@ -5,7 +5,6 @@ import com.google.gson.annotations.SerializedName data class ApiResponse( val results: List ) - data class Report( val id: Int, val handle: String, @@ -21,4 +20,3 @@ data class Report( @SerializedName("trackers_class") val trackersClass: String, val version: String ) - diff --git a/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreSearchHelper.kt b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreSearchHelper.kt index f87b636f9..94a340bd9 100644 --- a/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreSearchHelper.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreSearchHelper.kt @@ -36,7 +36,6 @@ class PlayStoreSearchHelper @Inject constructor( .using(gPlayHttpClient) .searchResults(keyword).streamClusters.values.firstOrNull()?.clusterAppList ?: emptyList() } - suspend fun getSearchSuggestions(keyword: String) = withContext(Dispatchers.IO) { WebSearchHelper() .using(gPlayHttpClient) @@ -45,4 +44,3 @@ class PlayStoreSearchHelper @Inject constructor( .map { SearchSuggestion(it.title, source) } } } - diff --git a/app/src/main/java/foundation/e/apps/data/playstore/utils/GPlayHttpClient.kt b/app/src/main/java/foundation/e/apps/data/playstore/utils/GPlayHttpClient.kt index 235e9ab52..bdb5ec9cb 100644 --- a/app/src/main/java/foundation/e/apps/data/playstore/utils/GPlayHttpClient.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/utils/GPlayHttpClient.kt @@ -60,14 +60,13 @@ class GPlayHttpClient @Inject constructor( const val STATUS_CODE_UNAUTHORIZED = 401 const val STATUS_CODE_TOO_MANY_REQUESTS = 429 private const val URL_SUBSTRING_PURCHASE = "purchase" - const val STATUS_CODE_TIMEOUT = 408 - private const val INITIAL_RESPONSE_CODE = 100 - } - - - private val _responseCode = MutableStateFlow(INITIAL_RESPONSE_CODE) - override val responseCode: StateFlow - get() = _responseCode.asStateFlow() + const val STATUS_CODE_TIMEOUT = 408 + private const val INITIAL_RESPONSE_CODE = 100 + } + + private val _responseCode = MutableStateFlow(INITIAL_RESPONSE_CODE) + override val responseCode: StateFlow + get() = _responseCode.asStateFlow() @VisibleForTesting var okHttpClient = OkHttpClient().newBuilder() diff --git a/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt b/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt index d07bc8c2b..00ef81528 100644 --- a/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt +++ b/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt @@ -109,18 +109,17 @@ object CommonUtilsModule { return Json { prettyPrint = true - ignoreUnknownKeys = true - coerceInputValues = true - serializersModule = module - } - } - - - @Singleton - @Provides - fun provideCache(@ApplicationContext context: Context): Cache { - val cacheSize = (30 * 1024 * 1024).toLong() // 30 MB - return Cache(context.cacheDir, cacheSize) + ignoreUnknownKeys = true + coerceInputValues = true + serializersModule = module + } + } + + @Singleton + @Provides + fun provideCache(@ApplicationContext context: Context): Cache { + val cacheSize = (30 * 1024 * 1024).toLong() // 30 MB + return Cache(context.cacheDir, cacheSize) } /** diff --git a/app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt b/app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt index 74631ffe7..fdac17e2e 100644 --- a/app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt +++ b/app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt @@ -38,7 +38,6 @@ import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject - @AndroidEntryPoint class DumpAppInstallStatusReceiver : BroadcastReceiver() { diff --git a/app/src/main/java/foundation/e/apps/ui/categories/CategoriesViewModel.kt b/app/src/main/java/foundation/e/apps/ui/categories/CategoriesViewModel.kt index 5b4972760..90c6334f2 100644 --- a/app/src/main/java/foundation/e/apps/ui/categories/CategoriesViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/categories/CategoriesViewModel.kt @@ -42,7 +42,6 @@ class CategoriesViewModel @Inject constructor( val exceptionsLiveData: MutableLiveData> = MutableLiveData() val exceptions = ArrayList() - fun loadCategoriesList(type: CategoryType) { viewModelScope.launch { val categoriesData = applicationRepository.getCategoriesList(type) -- GitLab From 075f4423269ef0dd386233516645488cfaaf05de Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Wed, 10 Dec 2025 09:57:56 +0100 Subject: [PATCH 2/6] style: fix NoBlankLineBeforeRbrace detekt errors --- app/detekt-baseline.xml | 12 ------------ .../java/foundation/e/apps/data/NetworkHandler.kt | 1 - .../e/apps/data/gitlab/SystemAppDefinitionApi.kt | 1 - .../e/apps/data/gitlab/UpdatableSystemAppsApi.kt | 1 - .../e/apps/data/parentalcontrol/ContentRatingDao.kt | 1 - .../fdroid/FDroidAntiFeatureRepository.kt | 1 - .../data/parentalcontrol/fdroid/FDroidMonitorApi.kt | 1 - .../data/parentalcontrol/googleplay/AgeGroupApi.kt | 1 - .../e/apps/data/updates/UpdatesManagerRepository.kt | 1 - .../e/apps/di/network/RetrofitApiModule.kt | 1 - .../e/apps/domain/ValidateAppAgeLimitUseCase.kt | 2 -- .../foundation/e/apps/provider/AgeRatingProvider.kt | 1 - .../ui/applicationlist/ApplicationListRVAdapter.kt | 1 - 13 files changed, 25 deletions(-) diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 7ccef0102..2dbdf982c 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -171,18 +171,6 @@ MultiLineIfElse:SearchViewModel.kt$SearchViewModel$searchRepository.getSearchSuggestions(it) MultiLineIfElse:SettingsFragment.kt$SettingsFragment$true MultiLineIfElse:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$fetchedContentRating - NoBlankLineBeforeRbrace:AgeGroupApi.kt$AgeGroupApi$ - NoBlankLineBeforeRbrace:AgeRatingProvider.kt$AgeRatingProvider$ - NoBlankLineBeforeRbrace:ApplicationListRVAdapter.kt$ApplicationListRVAdapter$ - NoBlankLineBeforeRbrace:ContentRatingDao.kt$ContentRatingDao$ - NoBlankLineBeforeRbrace:FDroidAntiFeatureRepository.kt$FDroidAntiFeatureRepository$ - NoBlankLineBeforeRbrace:FDroidMonitorApi.kt$FDroidMonitorApi$ - NoBlankLineBeforeRbrace:NetworkHandler.kt$ - NoBlankLineBeforeRbrace:RetrofitApiModule.kt$RetrofitApiModule$ - NoBlankLineBeforeRbrace:SystemAppDefinitionApi.kt$SystemAppDefinitionApi$ - NoBlankLineBeforeRbrace:UpdatableSystemAppsApi.kt$UpdatableSystemAppsApi$ - NoBlankLineBeforeRbrace:UpdatesManagerRepository.kt$UpdatesManagerRepository$ - NoBlankLineBeforeRbrace:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$ NoEmptyFirstLineInMethodBlock:AgeRatingProvider.kt$AgeRatingProvider$ NoEmptyFirstLineInMethodBlock:AppInstallProcessor.kt$AppInstallProcessor$ NoEmptyFirstLineInMethodBlock:AppLoungePackageManager.kt$AppLoungePackageManager$ diff --git a/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt index 9ea78c446..b5e6b65f2 100644 --- a/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt +++ b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt @@ -97,7 +97,6 @@ suspend fun retryWithBackoff(retryDelayInSeconds: Int = -1, operation: suspe Timber.w("Retrying...: $retryDelayInSeconds") result = retryWithBackoff(calculateRetryDelay(retryDelayInSeconds), operation) } - } catch (e: Exception) { Timber.e(e) if (retryDelayInSeconds < MAX_RETRY_DELAY_IN_SECONDS) { diff --git a/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppDefinitionApi.kt b/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppDefinitionApi.kt index 3800d295b..32cca00ac 100644 --- a/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppDefinitionApi.kt +++ b/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppDefinitionApi.kt @@ -33,5 +33,4 @@ interface SystemAppDefinitionApi { suspend fun getSystemAppUpdateInfo( @Url detailsUrl: String, ): Response - } diff --git a/app/src/main/java/foundation/e/apps/data/gitlab/UpdatableSystemAppsApi.kt b/app/src/main/java/foundation/e/apps/data/gitlab/UpdatableSystemAppsApi.kt index c42ec6a64..d386a5da3 100644 --- a/app/src/main/java/foundation/e/apps/data/gitlab/UpdatableSystemAppsApi.kt +++ b/app/src/main/java/foundation/e/apps/data/gitlab/UpdatableSystemAppsApi.kt @@ -42,5 +42,4 @@ interface UpdatableSystemAppsApi { suspend fun getUpdatableSystemApps( @Path("endPoint") endPoint: EndPoint = EndPoint.ENDPOINT_RELEASE ): Response> - } diff --git a/app/src/main/java/foundation/e/apps/data/parentalcontrol/ContentRatingDao.kt b/app/src/main/java/foundation/e/apps/data/parentalcontrol/ContentRatingDao.kt index f0812b4a1..899c280b1 100644 --- a/app/src/main/java/foundation/e/apps/data/parentalcontrol/ContentRatingDao.kt +++ b/app/src/main/java/foundation/e/apps/data/parentalcontrol/ContentRatingDao.kt @@ -67,5 +67,4 @@ interface ContentRatingDao { @Query("SELECT COUNT(*) FROM ContentRatingEntity WHERE packageName IS NOT NULL AND TRIM(packageName) != ''") suspend fun getContentRatingCount(): Int - } diff --git a/app/src/main/java/foundation/e/apps/data/parentalcontrol/fdroid/FDroidAntiFeatureRepository.kt b/app/src/main/java/foundation/e/apps/data/parentalcontrol/fdroid/FDroidAntiFeatureRepository.kt index a8bbce78c..aae807cb7 100644 --- a/app/src/main/java/foundation/e/apps/data/parentalcontrol/fdroid/FDroidAntiFeatureRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/parentalcontrol/fdroid/FDroidAntiFeatureRepository.kt @@ -55,5 +55,4 @@ constructor( fDroidMonitorApi.getMonitorData().body()?.getNsfwApps() ?: emptyList() }.getOrElse { emptyList() } } - } diff --git a/app/src/main/java/foundation/e/apps/data/parentalcontrol/fdroid/FDroidMonitorApi.kt b/app/src/main/java/foundation/e/apps/data/parentalcontrol/fdroid/FDroidMonitorApi.kt index 0967b9e99..dcc01b764 100644 --- a/app/src/main/java/foundation/e/apps/data/parentalcontrol/fdroid/FDroidMonitorApi.kt +++ b/app/src/main/java/foundation/e/apps/data/parentalcontrol/fdroid/FDroidMonitorApi.kt @@ -29,5 +29,4 @@ interface FDroidMonitorApi { @GET("status/update.json") suspend fun getMonitorData(): Response - } diff --git a/app/src/main/java/foundation/e/apps/data/parentalcontrol/googleplay/AgeGroupApi.kt b/app/src/main/java/foundation/e/apps/data/parentalcontrol/googleplay/AgeGroupApi.kt index 80a40e317..3202a956a 100644 --- a/app/src/main/java/foundation/e/apps/data/parentalcontrol/googleplay/AgeGroupApi.kt +++ b/app/src/main/java/foundation/e/apps/data/parentalcontrol/googleplay/AgeGroupApi.kt @@ -29,5 +29,4 @@ interface AgeGroupApi { @GET("content_ratings.json?ref_type=heads") suspend fun getDefinedAgeGroups(): Response> - } diff --git a/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerRepository.kt b/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerRepository.kt index 54326d683..202f39518 100644 --- a/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerRepository.kt @@ -43,5 +43,4 @@ class UpdatesManagerRepository @Inject constructor( suspend fun getUpdatesOSS(): Pair, ResultStatus> { return updatesManagerImpl.getUpdatesOSS() } - } diff --git a/app/src/main/java/foundation/e/apps/di/network/RetrofitApiModule.kt b/app/src/main/java/foundation/e/apps/di/network/RetrofitApiModule.kt index cf0807d06..e021ae982 100644 --- a/app/src/main/java/foundation/e/apps/di/network/RetrofitApiModule.kt +++ b/app/src/main/java/foundation/e/apps/di/network/RetrofitApiModule.kt @@ -151,5 +151,4 @@ class RetrofitApiModule { .build() .create(SystemAppDefinitionApi::class.java) } - } diff --git a/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt b/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt index ab94f3cd2..6eea5fc32 100644 --- a/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt +++ b/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt @@ -159,7 +159,6 @@ class ValidateAppAgeLimitUseCase @Inject constructor( } private suspend fun verifyContentRatingExists(app: AppInstall): Boolean { - if (app.contentRating.id.isEmpty()) { val fetchedContentRating = gPlayContentRatingRepository.getEnglishContentRating(app.packageName) @@ -174,7 +173,6 @@ class ValidateAppAgeLimitUseCase @Inject constructor( title = contentRatingDb?.ratingTitle ?: "", ) } else fetchedContentRating - } return app.contentRating.title.isNotEmpty() && diff --git a/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt b/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt index e6785d4a2..05e85606e 100644 --- a/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt +++ b/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt @@ -357,5 +357,4 @@ class AgeRatingProvider : ContentProvider() { override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int { throw UnsupportedOperationException("Delete operation is not supported by AgeRatingProvider") } - } diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt index 6e0d6c2c3..8d7d4676c 100644 --- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt +++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt @@ -149,7 +149,6 @@ class ApplicationListRVAdapter( setupInstallButton(searchApp, view, holder) } } - } } -- GitLab From cde57d939c5fed18e0fb5f7c292666cc4836f698 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Wed, 10 Dec 2025 10:06:31 +0100 Subject: [PATCH 3/6] style: fix NoEmptyFirstLineInMethodBlock detekt errors --- app/detekt-baseline.xml | 24 -------------- .../apps/data/application/apps/AppsApiImpl.kt | 2 -- .../application/category/CategoryApiImpl.kt | 2 -- .../apps/data/application/home/HomeApiImpl.kt | 2 -- .../repositories/CleanApkAppsRepository.kt | 2 -- .../gitlab/SystemAppsUpdatesRepository.kt | 3 -- .../e/apps/data/install/FileManager.kt | 2 -- .../data/login/AuthenticatorRepository.kt | 2 -- .../apps/data/login/PlayStoreAuthenticator.kt | 2 -- .../e/apps/data/updates/UpdatesManagerImpl.kt | 2 -- .../apps/domain/ValidateAppAgeLimitUseCase.kt | 2 -- .../install/download/DownloadManagerUtils.kt | 1 - .../StorageNotificationManager.kt | 21 ++++++------ .../install/pkg/AppLoungePackageManager.kt | 3 -- .../workmanager/AppInstallProcessor.kt | 2 -- .../e/apps/microg/AuthDataProvider.kt | 2 -- .../e/apps/provider/AgeRatingProvider.kt | 2 -- .../ui/application/ApplicationViewModel.kt | 32 +++++++++---------- .../ApplicationListFragment.kt | 2 -- .../ApplicationListViewModel.kt | 2 -- .../ui/parentFragment/LoadingViewModel.kt | 2 -- .../apps/ui/parentFragment/TimeoutFragment.kt | 3 -- .../e/apps/ui/search/SearchFragment.kt | 2 -- .../e/apps/ui/settings/SettingsFragment.kt | 2 -- .../e/apps/ui/setup/tos/TOSFragment.kt | 2 -- 25 files changed, 25 insertions(+), 98 deletions(-) diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 2dbdf982c..647663783 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -171,30 +171,6 @@ MultiLineIfElse:SearchViewModel.kt$SearchViewModel$searchRepository.getSearchSuggestions(it) MultiLineIfElse:SettingsFragment.kt$SettingsFragment$true MultiLineIfElse:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$fetchedContentRating - NoEmptyFirstLineInMethodBlock:AgeRatingProvider.kt$AgeRatingProvider$ - NoEmptyFirstLineInMethodBlock:AppInstallProcessor.kt$AppInstallProcessor$ - NoEmptyFirstLineInMethodBlock:AppLoungePackageManager.kt$AppLoungePackageManager$ - NoEmptyFirstLineInMethodBlock:ApplicationListFragment.kt$ApplicationListFragment$ - NoEmptyFirstLineInMethodBlock:ApplicationListViewModel.kt$ApplicationListViewModel$ - NoEmptyFirstLineInMethodBlock:ApplicationViewModel.kt$ApplicationViewModel$ - NoEmptyFirstLineInMethodBlock:AppsApiImpl.kt$AppsApiImpl$ - NoEmptyFirstLineInMethodBlock:AuthDataProvider.kt$AuthDataProvider$ - NoEmptyFirstLineInMethodBlock:AuthenticatorRepository.kt$AuthenticatorRepository$ - NoEmptyFirstLineInMethodBlock:CategoryApiImpl.kt$CategoryApiImpl$ - NoEmptyFirstLineInMethodBlock:CleanApkAppsRepository.kt$CleanApkAppsRepository$ - NoEmptyFirstLineInMethodBlock:DownloadManagerUtils.kt$DownloadManagerUtils$ - NoEmptyFirstLineInMethodBlock:FileManager.kt$FileManager$ - NoEmptyFirstLineInMethodBlock:HomeApiImpl.kt$HomeApiImpl$ - NoEmptyFirstLineInMethodBlock:LoadingViewModel.kt$LoadingViewModel$ - NoEmptyFirstLineInMethodBlock:PlayStoreAuthenticator.kt$PlayStoreAuthenticator$ - NoEmptyFirstLineInMethodBlock:SearchFragment.kt$SearchFragment$ - NoEmptyFirstLineInMethodBlock:SettingsFragment.kt$SettingsFragment$ - NoEmptyFirstLineInMethodBlock:StorageNotificationManager.kt$StorageNotificationManager$ - NoEmptyFirstLineInMethodBlock:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$ - NoEmptyFirstLineInMethodBlock:TOSFragment.kt$TOSFragment$ - NoEmptyFirstLineInMethodBlock:TimeoutFragment.kt$TimeoutFragment$ - NoEmptyFirstLineInMethodBlock:UpdatesManagerImpl.kt$UpdatesManagerImpl$ - NoEmptyFirstLineInMethodBlock:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$ NoMultipleSpaces:AppLoungeDataStore.kt$AppLoungeDataStore$ NoMultipleSpaces:AppLoungePreference.kt$AppLoungePreference$ NoMultipleSpaces:CleanApkPwaRepository.kt$CleanApkPwaRepository$ diff --git a/app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt b/app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt index 537471aa3..2be57a1cc 100644 --- a/app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt @@ -35,7 +35,6 @@ class AppsApiImpl @Inject constructor( private val stores: Stores, private val applicationDataManager: ApplicationDataManager ) : AppsApi { - override suspend fun getCleanapkAppDetails(packageName: String): Pair { var application = Application() val result = handleNetworkResult { @@ -142,7 +141,6 @@ class AppsApiImpl @Inject constructor( var application: Application val result = handleNetworkResult { - val store = stores.getStore(source) ?: throw IllegalStateException("Could not get store") diff --git a/app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt b/app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt index f6b2eb40e..1aa66aef3 100644 --- a/app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt @@ -46,7 +46,6 @@ class CategoryApiImpl @Inject constructor( private val stores: Stores, private val applicationDataManager: ApplicationDataManager ) : CategoryApi { - override suspend fun getCategoriesList(type: CategoryType) : List { val categoryResponses = mutableListOf() @@ -155,7 +154,6 @@ class CategoryApiImpl @Inject constructor( category: String, pageUrl: String? ): ResultSupreme, String>> { - return handleNetworkResult { val cluster = appSources.gplayRepo.getAppsByCategory(category, pageUrl) diff --git a/app/src/main/java/foundation/e/apps/data/application/home/HomeApiImpl.kt b/app/src/main/java/foundation/e/apps/data/application/home/HomeApiImpl.kt index 8cbd454d0..72ce4924e 100644 --- a/app/src/main/java/foundation/e/apps/data/application/home/HomeApiImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/application/home/HomeApiImpl.kt @@ -34,7 +34,6 @@ import javax.inject.Inject class HomeApiImpl @Inject constructor( private val stores: Stores ) : HomeApi { - private enum class AppSourceWeight { GPLAY, OPEN_SOURCE, @@ -46,7 +45,6 @@ class HomeApiImpl @Inject constructor( return liveData { coroutineScope { - if (Source.PLAY_STORE in stores.getStores()) { val result = async { loadHomeData(list, Source.PLAY_STORE) diff --git a/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkAppsRepository.kt b/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkAppsRepository.kt index 2ba0ebf1f..715e50fc6 100644 --- a/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkAppsRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkAppsRepository.kt @@ -37,9 +37,7 @@ class CleanApkAppsRepository @Inject constructor( private val homeConverter: HomeConverter, private val cleanApkSearchHelper: CleanApkSearchHelper ) : CleanApkRepository, CleanApkDownloadInfoFetcher { - override suspend fun getHomeScreenData(list: MutableList): List { - val response = cleanApkRetrofit.getHomeScreenData( CleanApkRetrofit.APP_TYPE_ANY, CleanApkRetrofit.APP_SOURCE_FOSS diff --git a/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepository.kt b/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepository.kt index b05406d49..807a1a9bd 100644 --- a/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepository.kt @@ -45,7 +45,6 @@ class SystemAppsUpdatesRepository @Inject constructor( private val appLoungePackageManager: AppLoungePackageManager, private val releaseInfoApi: ReleaseInfoApi, ) { - private val androidVersionCode by lazy { try { getAndroidVersionCodeChar() } catch (exception: UnsupportedAndroidApiException) { @@ -152,7 +151,6 @@ class SystemAppsUpdatesRepository @Inject constructor( sdkLevel: Int, device: String, ): Application? { - val systemAppProject = systemAppProjectList.find { it.packageName == packageName } ?: return null val detailsUrl = getReleaseDetailsUrl(systemAppProject, releaseType) ?: return null @@ -230,7 +228,6 @@ class SystemAppsUpdatesRepository @Inject constructor( val updatableApps = getUpdatableSystemApps() updatableApps.forEach { - if (!appLoungePackageManager.isInstalled(it)) { // Don't install for system apps which are removed (by root or otherwise) return@forEach diff --git a/app/src/main/java/foundation/e/apps/data/install/FileManager.kt b/app/src/main/java/foundation/e/apps/data/install/FileManager.kt index 2c91a1639..9efa4d976 100644 --- a/app/src/main/java/foundation/e/apps/data/install/FileManager.kt +++ b/app/src/main/java/foundation/e/apps/data/install/FileManager.kt @@ -9,12 +9,10 @@ import java.io.InputStream import java.io.OutputStream object FileManager { - fun moveFile(inputPath: String, inputFile: String, outputPath: String) { var inputStream: InputStream? = null var outputStream: OutputStream? = null try { - // create output directory if it doesn't exist val dir = File(outputPath) if (!dir.exists()) { diff --git a/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt b/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt index 6c98a3801..30d5c0273 100644 --- a/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt @@ -32,7 +32,6 @@ class AuthenticatorRepository @Inject constructor( private val authenticators: List, private val appLoungeDataStore: AppLoungeDataStore ) { - fun getGPlayAuthOrThrow(): AuthData { return kotlin.runCatching { appLoungeDataStore.getAuthData() @@ -46,7 +45,6 @@ class AuthenticatorRepository @Inject constructor( } suspend fun fetchAuthObjects(authTypes: List = listOf()): List { - val authObjectsLocal = ArrayList() for (authenticator in authenticators) { diff --git a/app/src/main/java/foundation/e/apps/data/login/PlayStoreAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/PlayStoreAuthenticator.kt index 8de91e299..4eb56a639 100644 --- a/app/src/main/java/foundation/e/apps/data/login/PlayStoreAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/PlayStoreAuthenticator.kt @@ -51,7 +51,6 @@ class PlayStoreAuthenticator @Inject constructor( private val appLoungeDataStore: AppLoungeDataStore, private val appLoungePreference: AppLoungePreference, ) : StoreAuthenticator, AuthDataValidator { - @Inject lateinit var loginManagerFactory: PlayStoreLoginManagerFactory @@ -161,7 +160,6 @@ class PlayStoreAuthenticator @Inject constructor( } private suspend fun getAuthDataWithGoogleAccount(): ResultSupreme { - val email = appLoungeDataStore.emailData.getSync() val oauthToken = appLoungeDataStore.oauthToken.getSync() val aasToken = appLoungeDataStore.aasToken.getSync() diff --git a/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerImpl.kt index 104fb695e..5d8ad93ea 100644 --- a/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerImpl.kt @@ -50,7 +50,6 @@ class UpdatesManagerImpl @Inject constructor( private val blockedAppRepository: BlockedAppRepository, private val systemAppsUpdatesRepository: SystemAppsUpdatesRepository, ) { - companion object { const val PACKAGE_NAME_F_DROID = "org.fdroid.fdroid" const val PACKAGE_NAME_F_DROID_PRIVILEGED = "org.fdroid.fdroid.privileged" @@ -104,7 +103,6 @@ class UpdatesManagerImpl @Inject constructor( if (getApplicationCategoryPreference().contains(ApplicationRepository.APP_TYPE_ANY) && gPlayInstalledApps.isNotEmpty() ) { - val gplayStatus = getUpdatesFromApi({ getGPlayUpdates( gPlayInstalledApps diff --git a/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt b/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt index 6eea5fc32..ee545317e 100644 --- a/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt +++ b/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt @@ -45,7 +45,6 @@ class ValidateAppAgeLimitUseCase @Inject constructor( private val appsApi: AppsApi, private val contentRatingDao: ContentRatingDao, ) { - companion object { const val KEY_ANTI_FEATURES_NSFW = "NSFW" } @@ -57,7 +56,6 @@ class ValidateAppAgeLimitUseCase @Inject constructor( get() = parentalControlRepository.getSelectedTypeAppManagement() suspend operator fun invoke(app: AppInstall): ResultSupreme { - return when { isParentalControlDisabled() -> ResultSupreme.Success( data = ContentRatingValidity(true) diff --git a/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt b/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt index aad71f538..e872c46a6 100644 --- a/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt +++ b/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt @@ -66,7 +66,6 @@ class DownloadManagerUtils @Inject constructor( delay(1500) // Waiting for downloadmanager to publish the progress of last bytes val fusedDownload = appManagerWrapper.getFusedDownload(downloadId) if (fusedDownload.id.isNotEmpty()) { - if (downloadManager.hasDownloadFailed(downloadId)) { handleDownloadFailed(fusedDownload, downloadId) Timber.e( diff --git a/app/src/main/java/foundation/e/apps/install/notification/StorageNotificationManager.kt b/app/src/main/java/foundation/e/apps/install/notification/StorageNotificationManager.kt index ed467fbf2..51c24e529 100644 --- a/app/src/main/java/foundation/e/apps/install/notification/StorageNotificationManager.kt +++ b/app/src/main/java/foundation/e/apps/install/notification/StorageNotificationManager.kt @@ -38,17 +38,16 @@ class StorageNotificationManager @Inject constructor( @ApplicationContext private val context: Context, private val downloadManager: DownloadManager, ) { - companion object { - const val NOT_ENOUGH_SPACE_NOTIFICATION_ID = 7874 - } - - fun showNotEnoughSpaceNotification(appInstall: AppInstall, downloadId: Long? = null) { - - with(NotificationManagerCompat.from(context)) { - if (ActivityCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) - != PackageManager.PERMISSION_GRANTED - ) { - return + companion object { + const val NOT_ENOUGH_SPACE_NOTIFICATION_ID = 7874 + } + + fun showNotEnoughSpaceNotification(appInstall: AppInstall, downloadId: Long? = null) { + with(NotificationManagerCompat.from(context)) { + if (ActivityCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) + != PackageManager.PERMISSION_GRANTED + ) { + return } val content = getNotEnoughSpaceNotificationContent(appInstall, downloadId) diff --git a/app/src/main/java/foundation/e/apps/install/pkg/AppLoungePackageManager.kt b/app/src/main/java/foundation/e/apps/install/pkg/AppLoungePackageManager.kt index 75aa4ab9a..0c6502f36 100644 --- a/app/src/main/java/foundation/e/apps/install/pkg/AppLoungePackageManager.kt +++ b/app/src/main/java/foundation/e/apps/install/pkg/AppLoungePackageManager.kt @@ -171,7 +171,6 @@ class AppLoungePackageManager @Inject constructor( */ @OptIn(DelicateCoroutinesApi::class) fun installApplication(list: List, packageName: String) { - val sessionId = createInstallSession(packageName, SessionParams.MODE_FULL_INSTALL) val session = packageManager.packageInstaller.openSession(sessionId) @@ -211,7 +210,6 @@ class AppLoungePackageManager @Inject constructor( } private fun createInstallSession(packageName: String, mode: Int): Int { - val packageInstaller = packageManager.packageInstaller val params = SessionParams(mode).apply { setAppPackageName(packageName) @@ -227,7 +225,6 @@ class AppLoungePackageManager @Inject constructor( } private fun syncFile(session: Session, file: File) { - val inputStream = file.inputStream() val outputStream = session.openWrite(file.nameWithoutExtension, 0, -1) inputStream.copyTo(outputStream) diff --git a/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt b/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt index 2831499ed..b860ea122 100644 --- a/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt +++ b/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt @@ -63,7 +63,6 @@ class AppInstallProcessor @Inject constructor( private val appLoungeDataStore: AppLoungeDataStore, private val storageNotificationManager: StorageNotificationManager, ) { - @Inject lateinit var downloadManager: DownloadManagerUtils @@ -275,7 +274,6 @@ class AppInstallProcessor @Inject constructor( Timber.i(">>> dowork started for Fused download name " + appInstall?.name + " " + fusedDownloadId) appInstall?.let { - checkDownloadingState(appInstall) this.isItUpdateWork = diff --git a/app/src/main/java/foundation/e/apps/microg/AuthDataProvider.kt b/app/src/main/java/foundation/e/apps/microg/AuthDataProvider.kt index fb8b2f62f..61714d6ee 100644 --- a/app/src/main/java/foundation/e/apps/microg/AuthDataProvider.kt +++ b/app/src/main/java/foundation/e/apps/microg/AuthDataProvider.kt @@ -37,7 +37,6 @@ import foundation.e.apps.data.preference.AppLoungeDataStore * `foundation.e.apps.permission.AUTH_DATA_PROVIDER` */ class AuthDataProvider : ContentProvider() { - @EntryPoint @InstallIn(SingletonComponent::class) interface DataStoreProvider { @@ -65,7 +64,6 @@ class AuthDataProvider : ContentProvider() { selectionArgs: Array?, sortOrder: String? ): Cursor { - if ( context?.checkCallingOrSelfPermission( AUTH_DATA_PROVIDER_PERMISSION diff --git a/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt b/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt index 05e85606e..5356801d5 100644 --- a/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt +++ b/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt @@ -65,7 +65,6 @@ import kotlinx.coroutines.withContext import timber.log.Timber class AgeRatingProvider : ContentProvider() { - @EntryPoint @InstallIn(SingletonComponent::class) interface ContentProviderEntryPoint { @@ -282,7 +281,6 @@ class AgeRatingProvider : ContentProvider() { }.awaitAll() validityList.forEachIndexed { index: Int, isValid: Boolean? -> if (isValid != true) { - // Collect package names for blocklist cursor.addRow(arrayOf(packageNames[index])) } diff --git a/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt b/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt index 7a9b2f8d1..592a3c4a3 100644 --- a/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt @@ -56,14 +56,13 @@ import javax.inject.Inject class ApplicationViewModel @Inject constructor( downloadProgressLD: DownloadProgressLD, private val applicationRepository: ApplicationRepository, - private val playStoreRepository: PlayStoreRepository, - private val appManagerWrapper: AppManagerWrapper, - private val fDroidAntiFeatureRepository: FDroidAntiFeatureRepository, -) : LoadingViewModel() { - - val applicationLiveData: MutableLiveData> = MutableLiveData() - val appStatus: MutableLiveData = MutableLiveData() - val downloadProgress = downloadProgressLD + private val playStoreRepository: PlayStoreRepository, + private val appManagerWrapper: AppManagerWrapper, + private val fDroidAntiFeatureRepository: FDroidAntiFeatureRepository, +) : LoadingViewModel() { + val applicationLiveData: MutableLiveData> = MutableLiveData() + val appStatus: MutableLiveData = MutableLiveData() + val downloadProgress = downloadProgressLD private val _errorMessageLiveData: MutableLiveData = MutableLiveData() val errorMessageLiveData: MutableLiveData = _errorMessageLiveData @@ -73,15 +72,14 @@ class ApplicationViewModel @Inject constructor( private val _appContentRatingState = MutableStateFlow(ContentRating()) val appContentRatingState = _appContentRatingState.asStateFlow() - fun loadData( - params: ApplicationLoadingParams, - retryBlock: (failedObjects: List) -> Boolean, - ) { - - if (params.isFdroidDeepLink) { - getCleanApkAppDetails(params.packageName) - return - } + fun loadData( + params: ApplicationLoadingParams, + retryBlock: (failedObjects: List) -> Boolean, + ) { + if (params.isFdroidDeepLink) { + getCleanApkAppDetails(params.packageName) + return + } val gPlayObj = params.authObjectList.find { it is AuthObject.GPlayAuth } diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt index c9bfa454d..a270be02a 100644 --- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt @@ -55,7 +55,6 @@ import javax.inject.Inject class ApplicationListFragment : TimeoutFragment(R.layout.fragment_application_list), ApplicationInstaller { - // protected to avoid SyntheticAccessor protected val args: ApplicationListFragmentArgs by navArgs() @@ -218,7 +217,6 @@ class ApplicationListFragment : ) override fun loadData(authObjectList: List) { - /* * If details are once loaded, do not load details again, * Only set the scroll listeners. diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListViewModel.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListViewModel.kt index 172c3b567..72afda213 100644 --- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListViewModel.kt @@ -37,7 +37,6 @@ import javax.inject.Inject class ApplicationListViewModel @Inject constructor( private val applicationRepository: ApplicationRepository ) : ViewModel() { - val appListLiveData: MutableLiveData>?> = MutableLiveData() val exceptionsLiveData: MutableLiveData> = MutableLiveData() val exceptions = ArrayList() @@ -99,7 +98,6 @@ class ApplicationListViewModel @Inject constructor( fun loadMore(category: String) { viewModelScope.launch(Dispatchers.IO) { - if (isLoading || nextPageUrl.isNullOrEmpty()) { return@launch } diff --git a/app/src/main/java/foundation/e/apps/ui/parentFragment/LoadingViewModel.kt b/app/src/main/java/foundation/e/apps/ui/parentFragment/LoadingViewModel.kt index 7e7d2d3cd..175d1e85e 100644 --- a/app/src/main/java/foundation/e/apps/ui/parentFragment/LoadingViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/parentFragment/LoadingViewModel.kt @@ -24,7 +24,6 @@ import foundation.e.apps.data.login.exceptions.GPlayValidationException import foundation.e.apps.data.login.exceptions.UnknownSourceException abstract class LoadingViewModel : ViewModel() { - companion object { private var autoRetried = false } @@ -46,7 +45,6 @@ abstract class LoadingViewModel : ViewModel() { loadingBlock: (successObjects: List, failedObjects: List) -> Unit, retryBlock: (failedObjects: List) -> Boolean, ) { - exceptionsList.clear() val successAuthList = authObjects.filter { it.result.isSuccess() } diff --git a/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt b/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt index 42c17f976..208769524 100644 --- a/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt @@ -57,7 +57,6 @@ import java.util.Locale * https://gitlab.e.foundation/e/backlog/-/issues/5680 */ abstract class TimeoutFragment(@LayoutRes layoutId: Int) : Fragment(layoutId) { - companion object { private const val STATUS_TOO_MANY_REQUESTS = "Status: 429" } @@ -301,10 +300,8 @@ abstract class TimeoutFragment(@LayoutRes layoutId: Int) : Fragment(layoutId) { * is shown to the user. */ fun showSignInError(exception: GPlayLoginException) { - val dialogView = DialogErrorLogBinding.inflate(requireActivity().layoutInflater) dialogView.apply { - moreInfo.setOnClickListener { logDisplay.isVisible = true moreInfo.isVisible = false diff --git a/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt b/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt index 530ad5ff8..ef32ecc9e 100644 --- a/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt @@ -63,7 +63,6 @@ import javax.inject.Inject @AndroidEntryPoint class SearchFragment : Fragment(R.layout.fragment_search), ApplicationInstaller, SearchViewHandler.SearchViewListener { - @Inject lateinit var pwaManager: PwaManager @@ -278,7 +277,6 @@ class SearchFragment : Fragment(R.layout.fragment_search), ApplicationInstaller, } private fun setupSearchFilters() { - binding.filterChipGroup.isSingleSelection = true val listener = OnCheckedChangeListener { _, _ -> diff --git a/app/src/main/java/foundation/e/apps/ui/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/ui/settings/SettingsFragment.kt index 966c260a4..1240ebe67 100644 --- a/app/src/main/java/foundation/e/apps/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/settings/SettingsFragment.kt @@ -57,7 +57,6 @@ import javax.inject.Inject @AndroidEntryPoint class SettingsFragment : PreferenceFragmentCompat() { - private var _binding: CustomPreferenceBinding? = null private val binding get() = _binding!! private val mainActivityViewModel: MainActivityViewModel by activityViewModels() @@ -118,7 +117,6 @@ class SettingsFragment : PreferenceFragmentCompat() { versionInfo?.apply { summary = BuildConfig.VERSION_NAME setOnLongClickListener { - val osVersion = SystemInfoProvider.getSystemProperty(SystemInfoProvider.KEY_LINEAGE_VERSION) val appVersionLabel = getString(R.string.app_version_label) var contents = "$appVersionLabel: $summary" diff --git a/app/src/main/java/foundation/e/apps/ui/setup/tos/TOSFragment.kt b/app/src/main/java/foundation/e/apps/ui/setup/tos/TOSFragment.kt index 82a282be0..f2ed71cf0 100644 --- a/app/src/main/java/foundation/e/apps/ui/setup/tos/TOSFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/setup/tos/TOSFragment.kt @@ -15,7 +15,6 @@ import org.jsoup.Jsoup @AndroidEntryPoint class TOSFragment : Fragment(R.layout.fragment_tos) { - private var _binding: FragmentTosBinding? = null private val binding get() = _binding!! @@ -29,7 +28,6 @@ class TOSFragment : Fragment(R.layout.fragment_tos) { webView = binding.tosWebView viewModel.tocStatus.observe(viewLifecycleOwner) { - if (it == true && webView != null) { binding.TOSWarning.visibility = View.GONE binding.TOSButtons.visibility = View.GONE -- GitLab From cc5a0d87d7908a53152987997bf42264a2ac705c Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Wed, 10 Dec 2025 10:08:28 +0100 Subject: [PATCH 4/6] style: fix SpacingAroundColon detekt errors --- app/detekt-baseline.xml | 4 ---- .../e/apps/data/application/category/CategoryApiImpl.kt | 2 +- .../data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt | 2 +- .../foundation/e/apps/data/login/exceptions/GPlayException.kt | 2 +- .../main/java/foundation/e/apps/utils/eventBus/AppEvent.kt | 2 +- 5 files changed, 4 insertions(+), 8 deletions(-) diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 647663783..a9325e542 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -207,10 +207,6 @@ ReturnCount:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$private suspend fun getApplication( packageName: String, releaseType: OsReleaseType, sdkLevel: Int, device: String, ): Application? ReturnCount:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$private suspend fun getReleaseDetailsUrl( systemAppProject: SystemAppProject, releaseType: OsReleaseType, ): String? ReturnCount:UpdatesManagerImpl.kt$UpdatesManagerImpl$private suspend fun calculateSignatureVersion(latestCleanapkApp: Application): String - SpacingAroundColon:AppEvent.kt$AppEvent.SuccessfulLogin$: - SpacingAroundColon:AppPrivacyInfoRepositoryImpl.kt$AppPrivacyInfoRepositoryImpl$: - SpacingAroundColon:CategoryApiImpl.kt$CategoryApiImpl$: - SpacingAroundColon:GPlayException.kt$GPlayIOException$: SpacingAroundComma:HomeFragment.kt$HomeFragment$, SpacingAroundComma:StorageComputer.kt$StorageComputer$, SpacingAroundCurly:ApplicationListRVAdapter.kt$ApplicationListRVAdapter${ diff --git a/app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt b/app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt index 1aa66aef3..7b5e18f2c 100644 --- a/app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt @@ -46,7 +46,7 @@ class CategoryApiImpl @Inject constructor( private val stores: Stores, private val applicationDataManager: ApplicationDataManager ) : CategoryApi { - override suspend fun getCategoriesList(type: CategoryType) : List { + override suspend fun getCategoriesList(type: CategoryType): List { val categoryResponses = mutableListOf() for ((source, _) in stores.getStores()) { diff --git a/app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt b/app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt index 6fdb98d22..ca72b6ac0 100644 --- a/app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt @@ -61,7 +61,7 @@ class AppPrivacyInfoRepositoryImpl @Inject constructor( return Result.success(buildPrivacyInfo(reports.first())) } - private suspend fun fetchReports(packageName: String) : List { + private suspend fun fetchReports(packageName: String): List { val requestBody = mapOf( "type" to "application", "query" to packageName, diff --git a/app/src/main/java/foundation/e/apps/data/login/exceptions/GPlayException.kt b/app/src/main/java/foundation/e/apps/data/login/exceptions/GPlayException.kt index 2c39dc76e..261246ec6 100644 --- a/app/src/main/java/foundation/e/apps/data/login/exceptions/GPlayException.kt +++ b/app/src/main/java/foundation/e/apps/data/login/exceptions/GPlayException.kt @@ -25,4 +25,4 @@ open class GPlayException( message: String? = null, ) : LoginException(message) -open class GPlayIOException(message: String): GPlayException(false, message) +open class GPlayIOException(message: String) : GPlayException(false, message) diff --git a/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt b/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt index d3097d45e..8d5b38673 100644 --- a/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt +++ b/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt @@ -41,6 +41,6 @@ sealed class AppEvent(val data: Any) { type: String, val onClose: CompletableDeferred? = null ) : AppEvent(type) - class SuccessfulLogin(user: User): AppEvent(user) + class SuccessfulLogin(user: User) : AppEvent(user) class AutoRedirectHome(val message: Int? = null) : AppEvent(message ?: Unit) } -- GitLab From d3464c7950c2fee5065cf2195ce9e5beed8b8f6f Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Wed, 10 Dec 2025 10:15:29 +0100 Subject: [PATCH 5/6] style: fix NoMultipleSpaces detekt errors --- .../repositories/CleanApkPwaRepository.kt | 6 +- .../data/preference/AppLoungeDataStore.kt | 4 +- .../data/preference/AppLoungePreference.kt | 246 +++++++++--------- .../e/apps/ui/PrivacyInfoViewModel.kt | 4 +- .../e/apps/ui/search/SearchViewModel.kt | 6 +- .../e/apps/utils/ExodusUriGenerator.kt | 6 +- 6 files changed, 136 insertions(+), 136 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkPwaRepository.kt b/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkPwaRepository.kt index 76a0494bb..d0b291dba 100644 --- a/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkPwaRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkPwaRepository.kt @@ -9,11 +9,11 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . * */ @@ -41,7 +41,7 @@ class CleanApkPwaRepository @Inject constructor( ) : CleanApkRepository { override suspend fun getHomeScreenData(list: MutableList): List { - val response = cleanApkRetrofit.getHomeScreenData( + val response = cleanApkRetrofit.getHomeScreenData( CleanApkRetrofit.APP_TYPE_PWA, CleanApkRetrofit.APP_SOURCE_ANY ) diff --git a/app/src/main/java/foundation/e/apps/data/preference/AppLoungeDataStore.kt b/app/src/main/java/foundation/e/apps/data/preference/AppLoungeDataStore.kt index 871f9fae3..01e68f073 100644 --- a/app/src/main/java/foundation/e/apps/data/preference/AppLoungeDataStore.kt +++ b/app/src/main/java/foundation/e/apps/data/preference/AppLoungeDataStore.kt @@ -8,11 +8,11 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . * */ diff --git a/app/src/main/java/foundation/e/apps/data/preference/AppLoungePreference.kt b/app/src/main/java/foundation/e/apps/data/preference/AppLoungePreference.kt index c750ce7e1..8571d005c 100644 --- a/app/src/main/java/foundation/e/apps/data/preference/AppLoungePreference.kt +++ b/app/src/main/java/foundation/e/apps/data/preference/AppLoungePreference.kt @@ -1,123 +1,123 @@ -/* - * Copyright (C) 2025 e Foundation - * Copyright (C) 2021-2024 MURENA SAS - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package foundation.e.apps.data.preference - -import android.content.Context -import androidx.core.content.edit -import androidx.preference.PreferenceManager -import dagger.hilt.android.qualifiers.ApplicationContext -import foundation.e.apps.OpenForTesting -import foundation.e.apps.R -import foundation.e.apps.data.Constants.PREFERENCE_SHOW_FOSS -import foundation.e.apps.data.Constants.PREFERENCE_SHOW_GPLAY -import foundation.e.apps.data.Constants.PREFERENCE_SHOW_PWA -import foundation.e.apps.data.enums.User -import javax.inject.Inject -import javax.inject.Singleton - -@Suppress("TooManyFunctions") -@Singleton -@OpenForTesting -class AppLoungePreference @Inject constructor( - @ApplicationContext private val context: Context, - private val appLoungeDataStore: AppLoungeDataStore -) { - - private val preferenceManager = PreferenceManager.getDefaultSharedPreferences(context) - - fun preferredApplicationType(): String { - val showFOSSApplications = preferenceManager.getBoolean(PREFERENCE_SHOW_FOSS, false) - val showPWAApplications = preferenceManager.getBoolean(PREFERENCE_SHOW_PWA, false) - - return when { - showFOSSApplications -> "open" - showPWAApplications -> "pwa" - else -> "any" - } - } - - fun isOpenSourceSelected() = preferenceManager.getBoolean(PREFERENCE_SHOW_FOSS, true) - fun isPWASelected() = preferenceManager.getBoolean(PREFERENCE_SHOW_PWA, true) - fun isPlayStoreSelected() = preferenceManager.getBoolean(PREFERENCE_SHOW_GPLAY, true) - - fun disablePlayStore() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_GPLAY, false) } - fun disableOpenSource() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_FOSS, false) } - fun disablePwa() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_PWA, false) } - - fun enablePlayStore() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_GPLAY, true) } - fun enableOpenSource() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_FOSS, true) } - fun enablePwa() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_PWA, true) } - - fun getUpdateInterval(): Long { - val currentUser = appLoungeDataStore.getUser() - return when (currentUser) { - User.ANONYMOUS -> preferenceManager.getString( - context.getString(R.string.update_check_intervals_anonymous), - context.getString(R.string.preference_update_interval_default_anonymous) - )!!.toLong() - else -> preferenceManager.getString( - 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 - ) - - fun migrateAnonymousUserUpdateInterval() { - val updateIntervals = context.resources.getStringArray(R.array.update_interval_values) - val daily = updateIntervals[0] // 24 - val weekly = updateIntervals[1] // 168 - val monthly = updateIntervals[2] // 720 - val migrationCompleted = preferenceManager.getBoolean( - context.getString(R.string.anonymous_update_migration_completed), - false - ) - - if (migrationCompleted) return - - if (appLoungeDataStore.getUser() == User.ANONYMOUS) { - val currentInterval = preferenceManager.getString( - context.getString(R.string.update_check_intervals), - null - ) - currentInterval?.let { interval -> - val newVal = when (interval) { - daily -> weekly - weekly, monthly -> interval - else -> context.getString(R.string.preference_update_interval_default_anonymous) - } - preferenceManager.edit { - putString( - context.getString(R.string.update_check_intervals_anonymous), - newVal - ) - } - } - } - - preferenceManager.edit { - putBoolean(context.getString(R.string.anonymous_update_migration_completed), true) - } - } -} +/* + * Copyright (C) 2025 e Foundation + * Copyright (C) 2021-2024 MURENA SAS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package foundation.e.apps.data.preference + +import android.content.Context +import androidx.core.content.edit +import androidx.preference.PreferenceManager +import dagger.hilt.android.qualifiers.ApplicationContext +import foundation.e.apps.OpenForTesting +import foundation.e.apps.R +import foundation.e.apps.data.Constants.PREFERENCE_SHOW_FOSS +import foundation.e.apps.data.Constants.PREFERENCE_SHOW_GPLAY +import foundation.e.apps.data.Constants.PREFERENCE_SHOW_PWA +import foundation.e.apps.data.enums.User +import javax.inject.Inject +import javax.inject.Singleton + +@Suppress("TooManyFunctions") +@Singleton +@OpenForTesting +class AppLoungePreference @Inject constructor( + @ApplicationContext private val context: Context, + private val appLoungeDataStore: AppLoungeDataStore +) { + + private val preferenceManager = PreferenceManager.getDefaultSharedPreferences(context) + + fun preferredApplicationType(): String { + val showFOSSApplications = preferenceManager.getBoolean(PREFERENCE_SHOW_FOSS, false) + val showPWAApplications = preferenceManager.getBoolean(PREFERENCE_SHOW_PWA, false) + + return when { + showFOSSApplications -> "open" + showPWAApplications -> "pwa" + else -> "any" + } + } + + fun isOpenSourceSelected() = preferenceManager.getBoolean(PREFERENCE_SHOW_FOSS, true) + fun isPWASelected() = preferenceManager.getBoolean(PREFERENCE_SHOW_PWA, true) + fun isPlayStoreSelected() = preferenceManager.getBoolean(PREFERENCE_SHOW_GPLAY, true) + + fun disablePlayStore() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_GPLAY, false) } + fun disableOpenSource() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_FOSS, false) } + fun disablePwa() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_PWA, false) } + + fun enablePlayStore() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_GPLAY, true) } + fun enableOpenSource() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_FOSS, true) } + fun enablePwa() = preferenceManager.edit { putBoolean(PREFERENCE_SHOW_PWA, true) } + + fun getUpdateInterval(): Long { + val currentUser = appLoungeDataStore.getUser() + return when (currentUser) { + User.ANONYMOUS -> preferenceManager.getString( + context.getString(R.string.update_check_intervals_anonymous), + context.getString(R.string.preference_update_interval_default_anonymous) + )!!.toLong() + else -> preferenceManager.getString( + 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 + ) + + fun migrateAnonymousUserUpdateInterval() { + val updateIntervals = context.resources.getStringArray(R.array.update_interval_values) + val daily = updateIntervals[0] // 24 + val weekly = updateIntervals[1] // 168 + val monthly = updateIntervals[2] // 720 + val migrationCompleted = preferenceManager.getBoolean( + context.getString(R.string.anonymous_update_migration_completed), + false + ) + + if (migrationCompleted) return + + if (appLoungeDataStore.getUser() == User.ANONYMOUS) { + val currentInterval = preferenceManager.getString( + context.getString(R.string.update_check_intervals), + null + ) + currentInterval?.let { interval -> + val newVal = when (interval) { + daily -> weekly + weekly, monthly -> interval + else -> context.getString(R.string.preference_update_interval_default_anonymous) + } + preferenceManager.edit { + putString( + context.getString(R.string.update_check_intervals_anonymous), + newVal + ) + } + } + } + + preferenceManager.edit { + putBoolean(context.getString(R.string.anonymous_update_migration_completed), true) + } + } +} diff --git a/app/src/main/java/foundation/e/apps/ui/PrivacyInfoViewModel.kt b/app/src/main/java/foundation/e/apps/ui/PrivacyInfoViewModel.kt index c21b0f85d..3dfcb2fc6 100644 --- a/app/src/main/java/foundation/e/apps/ui/PrivacyInfoViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/PrivacyInfoViewModel.kt @@ -31,7 +31,7 @@ class PrivacyInfoViewModel @Inject constructor( fun getAppPrivacyInfoLiveData(application: Application): LiveData> { val privacyInfo = MutableLiveData>() loadPrivacyInfoJobs[application.package_name] = viewModelScope.launch { - privacyInfo.value = fetchEmitAppPrivacyInfo(application) + privacyInfo.value = fetchEmitAppPrivacyInfo(application) } return privacyInfo @@ -89,7 +89,7 @@ class PrivacyInfoViewModel @Inject constructor( } fun shouldRequestExodusReport(application: Application?): Boolean { - if (application?.hasExodusPrivacyRating() == false) { + if (application?.hasExodusPrivacyRating() == false) { return true } diff --git a/app/src/main/java/foundation/e/apps/ui/search/SearchViewModel.kt b/app/src/main/java/foundation/e/apps/ui/search/SearchViewModel.kt index b34883055..64dc8a82a 100644 --- a/app/src/main/java/foundation/e/apps/ui/search/SearchViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/search/SearchViewModel.kt @@ -8,11 +8,11 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . * */ @@ -219,7 +219,7 @@ class SearchViewModel @Inject constructor( private fun hasTrackers(app: Application): Boolean { return when { - app.privacyScore == 0 -> true // Manually blocked apps (Facebook etc.) + app.privacyScore == 0 -> true // Manually blocked apps (Facebook etc.) else -> false } } diff --git a/app/src/main/java/foundation/e/apps/utils/ExodusUriGenerator.kt b/app/src/main/java/foundation/e/apps/utils/ExodusUriGenerator.kt index bf5848884..3305a2042 100644 --- a/app/src/main/java/foundation/e/apps/utils/ExodusUriGenerator.kt +++ b/app/src/main/java/foundation/e/apps/utils/ExodusUriGenerator.kt @@ -8,11 +8,11 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . * */ @@ -49,7 +49,7 @@ object ExodusUriGenerator { .appendPath("analysis") .appendPath("submit") .fragment(packageName) - .build() // Example: https://reports.exodus-privacy.eu.org/en/analysis/submit/#packagename + .build() // Example: https://reports.exodus-privacy.eu.org/en/analysis/submit/#packagename } private fun getLanguage(param: String): String { -- GitLab From 3fe63943834b348879d06f722fdb82b98e0dfeb6 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Wed, 10 Dec 2025 10:23:07 +0100 Subject: [PATCH 6/6] style: fix misc spacing detekt errors --- app/detekt-baseline.xml | 16 ---- .../downloadInfo/DownloadInfoApiImpl.kt | 2 +- .../gitlab/SystemAppsUpdatesRepository.kt | 11 ++- .../e/apps/provider/AgeRatingProvider.kt | 3 +- .../subFrags/ApplicationDialogFragment.kt | 86 ++++++++++--------- .../ApplicationListRVAdapter.kt | 2 +- .../foundation/e/apps/ui/home/HomeFragment.kt | 4 +- .../signin/LocaleChangedBroadcastReceiver.kt | 2 + .../e/apps/utils/NetworkStatusManager.kt | 3 +- .../e/apps/utils/StorageComputer.kt | 2 +- 10 files changed, 60 insertions(+), 71 deletions(-) diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index a9325e542..fb141cb44 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -171,14 +171,6 @@ MultiLineIfElse:SearchViewModel.kt$SearchViewModel$searchRepository.getSearchSuggestions(it) MultiLineIfElse:SettingsFragment.kt$SettingsFragment$true MultiLineIfElse:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$fetchedContentRating - NoMultipleSpaces:AppLoungeDataStore.kt$AppLoungeDataStore$ - NoMultipleSpaces:AppLoungePreference.kt$AppLoungePreference$ - NoMultipleSpaces:CleanApkPwaRepository.kt$CleanApkPwaRepository$ - NoMultipleSpaces:ExodusUriGenerator.kt$ExodusUriGenerator$ - NoMultipleSpaces:PrivacyInfoViewModel.kt$PrivacyInfoViewModel$ - NoMultipleSpaces:SearchViewModel.kt$SearchViewModel$ - NoSemicolons:AgeRatingProvider.kt$AgeRatingProvider.UriCode.AgeRating$; - NoTrailingSpaces:DownloadInfoApiImpl.kt$DownloadInfoApiImpl$ NoWildcardImports:SystemAppsUpdatesRepository.kt$import foundation.e.apps.data.gitlab.UpdatableSystemAppsApi.* PrintStackTrace:AppPrivacyInfoRepositoryImpl.kt$AppPrivacyInfoRepositoryImpl$e PrintStackTrace:CommonUtilsModule.kt$CommonUtilsModule$e @@ -207,14 +199,6 @@ ReturnCount:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$private suspend fun getApplication( packageName: String, releaseType: OsReleaseType, sdkLevel: Int, device: String, ): Application? ReturnCount:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$private suspend fun getReleaseDetailsUrl( systemAppProject: SystemAppProject, releaseType: OsReleaseType, ): String? ReturnCount:UpdatesManagerImpl.kt$UpdatesManagerImpl$private suspend fun calculateSignatureVersion(latestCleanapkApp: Application): String - SpacingAroundComma:HomeFragment.kt$HomeFragment$, - SpacingAroundComma:StorageComputer.kt$StorageComputer$, - SpacingAroundCurly:ApplicationListRVAdapter.kt$ApplicationListRVAdapter${ - SpacingAroundKeyword:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$catch - SpacingAroundParens:NetworkStatusManager.kt$NetworkStatusManager$( - SpacingBetweenDeclarationsWithAnnotations:ApplicationDialogFragment.kt$ApplicationDialogFragment$@DrawableRes private var drawableResId: Int = -1 - SpacingBetweenDeclarationsWithAnnotations:LocaleChangedBroadcastReceiver.kt$LocaleChangedBroadcastReceiver$@Inject lateinit var cache: Cache - SpacingBetweenDeclarationsWithAnnotations:LocaleChangedBroadcastReceiver.kt$LocaleChangedBroadcastReceiver$@Inject lateinit var json: Json SpreadOperator:DownloadProgressLD.kt$DownloadProgressLD$(*downloadingIds.toLongArray()) SpreadOperator:EglExtensionProvider.kt$EglExtensionProvider$(*`as`) SpreadOperator:NativeDeviceInfoProviderModule.kt$NativeDeviceInfoProviderModule$(*context.assets.locales) diff --git a/app/src/main/java/foundation/e/apps/data/application/downloadInfo/DownloadInfoApiImpl.kt b/app/src/main/java/foundation/e/apps/data/application/downloadInfo/DownloadInfoApiImpl.kt index 0bc6ae9c7..47a1b720c 100644 --- a/app/src/main/java/foundation/e/apps/data/application/downloadInfo/DownloadInfoApiImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/application/downloadInfo/DownloadInfoApiImpl.kt @@ -64,7 +64,7 @@ class DownloadInfoApiImpl @Inject constructor( Source.OPEN_SOURCE -> { updateDownloadInfoFromCleanApk(appInstall, list) } - + Source.PWA -> { updateDownloadInfoFromCleanApk(appInstall, list) } diff --git a/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepository.kt b/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepository.kt index 807a1a9bd..7728882f2 100644 --- a/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepository.kt @@ -46,10 +46,13 @@ class SystemAppsUpdatesRepository @Inject constructor( private val releaseInfoApi: ReleaseInfoApi, ) { private val androidVersionCode by lazy { - try { getAndroidVersionCodeChar() } - catch (exception: UnsupportedAndroidApiException) { - Timber.w(exception.message, - "Android API isn't in supported range to update some system apps") + try { + getAndroidVersionCodeChar() + } catch (exception: UnsupportedAndroidApiException) { + Timber.w( + exception.message, + "Android API isn't in supported range to update some system apps" + ) "UnsupportedAndroidAPI" } } diff --git a/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt b/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt index 5356801d5..3c2da59ee 100644 --- a/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt +++ b/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt @@ -97,8 +97,7 @@ class AgeRatingProvider : ContentProvider() { private enum class UriCode(val code: Int) { LoginType(1), - AgeRating(2), - ; + AgeRating(2) } private val uriMatcher by lazy { diff --git a/app/src/main/java/foundation/e/apps/ui/application/subFrags/ApplicationDialogFragment.kt b/app/src/main/java/foundation/e/apps/ui/application/subFrags/ApplicationDialogFragment.kt index 92b0b4a38..ad8f3ef42 100644 --- a/app/src/main/java/foundation/e/apps/ui/application/subFrags/ApplicationDialogFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/application/subFrags/ApplicationDialogFragment.kt @@ -34,48 +34,50 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.R -@AndroidEntryPoint -class ApplicationDialogFragment() : DialogFragment() { - - private var title: String? = null - private var message: String? = null - @DrawableRes private var drawableResId: Int = -1 - private var drawable: Drawable? = null - private var positiveButtonText: String? = null - private var positiveButtonAction: (() -> Unit)? = null - private var cancelButtonText: String? = null - private var cancelButtonAction: (() -> Unit)? = null - private var cancelable: Boolean = true - private var onDismissListener: (() -> Unit)? = null - - constructor( - title: String, - message: String, - @DrawableRes drawableResId: Int = -1, - drawable: Drawable? = null, - positiveButtonText: String = "", - positiveButtonAction: (() -> Unit)? = null, - cancelButtonText: String = "", - cancelButtonAction: (() -> Unit)? = null, - cancelable: Boolean = true, - onDismissListener: (() -> Unit)? = null, - ) : this() { - this.title = title - this.message = message - this.drawableResId = drawableResId - this.drawable = drawable - this.positiveButtonText = positiveButtonText - this.positiveButtonAction = positiveButtonAction - this.cancelButtonText = cancelButtonText - this.cancelButtonAction = cancelButtonAction - this.onDismissListener = onDismissListener - this.cancelable = cancelable - isCancelable = cancelable - } - - fun setOnDialogClosedListener(listener: () -> Unit) { - onDismissListener = listener - } +@AndroidEntryPoint +class ApplicationDialogFragment() : DialogFragment() { + + private var title: String? = null + private var message: String? = null + + @DrawableRes + private var drawableResId: Int = -1 + private var drawable: Drawable? = null + private var positiveButtonText: String? = null + private var positiveButtonAction: (() -> Unit)? = null + private var cancelButtonText: String? = null + private var cancelButtonAction: (() -> Unit)? = null + private var cancelable: Boolean = true + private var onDismissListener: (() -> Unit)? = null + + constructor( + title: String, + message: String, + @DrawableRes drawableResId: Int = -1, + drawable: Drawable? = null, + positiveButtonText: String = "", + positiveButtonAction: (() -> Unit)? = null, + cancelButtonText: String = "", + cancelButtonAction: (() -> Unit)? = null, + cancelable: Boolean = true, + onDismissListener: (() -> Unit)? = null, + ) : this() { + this.title = title + this.message = message + this.drawableResId = drawableResId + this.drawable = drawable + this.positiveButtonText = positiveButtonText + this.positiveButtonAction = positiveButtonAction + this.cancelButtonText = cancelButtonText + this.cancelButtonAction = cancelButtonAction + this.onDismissListener = onDismissListener + this.cancelable = cancelable + isCancelable = cancelable + } + + fun setOnDialogClosedListener(listener: () -> Unit) { + onDismissListener = listener + } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val positiveButtonText = diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt index 8d7d4676c..6a0ab95ed 100644 --- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt +++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt @@ -504,7 +504,7 @@ class ApplicationListRVAdapter( AlertDialog.Builder(context).apply { setTitle(R.string.own_update_warning_title) setMessage(R.string.own_update_warning_description) - setPositiveButton(android.R.string.ok) {_, _ -> + setPositiveButton(android.R.string.ok) { _, _ -> installApplication(searchApp) } setNegativeButton(android.R.string.cancel, null) diff --git a/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt b/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt index 4ad17d212..e6c0bda41 100644 --- a/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt @@ -182,8 +182,8 @@ class HomeFragment : Fragment(R.layout.fragment_home), ApplicationInstaller { adapter.currentList.indexOf(fusedApp) ) childViewHolder?.let { - (childViewHolder as HomeChildRVAdapter.ViewHolder).binding.installButton.text = - String.format(Locale.getDefault(),"%d%%", progress) + (childViewHolder as HomeChildRVAdapter.ViewHolder).binding.installButton.text = + String.format(Locale.getDefault(), "%d%%", progress) } } } diff --git a/app/src/main/java/foundation/e/apps/ui/setup/signin/LocaleChangedBroadcastReceiver.kt b/app/src/main/java/foundation/e/apps/ui/setup/signin/LocaleChangedBroadcastReceiver.kt index e8fd90ba5..cc83bca56 100644 --- a/app/src/main/java/foundation/e/apps/ui/setup/signin/LocaleChangedBroadcastReceiver.kt +++ b/app/src/main/java/foundation/e/apps/ui/setup/signin/LocaleChangedBroadcastReceiver.kt @@ -38,8 +38,10 @@ class LocaleChangedBroadcastReceiver : BroadcastReceiver() { @Inject lateinit var appLoungeDataStore: AppLoungeDataStore + @Inject lateinit var json: Json + @Inject lateinit var cache: Cache diff --git a/app/src/main/java/foundation/e/apps/utils/NetworkStatusManager.kt b/app/src/main/java/foundation/e/apps/utils/NetworkStatusManager.kt index 1eae20796..b49d41e99 100644 --- a/app/src/main/java/foundation/e/apps/utils/NetworkStatusManager.kt +++ b/app/src/main/java/foundation/e/apps/utils/NetworkStatusManager.kt @@ -50,8 +50,7 @@ object NetworkStatusManager { return internetConnectionLiveData } - private fun createNetworkCallback( - ): ConnectivityManager.NetworkCallback { + private fun createNetworkCallback(): ConnectivityManager.NetworkCallback { return object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { diff --git a/app/src/main/java/foundation/e/apps/utils/StorageComputer.kt b/app/src/main/java/foundation/e/apps/utils/StorageComputer.kt index 8d77b40e8..6fe3e1ee5 100644 --- a/app/src/main/java/foundation/e/apps/utils/StorageComputer.kt +++ b/app/src/main/java/foundation/e/apps/utils/StorageComputer.kt @@ -49,6 +49,6 @@ object StorageComputer { bytes /= 1000 ci.next() } - return String.format(Locale.getDefault(),"%.1f %cB", bytes / 1000.0, ci.current()) + return String.format(Locale.getDefault(), "%.1f %cB", bytes / 1000.0, ci.current()) } } -- GitLab