diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index b30a1f2e3a2ac3670f2a89127fae66989710f4d0..d8771b24fa30e89ba580dee8395dddddf5ddc234 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -18,11 +18,8 @@ ArgumentListWrapping:DownloadManager.kt$DownloadManager$("Download Issue: $downloadId : DownloadManager returns status: $status but the failed because: reason: $reason") ArgumentListWrapping:DownloadManagerUtils.kt$DownloadManagerUtils$("===> updateDownloadStatus: ${appInstall.name}: $downloadId: $numberOfDownloadedItems/${appInstall.downloadIdMap.size}") ArgumentListWrapping:HomeFragment.kt$HomeFragment$( this, mainActivityViewModel, appInfoFetchViewModel, viewLifecycleOwner ) - ArgumentListWrapping:InstallAppWorker.kt$InstallAppWorker$( atomicInteger.getAndIncrement(), notification) - ArgumentListWrapping:MainActivity.kt$MainActivity$( ActivityResultContracts.StartActivityForResult()) ArgumentListWrapping:MainActivity.kt$MainActivity$(R.string.message_app_available_later) ArgumentListWrapping:MainActivity.kt$MainActivity$(getString(R.string.message_app_available_later)) - ArgumentListWrapping:PwaManager.kt$PwaManager$( Uri.parse(PWA_PLAYER), null, null, null, null ) ArgumentListWrapping:ResultSupreme.kt$ResultSupreme.Companion$( status, newData, message ?: result.message, exception ?: result.exception ) ArgumentListWrapping:SearchFragment.kt$SearchFragment$( searchViewModel.searchText, false ) ArgumentListWrapping:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$(exception.message, "Android API isn't in supported range to update some system apps") @@ -31,32 +28,14 @@ ArgumentListWrapping:UpdatesNotifier.kt$UpdatesNotifier$(R.string.automatically_install_updates_notification_text) ArgumentListWrapping:UpdatesNotifier.kt$UpdatesNotifier$(context.getString(R.string.automatically_install_updates_notification_text)) ArgumentListWrapping:UpdatesWorkManager.kt$UpdatesWorkManager$( UPDATES_WORK_NAME, existingPeriodicWorkPolicy, buildPeriodicWorkRequest(interval) ) - ArgumentListWrapping:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$( "${app.packageName} - Content rating: ${app.contentRating.id} \n" + "Selected age group: $ageGroup \nAllowed content rating: $allowedContentRating") BlockCommentInitialStarAlignment:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$/* TODO manually add new supported android version when they will be supported. * VANILLA_ICE_CREAM (A15) => https://gitlab.e.foundation/e/os/backlog/-/issues/2772 * BAKLAVA (A16) => https://gitlab.e.foundation/e/os/backlog/-/issues/2773 */ ChainWrapping:DownloadManagerUtils.kt$DownloadManagerUtils$|| ChainWrapping:HomeViewModel.kt$HomeViewModel$|| - ChainWrapping:NetworkHandler.kt$&& ChainWrapping:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$&& EmptyCatchBlock:NativeDeviceInfoProviderModule.kt$NativeDeviceInfoProviderModule${ } EmptyFunctionBlock:CleanApkAuthenticator.kt$CleanApkAuthenticator${} - FinalNewline:ContentRatingValidity.kt$foundation.e.apps.domain.model.ContentRatingValidity.kt FunctionReturnTypeSpacing:AppPrivacyInfoRepositoryImpl.kt$AppPrivacyInfoRepositoryImpl$private suspend fun fetchReports(packageName: String) : List<Report> FunctionReturnTypeSpacing:CategoryApiImpl.kt$CategoryApiImpl$override suspend fun getCategoriesList(type: CategoryType) : List<CategoriesResponse> - FunctionStartOfBodySpacing:RetrofitApiModule.kt$RetrofitApiModule$@Singleton @Provides fun provideCleanApkApi( okHttpClient: OkHttpClient, @Named("gsonCustomAdapter") gson: Gson ): CleanApkRetrofit - Indentation:AppInstallProcessor.kt$AppInstallProcessor$ - Indentation:AuthDataProvider.kt$AuthDataProvider$ - Indentation:ContentRatingValidity.kt$ContentRatingValidity$ - Indentation:DownloadManagerUtils.kt$DownloadManagerUtils$ - Indentation:DumpAppInstallStatusReceiver.kt$DumpAppInstallStatusReceiver$ - Indentation:InstallAppWorker.kt$InstallAppWorker$ - Indentation:MainActivity.kt$MainActivity$ - Indentation:NetworkHandler.kt$ - Indentation:PwaManager.kt$PwaManager$ - Indentation:RetrofitApiModule.kt$RetrofitApiModule$ - Indentation:Source.kt$Source$ - Indentation:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$ - Indentation:UpdatesManagerImpl.kt$UpdatesManagerImpl$ - Indentation:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$ InstanceOfCheckForException:GPlayHttpClient.kt$GPlayHttpClient$e is SocketTimeoutException InvalidPackageDeclaration:Trackers.kt$package foundation.e.apps.data.exodus LargeClass:ApplicationFragment.kt$ApplicationFragment : TimeoutFragment @@ -120,7 +99,6 @@ MaxLineLength:FDroidRepository.kt$FDroidRepository$if MaxLineLength:FDroidRepository.kt$FDroidRepository$override suspend MaxLineLength:GoogleLoginManager.kt$GoogleLoginManager$authData = AuthHelper.build(email, aasToken, tokenType = AuthHelper.Token.AAS, properties = nativeDeviceProperty) - MaxLineLength:MainActivity.kt$MainActivity$if MaxLineLength:MainActivity.kt$MainActivity$is InternalException.AppNotPurchased -> showSnackbarMessage(getString(R.string.message_app_available_later)) MaxLineLength:MainActivityViewModel.kt$MainActivityViewModel$fusedDownload.source == it.source && (fusedDownload.packageName == it.package_name || fusedDownload.id == it._id) MaxLineLength:PrivacyScoreRepositoryImpl.kt$PrivacyScoreRepositoryImpl$return if (numberOfTrackers > THRESHOLD_OF_NON_ZERO_TRACKER_SCORE) MIN_TRACKER_SCORE else MAX_TRACKER_SCORE - numberOfTrackers @@ -193,7 +171,6 @@ MultiLineIfElse:SearchViewModel.kt$SearchViewModel$searchRepository.getSearchSuggestions(it) MultiLineIfElse:SettingsFragment.kt$SettingsFragment$true MultiLineIfElse:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$fetchedContentRating - NewLineAtEndOfFile:ContentRatingValidity.kt$foundation.e.apps.domain.model.ContentRatingValidity.kt NoBlankLineBeforeRbrace:AgeGroupApi.kt$AgeGroupApi$ NoBlankLineBeforeRbrace:AgeRatingProvider.kt$AgeRatingProvider$ NoBlankLineBeforeRbrace:ApplicationListRVAdapter.kt$ApplicationListRVAdapter$ @@ -207,7 +184,6 @@ NoBlankLineBeforeRbrace:UpdatesManagerRepository.kt$UpdatesManagerRepository$ NoBlankLineBeforeRbrace:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$ NoConsecutiveBlankLines:ApplicationRepository.kt$ApplicationRepository$ - NoConsecutiveBlankLines:AuthDataProvider.kt$ NoConsecutiveBlankLines:CategoriesViewModel.kt$CategoriesViewModel$ NoConsecutiveBlankLines:CleanApkSearchHelper.kt$ NoConsecutiveBlankLines:CommonUtilsModule.kt$CommonUtilsModule$ @@ -247,28 +223,8 @@ NoMultipleSpaces:PrivacyInfoViewModel.kt$PrivacyInfoViewModel$ NoMultipleSpaces:SearchViewModel.kt$SearchViewModel$ NoSemicolons:AgeRatingProvider.kt$AgeRatingProvider.UriCode.AgeRating$; - NoSemicolons:AuthDataProvider.kt$AuthDataProvider$; NoTrailingSpaces:DownloadInfoApiImpl.kt$DownloadInfoApiImpl$ - NoUnusedImports:AppLoungePackageManager.kt$foundation.e.apps.install.pkg.AppLoungePackageManager.kt - NoUnusedImports:AppManagerImpl.kt$foundation.e.apps.data.install.AppManagerImpl.kt - NoUnusedImports:AppManagerWrapper.kt$foundation.e.apps.data.install.AppManagerWrapper.kt - NoUnusedImports:AppPurchaseFragment.kt$foundation.e.apps.ui.purchase.AppPurchaseFragment.kt - NoUnusedImports:ApplicationDiffUtil.kt$foundation.e.apps.ui.applicationlist.ApplicationDiffUtil.kt - NoUnusedImports:CleanApkAppsRepository.kt$foundation.e.apps.data.cleanapk.repositories.CleanApkAppsRepository.kt - NoUnusedImports:CustomUncaughtExceptionHandler.kt$foundation.e.apps.utils.CustomUncaughtExceptionHandler.kt - NoUnusedImports:DownloadManager.kt$foundation.e.apps.data.DownloadManager.kt - NoUnusedImports:GoogleSignInFragment.kt$foundation.e.apps.ui.setup.signin.google.GoogleSignInFragment.kt - NoUnusedImports:HomeApi.kt$foundation.e.apps.data.application.home.HomeApi.kt - NoUnusedImports:HomeApiImpl.kt$foundation.e.apps.data.application.home.HomeApiImpl.kt - NoUnusedImports:MainActivityViewModel.kt$foundation.e.apps.ui.MainActivityViewModel.kt - NoUnusedImports:NotificationManagerModule.kt$foundation.e.apps.di.NotificationManagerModule.kt - NoUnusedImports:PrivacyScoreRepositoryImpl.kt$foundation.e.apps.data.exodus.repositories.PrivacyScoreRepositoryImpl.kt - NoUnusedImports:UpdatesFragment.kt$foundation.e.apps.ui.updates.UpdatesFragment.kt - NoUnusedImports:UpdatesNotifier.kt$foundation.e.apps.install.updates.UpdatesNotifier.kt NoWildcardImports:SystemAppsUpdatesRepository.kt$import foundation.e.apps.data.gitlab.UpdatableSystemAppsApi.* - ParameterListWrapping:AuthDataProvider.kt$AuthDataProvider$(uri: Uri, projection: Array<String>?, selection: String?, selectionArgs: Array<String>?, sortOrder: String?) - ParameterListWrapping:AuthDataProvider.kt$AuthDataProvider$(uri: Uri, values: ContentValues?, selection: String?, selectionArgs: Array<String>?) - ParameterListWrapping:ContentRatingValidity.kt$ContentRatingValidity$(val isValid: Boolean, val contentRating: ContentRating? = null, val requestPin: Boolean = false) PrintStackTrace:AppPrivacyInfoRepositoryImpl.kt$AppPrivacyInfoRepositoryImpl$e PrintStackTrace:CommonUtilsModule.kt$CommonUtilsModule$e PrintStackTrace:EcloudRepository.kt$EcloudRepository$e @@ -303,7 +259,6 @@ SpacingAroundComma:HomeFragment.kt$HomeFragment$, SpacingAroundComma:StorageComputer.kt$StorageComputer$, SpacingAroundCurly:ApplicationListRVAdapter.kt$ApplicationListRVAdapter${ - SpacingAroundCurly:RetrofitApiModule.kt$RetrofitApiModule${ SpacingAroundKeyword:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$catch SpacingAroundParens:NetworkStatusManager.kt$NetworkStatusManager$( SpacingBetweenDeclarationsWithAnnotations:ApplicationDialogFragment.kt$ApplicationDialogFragment$@DrawableRes private var drawableResId: Int = -1 @@ -379,13 +334,9 @@ WildcardImport:SystemAppsUpdatesRepository.kt$import foundation.e.apps.data.gitlab.UpdatableSystemAppsApi.* Wrapping:AppInstallProcessor.kt$AppInstallProcessor$( Wrapping:ApplicationDeserializer.kt$ApplicationDeserializer$( - Wrapping:AuthDataProvider.kt$AuthDataProvider$( - Wrapping:ContentRatingValidity.kt$ContentRatingValidity$( - Wrapping:InstallAppWorker.kt$InstallAppWorker$( Wrapping:MainActivity.kt$MainActivity$( Wrapping:MainActivity.kt$MainActivity$(this, object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { if (isInitialScreen()) { resetIgnoreStatusForSessionRefresh() finish() } else { // Let the system handle the back press isEnabled = false onBackPressedDispatcher.onBackPressed() } } }) Wrapping:SearchFragment.kt$SearchFragment$Fragment(R.layout.fragment_search), ApplicationInstaller, SearchViewHandler.SearchViewListener Wrapping:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$( - Wrapping:ValidateAppAgeLimitUseCase.kt$ValidateAppAgeLimitUseCase$( diff --git a/app/src/main/java/foundation/e/apps/data/DownloadManager.kt b/app/src/main/java/foundation/e/apps/data/DownloadManager.kt index 330e7ec0198536aeff75221fdffe866a965899f7..51705372e89537ec0ea7b7770637b9244ba1ed35 100644 --- a/app/src/main/java/foundation/e/apps/data/DownloadManager.kt +++ b/app/src/main/java/foundation/e/apps/data/DownloadManager.kt @@ -21,7 +21,6 @@ import android.app.DownloadManager import android.content.Context import android.database.Cursor import android.net.Uri -import android.os.Environment import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.OpenForTesting import foundation.e.apps.R 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 6cadc578db541174723e19e4625c6003c54cbd11..3e2e147e73992eae6e30836e43145a07c192b797 100644 --- a/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt +++ b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt @@ -113,8 +113,10 @@ private fun calculateRetryDelay(retryDelayInSecond: Int) = private fun shouldRetry(result: T, retryDelayInSecond: Int) = - result is ResultSupreme<*> && !result.isSuccess() && retryDelayInSecond < MAX_RETRY_DELAY_IN_SECONDS - && isExceptionAllowedToRetry(result.exception) + result is ResultSupreme<*> && + !result.isSuccess() && + retryDelayInSecond < MAX_RETRY_DELAY_IN_SECONDS && + isExceptionAllowedToRetry(result.exception) private fun isExceptionAllowedToRetry(exception: Exception?): Boolean { // Here, (value != true) is used, because value can be null also and we want to allow retry for null message diff --git a/app/src/main/java/foundation/e/apps/data/application/home/HomeApi.kt b/app/src/main/java/foundation/e/apps/data/application/home/HomeApi.kt index c32a1c1390e5a9a0d1a798b66a8647db29c33c14..51185eb28533ed777f285cb5b10b6a344d8782eb 100644 --- a/app/src/main/java/foundation/e/apps/data/application/home/HomeApi.kt +++ b/app/src/main/java/foundation/e/apps/data/application/home/HomeApi.kt @@ -19,7 +19,6 @@ package foundation.e.apps.data.application.home import androidx.lifecycle.LiveData -import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.application.data.Home 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 6bc4729703aab1aecf69486603035f8502295459..8cbd454d0f3a5e30f6794bf95028eccdd7182081 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 @@ -24,7 +24,6 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.Stores import foundation.e.apps.data.application.ApplicationRepository import foundation.e.apps.data.application.data.Home -import foundation.e.apps.data.application.search.SearchRepository import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Source import foundation.e.apps.data.handleNetworkResult 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 8745422db24b7cc5236766aec3a98aaef619b9c2..2ba0ebf1f94815b6b9fd60897ed53ba2a785cb05 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 @@ -21,7 +21,6 @@ package foundation.e.apps.data.cleanapk.repositories import foundation.e.apps.data.application.ApplicationRepository import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.application.data.Home -import foundation.e.apps.data.application.search.SearchRepository import foundation.e.apps.data.application.search.SearchSuggestion import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher import foundation.e.apps.data.cleanapk.CleanApkRetrofit diff --git a/app/src/main/java/foundation/e/apps/data/enums/Source.kt b/app/src/main/java/foundation/e/apps/data/enums/Source.kt index 6bafbc435030942645650388f5de72498313ceac..a62bf8b39768af11ecfee2244c51a9f15c38b99e 100644 --- a/app/src/main/java/foundation/e/apps/data/enums/Source.kt +++ b/app/src/main/java/foundation/e/apps/data/enums/Source.kt @@ -27,8 +27,8 @@ enum class Source { return when (this) { PLAY_STORE -> "" else -> name.lowercase() - .split("_") - .joinToString(" ") { it.replaceFirstChar(Char::uppercase) } + .split("_") + .joinToString(" ") { it.replaceFirstChar(Char::uppercase) } } } diff --git a/app/src/main/java/foundation/e/apps/data/exodus/repositories/PrivacyScoreRepositoryImpl.kt b/app/src/main/java/foundation/e/apps/data/exodus/repositories/PrivacyScoreRepositoryImpl.kt index 2a84fc5f9883f261e530e23690d4aa0c5a6cd9db..94a08f07d1f3f95ac76608ebb9f525d1ae7fad0b 100644 --- a/app/src/main/java/foundation/e/apps/data/exodus/repositories/PrivacyScoreRepositoryImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/exodus/repositories/PrivacyScoreRepositoryImpl.kt @@ -20,7 +20,6 @@ package foundation.e.apps.data.exodus.repositories import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.blockedApps.BlockedAppRepository -import foundation.e.apps.di.CommonUtilsModule import javax.inject.Inject import javax.inject.Singleton import kotlin.math.ceil 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 556608c9f388634b4e2a82571df6803a6f7237a3..b05406d49797c8a75041d7835668817f8f296375 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 @@ -92,7 +92,8 @@ class SystemAppsUpdatesRepository @Inject constructor( } } - private fun isEligibleToFetchAppListFromTest(systemName: String) = systemName.isBlank() || + private fun isEligibleToFetchAppListFromTest(systemName: String) = + systemName.isBlank() || systemName.contains("beta") || systemName.contains("rc") || systemName.contains("test") @@ -104,9 +105,9 @@ class SystemAppsUpdatesRepository @Inject constructor( ): Boolean { return systemAppInfo.run { sdkLevel < minSdk || - blockedAndroid?.contains(sdkLevel) == true || - blockedDevices?.contains(device) == true || - blockedDevices?.contains("${device}@${sdkLevel}") == true + blockedAndroid?.contains(sdkLevel) == true || + blockedDevices?.contains(device) == true || + blockedDevices?.contains("${device}@${sdkLevel}") == true } } diff --git a/app/src/main/java/foundation/e/apps/data/install/AppManagerImpl.kt b/app/src/main/java/foundation/e/apps/data/install/AppManagerImpl.kt index 17651d4950c51bbeb181ee7b3c6de4b829a181b1..5bfb81e8b39d187d8d0331aaaa042a9aff5e5165 100644 --- a/app/src/main/java/foundation/e/apps/data/install/AppManagerImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/install/AppManagerImpl.kt @@ -23,9 +23,7 @@ import android.app.NotificationChannel import android.app.NotificationManager import android.content.Context import android.net.Uri -import android.os.Build import android.os.Environment -import androidx.annotation.RequiresApi import androidx.lifecycle.LiveData import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R diff --git a/app/src/main/java/foundation/e/apps/data/install/AppManagerWrapper.kt b/app/src/main/java/foundation/e/apps/data/install/AppManagerWrapper.kt index f17ebdec51f20a5ea835923c0060190052a54a3c..81d54847a999e76b8897d1e81b23b845572aea8c 100644 --- a/app/src/main/java/foundation/e/apps/data/install/AppManagerWrapper.kt +++ b/app/src/main/java/foundation/e/apps/data/install/AppManagerWrapper.kt @@ -1,8 +1,6 @@ package foundation.e.apps.data.install import android.content.Context -import android.os.Build -import androidx.annotation.RequiresApi import androidx.lifecycle.LiveData import foundation.e.apps.OpenForTesting import foundation.e.apps.data.Constants.MIN_VALID_RATING 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 986bd2a83a70430ae574e1d39094bfe9066b1b08..104fb695e9618a2abb8d065850028abc3e107ff2 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 @@ -298,15 +298,15 @@ class UpdatesManagerImpl @Inject constructor( packageName: String, appsAndSignatures: HashMap ) { - val apps = applicationRepository.getApplicationDetails(listOf(packageName), Source.OPEN_SOURCE).first - if (apps.isEmpty()) { - return - } + val apps = applicationRepository.getApplicationDetails(listOf(packageName), Source.OPEN_SOURCE).first + if (apps.isEmpty()) { + return + } - if (apps[0].package_name.isBlank()) { - return - } - appsAndSignatures[packageName] = getPgpSignature(apps[0]) + if (apps[0].package_name.isBlank()) { + return + } + appsAndSignatures[packageName] = getPgpSignature(apps[0]) } private suspend fun getPgpSignature(cleanApkApplication: Application): String { @@ -322,8 +322,8 @@ class UpdatesManagerImpl @Inject constructor( Timber.i( "Signature calculated for : ${cleanApkApplication.package_name}, " + - "signature version: $installedVersionSignature, " + - "is sig blank: ${pgpSignature.isBlank()}" + "signature version: $installedVersionSignature, " + + "is sig blank: ${pgpSignature.isBlank()}" ) return pgpSignature diff --git a/app/src/main/java/foundation/e/apps/di/NotificationManagerModule.kt b/app/src/main/java/foundation/e/apps/di/NotificationManagerModule.kt index fa13002d4e534794e51b81c07180020c49b162df..cfe68f818fec8c91f22dee5e9120e629fa3a2aa0 100644 --- a/app/src/main/java/foundation/e/apps/di/NotificationManagerModule.kt +++ b/app/src/main/java/foundation/e/apps/di/NotificationManagerModule.kt @@ -22,8 +22,6 @@ package foundation.e.apps.di import android.app.NotificationChannel import android.app.NotificationManager import android.content.Context -import android.os.Build -import androidx.annotation.RequiresApi import dagger.Module import dagger.Provides import dagger.hilt.InstallIn 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 90be997047ff2c682e991847ac90b92184f17b8a..cf0807d061198277d8b7b431ca61ac2ac0f5ad62 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 @@ -49,8 +49,7 @@ class RetrofitApiModule { fun provideCleanApkApi( okHttpClient: OkHttpClient, @Named("gsonCustomAdapter") gson: Gson - ): CleanApkRetrofit - { + ): CleanApkRetrofit { return Retrofit.Builder() .baseUrl(CleanApkRetrofit.BASE_URL) .client(okHttpClient) 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 17ded119608f812c9009f2ccf7a29479b75cff06..ab94f3cd25315a1346bd6afd35fb3481309759ad 100644 --- a/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt +++ b/app/src/main/java/foundation/e/apps/domain/ValidateAppAgeLimitUseCase.kt @@ -99,8 +99,8 @@ class ValidateAppAgeLimitUseCase @Inject constructor( private fun isCleanApkApp(app: AppInstall): Boolean { return app.id.isNotBlank() - && (app.source == Source.PWA || app.source == Source.OPEN_SOURCE) - && app.type == Type.NATIVE + && (app.source == Source.PWA || app.source == Source.OPEN_SOURCE) + && app.type == Type.NATIVE } private fun isWhiteListedCleanApkApp(app: AppInstall): Boolean { @@ -129,7 +129,8 @@ class ValidateAppAgeLimitUseCase @Inject constructor( Timber.d( "${app.packageName} - Content rating: ${app.contentRating.id} \n" + - "Selected age group: $ageGroup \nAllowed content rating: $allowedContentRating") + "Selected age group: $ageGroup \nAllowed content rating: $allowedContentRating" + ) val isValid = isValidAppAgeRating(app, allowedContentRating) return ResultSupreme.Success( @@ -177,7 +178,7 @@ class ValidateAppAgeLimitUseCase @Inject constructor( } return app.contentRating.title.isNotEmpty() && - app.contentRating.id.isNotEmpty() + app.contentRating.id.isNotEmpty() } private suspend fun isParentalGuidance(app: AppInstall): Boolean { diff --git a/app/src/main/java/foundation/e/apps/domain/model/ContentRatingValidity.kt b/app/src/main/java/foundation/e/apps/domain/model/ContentRatingValidity.kt index 46b3d53b1ea1ef7a9799154f73b798147e8f90cd..25f6ee48480d9d413fbd2fc5e7315dd2d3b5dac5 100644 --- a/app/src/main/java/foundation/e/apps/domain/model/ContentRatingValidity.kt +++ b/app/src/main/java/foundation/e/apps/domain/model/ContentRatingValidity.kt @@ -21,5 +21,8 @@ package foundation.e.apps.domain.model import com.aurora.gplayapi.data.models.ContentRating -data class ContentRatingValidity(val isValid: Boolean, val contentRating: ContentRating? = null, - val requestPin: Boolean = false) \ No newline at end of file +data class ContentRatingValidity( + val isValid: Boolean, + val contentRating: ContentRating? = null, + val requestPin: Boolean = false +) 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 4c0c1fe0a61ef3570095802639f28d78c67a3abe..aad71f538fbeffeb0c8ed1bd1dbfde81d9eac888 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 @@ -145,7 +145,7 @@ class DownloadManagerUtils @Inject constructor( handleDownloadFailed(appInstall, downloadId) Timber.e( "Download failed for ${appInstall.packageName}: " + - "Download Status: ${isDownloadSuccessful.second}" + "Download Status: ${isDownloadSuccessful.second}" ) } 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 1f519e41abc7359020107c12a21ef5302f5bbe8d..746477a7a7ba9dcc9aaf364307888d6f15439fb6 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 @@ -32,7 +32,6 @@ import android.os.Build import androidx.core.content.pm.PackageInfoCompat import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.OpenForTesting -import foundation.e.apps.data.application.search.SearchRepository import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.Type diff --git a/app/src/main/java/foundation/e/apps/install/pkg/PwaManager.kt b/app/src/main/java/foundation/e/apps/install/pkg/PwaManager.kt index 5799396060d7b8cc4d18c43e7d59a7e11ad3c5e0..c1b63a1093cef351455130be3e819ca0600262bc 100644 --- a/app/src/main/java/foundation/e/apps/install/pkg/PwaManager.kt +++ b/app/src/main/java/foundation/e/apps/install/pkg/PwaManager.kt @@ -65,7 +65,10 @@ class PwaManager @Inject constructor( fun getPwaStatus(application: Application): Status { context.contentResolver.query( Uri.parse(PWA_PLAYER), - null, null, null, null + null, + null, + null, + null )?.let { cursor -> cursor.moveToFirst() while (!cursor.isAfterLast) { @@ -92,7 +95,7 @@ class PwaManager @Inject constructor( return true } } catch (e: Exception) { - Timber.w(e) + Timber.w(e) } return false diff --git a/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt b/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt index ba7fbb5c558111ace39c8ee84510ae20e61090db..74bd3eefe16059e19ad9fa74b6f130bf1072c4cd 100644 --- a/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt +++ b/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt @@ -25,7 +25,6 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import android.content.pm.PackageManager -import android.os.Build import androidx.core.app.ActivityCompat import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat 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 c4e7ea8b1c467eb746e751e56f385d3b4ca6fb84..76d139825249d75cc7a3ed7af01b6a5215ef7d05 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 @@ -390,9 +390,10 @@ class AppInstallProcessor @Inject constructor( .transformWhile { emit(it) isInstallRunning(it) - }.collect { latestFusedDownload -> - handleFusedDownload(latestFusedDownload, appInstall) - } + } + .collect { latestFusedDownload -> + handleFusedDownload(latestFusedDownload, appInstall) + } } /** diff --git a/app/src/main/java/foundation/e/apps/install/workmanager/InstallAppWorker.kt b/app/src/main/java/foundation/e/apps/install/workmanager/InstallAppWorker.kt index 8fb976c63055a11242eeb073ee10546b5c444dfb..42de78741a2ab2ff50f410fcb73a2e39ffd077c3 100644 --- a/app/src/main/java/foundation/e/apps/install/workmanager/InstallAppWorker.kt +++ b/app/src/main/java/foundation/e/apps/install/workmanager/InstallAppWorker.kt @@ -80,8 +80,7 @@ class InstallAppWorker @AssistedInject constructor( .createCancelPendingIntent(id) val notificationManager = - context.getSystemService(Context.NOTIFICATION_SERVICE) as - NotificationManager + context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val mChannel = NotificationChannel( channelId, @@ -111,7 +110,8 @@ class InstallAppWorker @AssistedInject constructor( } else { ForegroundInfo( atomicInteger.getAndIncrement(), - notification) + notification + ) } } } 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 6632486dfb12d8552f56b6542a691c4fb534b281..fb8b2f62f4cec7898366a3a2537978c641a05f89 100644 --- a/app/src/main/java/foundation/e/apps/microg/AuthDataProvider.kt +++ b/app/src/main/java/foundation/e/apps/microg/AuthDataProvider.kt @@ -58,12 +58,19 @@ class AuthDataProvider : ContentProvider() { return true } - override fun query(uri: Uri, projection: Array?, selection: String?, - selectionArgs: Array?, sortOrder: String?): Cursor { - - if (context?.checkCallingOrSelfPermission( + override fun query( + uri: Uri, + projection: Array?, + selection: String?, + selectionArgs: Array?, + sortOrder: String? + ): Cursor { + + if ( + context?.checkCallingOrSelfPermission( AUTH_DATA_PROVIDER_PERMISSION - ) != PackageManager.PERMISSION_GRANTED) { + ) != PackageManager.PERMISSION_GRANTED + ) { throw SecurityException("Permission denied: $AUTH_DATA_PROVIDER_PERMISSION required") } @@ -95,8 +102,12 @@ class AuthDataProvider : ContentProvider() { return cursor } - override fun update(uri: Uri, values: ContentValues?, selection: String?, - selectionArgs: Array?): Int { + override fun update( + uri: Uri, + values: ContentValues?, + selection: String?, + selectionArgs: Array? + ): Int { throw UnsupportedOperationException("Update operation is not supported by the provider") } @@ -105,7 +116,7 @@ class AuthDataProvider : ContentProvider() { } override fun getType(uri: Uri): String? { - return "vnd.android.cursor.dir/vnd.foundation.e.apps.authdata.provider.strings"; + return "vnd.android.cursor.dir/vnd.foundation.e.apps.authdata.provider.strings" } override fun insert(uri: Uri, values: ContentValues?): Uri { @@ -116,4 +127,3 @@ class AuthDataProvider : ContentProvider() { const val AUTH_DATA_PROVIDER_PERMISSION = "foundation.e.apps.permission.AUTH_DATA_PROVIDER" } } - 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 d8b859b4f1e348b66a48047f548f66bf090d7c97..74631ffe7066b656cc9fab1d1bd6653f608b4e3f 100644 --- a/app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt +++ b/app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt @@ -71,9 +71,9 @@ class DumpAppInstallStatusReceiver : BroadcastReceiver() { val batteryLevel = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) return "Available Space: ${StorageComputer.calculateAvailableDiskSpace()}" + - "\nInternet: ${ - NetworkStatusManager.init(context).value - }\nBattery level: $batteryLevel" + "\nInternet: ${ + NetworkStatusManager.init(context).value + }\nBattery level: $batteryLevel" } return null diff --git a/app/src/main/java/foundation/e/apps/ui/MainActivity.kt b/app/src/main/java/foundation/e/apps/ui/MainActivity.kt index c543c5865e5444498f65b88192fbacd38dcab564..74e3468891c429e83f14a740fba440b594176a44 100644 --- a/app/src/main/java/foundation/e/apps/ui/MainActivity.kt +++ b/app/src/main/java/foundation/e/apps/ui/MainActivity.kt @@ -87,16 +87,18 @@ class MainActivity : AppCompatActivity() { private const val SESSION_DIALOG_TAG = "session_dialog" } - private val parentalControlAuthenticatorLauncher = registerForActivityResult( - ActivityResultContracts.StartActivityForResult()) { result -> - if (result.resultCode == RESULT_OK) { - val authenticationResult = result.data?.getBooleanExtra( - ParentalControlAuthenticator.KEY_PARENTAL_CONTROL_RESULT, false) == true - ParentalControlAuthenticator.setResult(authenticationResult) - } else { - ParentalControlAuthenticator.setResult(false) - } - } + private val parentalControlAuthenticatorLauncher = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode == RESULT_OK) { + val authenticationResult = result.data?.getBooleanExtra( + ParentalControlAuthenticator.KEY_PARENTAL_CONTROL_RESULT, false + ) == true + ParentalControlAuthenticator.setResult(authenticationResult) + } else { + ParentalControlAuthenticator.setResult(false) + } + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -568,16 +570,20 @@ class MainActivity : AppCompatActivity() { private fun setupBottomNavItemSelectedListener( bottomNavigationView: BottomNavigationView, - navHostFragment: NavHostFragment, - navController: NavController - ) { - bottomNavigationView.setOnItemSelectedListener { - val fragment = - navHostFragment.childFragmentManager.fragments.find { fragment -> fragment is SettingsFragment } - if (bottomNavigationView.selectedItemId == R.id.settingsFragment && fragment is SettingsFragment && !fragment.isAnyAppSourceSelected()) { - ApplicationDialogFragment( - title = "", - message = getString(R.string.select_one_source_of_applications), + navHostFragment: NavHostFragment, + navController: NavController + ) { + bottomNavigationView.setOnItemSelectedListener { + val fragment = navHostFragment.childFragmentManager.fragments + .find { fragment -> fragment is SettingsFragment } + if ( + bottomNavigationView.selectedItemId == R.id.settingsFragment && + fragment is SettingsFragment && + !fragment.isAnyAppSourceSelected() + ) { + ApplicationDialogFragment( + title = "", + message = getString(R.string.select_one_source_of_applications), positiveButtonText = getString(R.string.ok) ).show(supportFragmentManager, TAG) return@setOnItemSelectedListener false diff --git a/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt index 79dfb498239d5f4d7d546ff4d780cd89b0ff51a1..201afaa139da13d0ae37ec8957c68e81297a1ca3 100644 --- a/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt @@ -34,7 +34,6 @@ import foundation.e.apps.data.application.ApplicationRepository import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.blockedApps.BlockedAppRepository import foundation.e.apps.data.ecloud.EcloudRepository -import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.User import foundation.e.apps.data.enums.isInitialized import foundation.e.apps.data.enums.isUnFiltered diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationDiffUtil.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationDiffUtil.kt index aea640d79fa8e556d1f083facc251dddc70c6407..b2d87e9c35192104ee62f2480fe7fc92f92e66d9 100644 --- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationDiffUtil.kt +++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationDiffUtil.kt @@ -19,7 +19,6 @@ package foundation.e.apps.ui.applicationlist import androidx.recyclerview.widget.DiffUtil import foundation.e.apps.data.application.data.Application -import foundation.e.apps.di.CommonUtilsModule.LIST_OF_NULL class ApplicationDiffUtil : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: Application, newItem: Application): Boolean { diff --git a/app/src/main/java/foundation/e/apps/ui/purchase/AppPurchaseFragment.kt b/app/src/main/java/foundation/e/apps/ui/purchase/AppPurchaseFragment.kt index 218da4fcc27cccea61589809a73ae388f98864fe..3b27730bf8a9ba3fc98fa09ae3793bad786fabf4 100644 --- a/app/src/main/java/foundation/e/apps/ui/purchase/AppPurchaseFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/purchase/AppPurchaseFragment.kt @@ -1,7 +1,6 @@ package foundation.e.apps.ui.purchase import android.annotation.SuppressLint -import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View diff --git a/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt b/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt index ae6f987d4dc46a79aa968ccd675a383fbedabe36..1bab86ff5ae3ae40205ee04c6239fff1ea13b996 100644 --- a/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt @@ -19,7 +19,6 @@ package foundation.e.apps.ui.setup.signin.google import android.annotation.SuppressLint -import android.os.Build import android.os.Bundle import android.view.View import android.webkit.CookieManager diff --git a/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt b/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt index de4ca4a5f1c704270b0bab2999109ad5a6d126ea..f85576e1538e11daa53be3b6d8354cad6ac14eea 100644 --- a/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt @@ -63,7 +63,6 @@ import foundation.e.apps.utils.toast import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filter import kotlinx.coroutines.launch -import timber.log.Timber import java.util.Locale import javax.inject.Inject diff --git a/app/src/main/java/foundation/e/apps/utils/CustomUncaughtExceptionHandler.kt b/app/src/main/java/foundation/e/apps/utils/CustomUncaughtExceptionHandler.kt index 659d5f369a4b9c9911d349a3c02aceb175f64bf8..b6195783e1872702fcfc8a8699d32bcebbc2008e 100644 --- a/app/src/main/java/foundation/e/apps/utils/CustomUncaughtExceptionHandler.kt +++ b/app/src/main/java/foundation/e/apps/utils/CustomUncaughtExceptionHandler.kt @@ -25,7 +25,6 @@ import android.app.NotificationManager import android.content.Context import android.content.pm.PackageManager import android.database.sqlite.SQLiteFullException -import android.os.Build import androidx.annotation.StringRes import androidx.core.app.ActivityCompat import androidx.core.app.NotificationCompat