diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index d8771b24fa30e89ba580dee8395dddddf5ddc234..fb141cb442671e3ac98f91c79de69b649fc9418a 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -171,59 +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$ - 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$ - 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$ - 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 @@ -252,18 +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 - 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${ - 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/NetworkHandler.kt b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt index 3e2e147e73992eae6e30836e43145a07c192b797..b5e6b65f26588503d13a1bb051487d9c23a76c7f 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) { @@ -111,7 +110,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 471634516c6f4dcd81e9e5baf24e970c85204e6e..e4c2087a5a07a086c03032594dea394151b65d35 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/application/apps/AppsApiImpl.kt b/app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt index 537471aa3a21062e87a597eae9922808654bc4dc..2be57a1ccbc66b100bec3e62e403d492609ac08b 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 f6b2eb40e2a0260ef327e5ae56134f5814f62016..7b5e18f2cae5721094a10d1e7b99c22c32d9bba5 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,8 +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()) { @@ -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/downloadInfo/DownloadInfoApiImpl.kt b/app/src/main/java/foundation/e/apps/data/application/downloadInfo/DownloadInfoApiImpl.kt index 0bc6ae9c7f8b4765d056c109f92a3edaf559e53a..47a1b720c9a07776de214415ef2fd396052b394b 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/application/home/HomeApiImpl.kt b/app/src/main/java/foundation/e/apps/data/application/home/HomeApiImpl.kt index 8cbd454d0f3a5e30f6794bf95028eccdd7182081..72ce4924e2024fdf2a9a4a7572fd6d2c2bcfa338 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/CleanApkSearchHelper.kt b/app/src/main/java/foundation/e/apps/data/cleanapk/CleanApkSearchHelper.kt index 9e37ec9c7f8797ab6fc464c3b7921d4d095fa6f6..ef9f2739eefc08763779ba8214d3e466d5aeffdc 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/cleanapk/repositories/CleanApkAppsRepository.kt b/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkAppsRepository.kt index 2ba0ebf1f94815b6b9fd60897ed53ba2a785cb05..715e50fc69bb4838d69db7bfb6383ac01ed619ae 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/cleanapk/repositories/CleanApkPwaRepository.kt b/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkPwaRepository.kt index 76a0494bb4b65abc5e9697014cdad7fbd397a5b9..d0b291dba09cd5536cb704d8b3b6465059c63bff 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/exodus/Report.kt b/app/src/main/java/foundation/e/apps/data/exodus/Report.kt index 4de23637dfcb8312cd5e32412acd4644c9224388..fc334eeb0c42715a48557ed592bba6124c8ea4f2 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/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt b/app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt index 6fdb98d223bcb6b09e3a3c55b6a03035a1e3ed31..ca72b6ac0795288d0ffd903e6cefdf0646bd4e45 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/gitlab/SystemAppDefinitionApi.kt b/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppDefinitionApi.kt index 3800d295b54781d1cb073fe04797fd64c6320d5f..32cca00acc5be42af522b69ef7d4234339fd7554 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/SystemAppsUpdatesRepository.kt b/app/src/main/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepository.kt index b05406d49797c8a75041d7835668817f8f296375..7728882f22cfd94caf193352bf6171a3af3fe0bd 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,12 +45,14 @@ class SystemAppsUpdatesRepository @Inject constructor( private val appLoungePackageManager: AppLoungePackageManager, 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" } } @@ -152,7 +154,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 +231,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/gitlab/UpdatableSystemAppsApi.kt b/app/src/main/java/foundation/e/apps/data/gitlab/UpdatableSystemAppsApi.kt index c42ec6a642440c349c0388b87d854388027182bf..d386a5da36b8ea95dd19df2b63c449039e15661e 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/install/FileManager.kt b/app/src/main/java/foundation/e/apps/data/install/FileManager.kt index 2c91a163951aab43dbb810303702c285e212d766..9efa4d976984c9a690a237d6578d69af953780a2 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 6c98a3801d495ee7cefa86099333c3cd2ab8231f..30d5c02737f0bb8971689b15f71768f67d6e4a79 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 8de91e2994c6c9d20088d55294c9948b2135d436..4eb56a63936c12c0c1293456ba04e836a899f969 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/login/exceptions/GPlayException.kt b/app/src/main/java/foundation/e/apps/data/login/exceptions/GPlayException.kt index 2c39dc76e151acac151de1a0838534adb14224c6..261246ec62cab98f6963e077fbbe8847eebe48e8 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/data/parentalcontrol/ContentRatingDao.kt b/app/src/main/java/foundation/e/apps/data/parentalcontrol/ContentRatingDao.kt index f0812b4a1c584ce29767e0977f4195f73c88bd25..899c280b17fa77be6b955ae012b97b73198400bf 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 a8bbce78c1494af69329b0a42a5fc9984bacf967..aae807cb7e59f220cff4b1a2f42f2ca1ffbb63ce 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 0967b9e99c9f0e2f85f5e777cb43a2044a741e11..dcc01b76444a297709bbafc458fee197f2071953 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 80a40e317348c9be560a5ea00377e43e614f7a6a..3202a956a4071dec55af9f4bffa7eb983925fbeb 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/playstore/PlayStoreSearchHelper.kt b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreSearchHelper.kt index f87b636f9614596aa008328b28783a7a02240aad..94a340bd9b6dc1e27149d70dceed2eb6e5808fbb 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 235e9ab52a58b156ea88c2e8f6b1d7ca1f6c0066..bdb5ec9cb1da336f3f518be1f0e6e7f21dfb239c 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/data/preference/AppLoungeDataStore.kt b/app/src/main/java/foundation/e/apps/data/preference/AppLoungeDataStore.kt index 871f9fae3a242c5ac9ff4d562c23ffed0f2d6320..01e68f0731dde01e99f5c802b9d54db52ade2299 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 c750ce7e1512b14b7596723b30b408775df1826a..8571d005cbfcec3f171c3af493a029c005788732 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/data/updates/UpdatesManagerImpl.kt b/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerImpl.kt index 104fb695e9618a2abb8d065850028abc3e107ff2..5d8ad93eaebe0856232432eb62ac59b6d723c7eb 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/data/updates/UpdatesManagerRepository.kt b/app/src/main/java/foundation/e/apps/data/updates/UpdatesManagerRepository.kt index 54326d68350d0a04897b6cf150b4e62be55e29d4..202f39518b88a8da4eeebb745626498eeb01f7bc 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/CommonUtilsModule.kt b/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt index d07bc8c2bd36a8a634d0598a627d951f6b6a34f1..00ef81528a359829b0b9849bdd4b6afe5c6b9026 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/di/network/RetrofitApiModule.kt b/app/src/main/java/foundation/e/apps/di/network/RetrofitApiModule.kt index cf0807d061198277d8b7b431ca61ac2ac0f5ad62..e021ae9828f1b664ca2d4a0177299081e8bfad5f 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 ab94f3cd25315a1346bd6afd35fb3481309759ad..ee545317e193f875fc233476b8ff4ccfa43b1ee9 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) @@ -159,7 +157,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 +171,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/install/download/DownloadManagerUtils.kt b/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt index aad71f538fbeffeb0c8ed1bd1dbfde81d9eac888..e872c46a631b0862defbe79614ee52110710c239 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 ed467fbf24815d1cfc7bc75da227cb8c30ac0976..51c24e529384f79f351e6b37083d5ebec7935048 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 75aa4ab9a065310514db04cbe66729f3cde839bb..0c6502f36ce688a50701905e183d5a854b246f48 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 2831499ed01872614a8a2575a72fb0e2b647e437..b860ea1224f05927f844b85849e95522847d937b 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 fb8b2f62f4cec7898366a3a2537978c641a05f89..61714d6ee4334bfb115de61ecaf12ac22dd5466d 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 e6785d4a221c030752a2af5a547bba313aa2d42b..3c2da59eede22ffd81b698964cecb8a4ffdbac76 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 { @@ -98,8 +97,7 @@ class AgeRatingProvider : ContentProvider() { private enum class UriCode(val code: Int) { LoginType(1), - AgeRating(2), - ; + AgeRating(2) } private val uriMatcher by lazy { @@ -282,7 +280,6 @@ class AgeRatingProvider : ContentProvider() { }.awaitAll() validityList.forEachIndexed { index: Int, isValid: Boolean? -> if (isValid != true) { - // Collect package names for blocklist cursor.addRow(arrayOf(packageNames[index])) } @@ -357,5 +354,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/receivers/DumpAppInstallStatusReceiver.kt b/app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt index 74631ffe7066b656cc9fab1d1bd6653f608b4e3f..fdac17e2ec716b7abb3e91cc0f3c87c4136559c3 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/PrivacyInfoViewModel.kt b/app/src/main/java/foundation/e/apps/ui/PrivacyInfoViewModel.kt index c21b0f85da27162f15f62a2ca5d8490bfe154521..3dfcb2fc61a013a2c3feb0b62e8ee2523a2a135f 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/application/ApplicationViewModel.kt b/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt index 7a9b2f8d1d2d42e6ce6c49b1acf80dbf2a7a559c..592a3c4a352c7e0e569e54da0a31d1b320b81a50 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/application/subFrags/ApplicationDialogFragment.kt b/app/src/main/java/foundation/e/apps/ui/application/subFrags/ApplicationDialogFragment.kt index 92b0b4a382eab86082504684771a326efafd7548..ad8f3ef42b6c6e8c780cbe5d9749b9431d631122 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/ApplicationListFragment.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt index c9bfa454d88b6d03962a3e171f7e63a0cc086b26..a270be02a066b7bb8fa1416143da914727578037 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/ApplicationListRVAdapter.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt index 6e0d6c2c31fdca061f214f19cb0dedde0a1fd71d..6a0ab95ed54cb71d05a44bb55d383cfe4c99a424 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) } } - } } @@ -505,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/applicationlist/ApplicationListViewModel.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListViewModel.kt index 172c3b56755a277fbf3e2e46c6874cc3a2c32e2a..72afda213597f2e039c3f3626deaadbf42e68ed8 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/categories/CategoriesViewModel.kt b/app/src/main/java/foundation/e/apps/ui/categories/CategoriesViewModel.kt index 5b497276034a04ced2944d2c489f6d8412ec9015..90c6334f2ad292f0209f54cafc1ccea74dde3dc9 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) 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 4ad17d2122360f4dc837c65c7e1d85053a184c6d..e6c0bda41aa00216a29229f0b20c2758cb4e615a 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/parentFragment/LoadingViewModel.kt b/app/src/main/java/foundation/e/apps/ui/parentFragment/LoadingViewModel.kt index 7e7d2d3cd547341002549bf340e1c508173fdb57..175d1e85e314a0c0e4e9330fb138147a9e401bfc 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 42c17f9762c2558501dcf7bd4fdc1dd813924dc0..20876952480a6c8ac50015e24e9d01caf617df3d 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 530ad5ff81c975c99b79a38177a5ebb58596aeca..ef32ecc9e74513a990ddd27bc946a633f5cf84a7 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/search/SearchViewModel.kt b/app/src/main/java/foundation/e/apps/ui/search/SearchViewModel.kt index b348830556dad76e71b173cb37ed81bff55f5ba1..64dc8a82a71d3dcaf982530022bbf45ac2b56e5b 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/ui/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/ui/settings/SettingsFragment.kt index 966c260a49e9e16f567419a924a621c701acdb49..1240ebe67c553594a57335aafb4adb79de2219a0 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/signin/LocaleChangedBroadcastReceiver.kt b/app/src/main/java/foundation/e/apps/ui/setup/signin/LocaleChangedBroadcastReceiver.kt index e8fd90ba5ad5d92f96afc11483a3faf182a3674e..cc83bca5630d9468f28c03419f25d8f3a733c47d 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/ui/setup/tos/TOSFragment.kt b/app/src/main/java/foundation/e/apps/ui/setup/tos/TOSFragment.kt index 82a282be03a64b5606534f2922bf7171a3918c51..f2ed71cf0c46f43607878898e3d478e50c84e2ac 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 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 bf58488842e92188938b123b0a2c07ca7e4836ae..3305a2042c0f532a91fe576e2717e61df67f307a 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 { 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 1eae20796aacb67686e262f14249ee722359f42e..b49d41e99ce035f8a0fd6a6d9d36e3af2d84e48e 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 8d77b40e8e4f3d4594a203f5126ee04c6c426a6d..6fe3e1ee5ace34a14dea43aa6b1c7473a11ddb8b 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()) } } 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 d3097d45e25526935f9d3c00713197a9daf17085..8d5b38673348732969ab2319f266ee5179101018 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) }