diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 8968baf74f8cfd197142ee194b0594f790ee78a6..9b4ff20b2602a7462e155a66c3e1f7f5af58d4de 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -16,23 +16,16 @@ LongParameterList:MainActivityViewModel.kt$MainActivityViewModel$( private val appLoungeDataStore: AppLoungeDataStore, private val applicationRepository: ApplicationRepository, private val appManagerWrapper: AppManagerWrapper, private val appLoungePackageManager: AppLoungePackageManager, private val pwaManager: PwaManager, private val blockedAppRepository: BlockedAppRepository, private val gPlayContentRatingRepository: GPlayContentRatingRepository, private val fDroidAntiFeatureRepository: FDroidAntiFeatureRepository, private val appInstallProcessor: AppInstallProcessor, private val systemAppsUpdatesRepository: SystemAppsUpdatesRepository, private val reportFaultyTokenUseCase: ReportFaultyTokenUseCase, ) LongParameterList:UpdatesManagerImpl.kt$UpdatesManagerImpl$( @ApplicationContext private val context: Context, private val appLoungePackageManager: AppLoungePackageManager, private val applicationRepository: ApplicationRepository, private val faultyAppRepository: FaultyAppRepository, private val appLoungePreference: AppLoungePreference, private val fDroidRepository: FDroidRepository, private val blockedAppRepository: BlockedAppRepository, private val systemAppsUpdatesRepository: SystemAppsUpdatesRepository, ) LongParameterList:UpdatesWorker.kt$UpdatesWorker$( @Assisted private val context: Context, @Assisted private val params: WorkerParameters, private val updatesManagerRepository: UpdatesManagerRepository, private val appLoungeDataStore: AppLoungeDataStore, private val authenticatorRepository: AuthenticatorRepository, private val appInstallProcessor: AppInstallProcessor, private val blockedAppRepository: BlockedAppRepository, private val systemAppsUpdatesRepository: SystemAppsUpdatesRepository, ) + NoUnusedImports:AppInstallComponents.kt$foundation.e.apps.data.install.AppInstallComponents.kt ProtectedMemberInFinalClass:ApplicationListFragment.kt$ApplicationListFragment$// protected to avoid SyntheticAccessor protected val args: ApplicationListFragmentArgs by navArgs() ProtectedMemberInFinalClass:ApplicationListFragment.kt$ApplicationListFragment$// protected to avoid SyntheticAccessor protected val viewModel: ApplicationListViewModel by viewModels() ProtectedMemberInFinalClass:GoogleSignInFragment.kt$GoogleSignInFragment$// protected to avoid SyntheticAccessor protected val viewModel: LoginViewModel by lazy { ViewModelProvider(requireActivity())[LoginViewModel::class.java] } - ReturnCount:ApkSignatureManager.kt$ApkSignatureManager$private fun verifyAPKSignature( apkInputStream: BufferedInputStream, apkSignatureInputStream: InputStream, publicKeyInputStream: InputStream, packageName: String ): Boolean ReturnCount:AppInstallProcessor.kt$AppInstallProcessor$private suspend fun updateDownloadUrls(appInstall: AppInstall): Boolean - ReturnCount:AppInstallProcessor.kt$AppInstallProcessor$suspend fun enqueueFusedDownload( appInstall: AppInstall, isAnUpdate: Boolean = false, isSystemApp: Boolean = false ) ReturnCount:AppManagerWrapper.kt$AppManagerWrapper$suspend fun addDownload(appInstall: AppInstall): Boolean - ReturnCount:AppManagerWrapper.kt$AppManagerWrapper$suspend fun calculateProgress( application: Application?, progress: DownloadProgress ): Int - ReturnCount:AppPrivacyInfoRepositoryImpl.kt$AppPrivacyInfoRepositoryImpl$override suspend fun getAppPrivacyInfo( application: Application, appHandle: String ): Result<AppPrivacyInfo> ReturnCount:CleanApkAppsRepository.kt$CleanApkAppsRepository$override suspend fun getAppDetails(packageName: String): Application ReturnCount:CleanApkPwaRepository.kt$CleanApkPwaRepository$override suspend fun getAppDetails(packageName: String): Application ReturnCount:DownloadManager.kt$DownloadManager$fun getSizeRequired(downloadId: Long): Long - ReturnCount:DownloadManager.kt$DownloadManager$private fun sanitizeStatus(downloadId: Long, status: Int, reason: Int): Int - ReturnCount:Extensions.kt$fun Context.isNetworkAvailable(): Boolean - ReturnCount:PrivacyInfoViewModel.kt$PrivacyInfoViewModel$fun shouldRequestExodusReport(application: Application?): Boolean - ReturnCount:StorageNotificationManager.kt$StorageNotificationManager$private fun getSpaceMissing(appInstall: AppInstall, downloadId: Long? = null): Long - ReturnCount:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$private suspend fun getApplication( packageName: String, releaseType: OsReleaseType, sdkLevel: Int, device: String, ): Application? + ReturnCount:NetworkExtensions.kt$fun Context.isNetworkAvailable(): Boolean ReturnCount:SystemAppsUpdatesRepository.kt$SystemAppsUpdatesRepository$private suspend fun getReleaseDetailsUrl( systemAppProject: SystemAppProject, releaseType: OsReleaseType, ): String? ReturnCount:UpdatesManagerImpl.kt$UpdatesManagerImpl$private suspend fun calculateSignatureVersion(latestCleanapkApp: Application): String SpreadOperator:EglExtensionProvider.kt$EglExtensionProvider$(*`as`) @@ -61,7 +54,6 @@ TooGenericExceptionCaught:AppPrivacyInfoRepositoryImpl.kt$AppPrivacyInfoRepositoryImpl$exception: Exception TooGenericExceptionCaught:ApplicationViewModel.kt$ApplicationViewModel$e: Exception TooGenericExceptionCaught:BlockedAppRepository.kt$BlockedAppRepository$exception: Exception - TooGenericExceptionCaught:CommonUtilsModule.kt$CommonUtilsModule$e: Exception TooGenericExceptionCaught:DownloadManager.kt$DownloadManager$e: Exception TooGenericExceptionCaught:DownloadManager.kt$DownloadManager$e: RuntimeException TooGenericExceptionCaught:DownloadProgressLD.kt$DownloadProgressLD$e: Exception @@ -71,6 +63,7 @@ TooGenericExceptionCaught:InstallWorkManager.kt$InstallWorkManager$e: Exception TooGenericExceptionCaught:LocaleChangedBroadcastReceiver.kt$LocaleChangedBroadcastReceiver$ex: Exception TooGenericExceptionCaught:NativeDeviceInfoProviderModule.kt$NativeDeviceInfoProviderModule$e: Exception + TooGenericExceptionCaught:NavControllerExtensions.kt$e: Exception TooGenericExceptionCaught:NetworkHandler.kt$e: Exception TooGenericExceptionCaught:PlayStoreRepository.kt$PlayStoreRepository$exception: Exception TooGenericExceptionCaught:PwaManager.kt$PwaManager$e: Exception @@ -92,7 +85,6 @@ UseCheckOrError:AppsApiImpl.kt$AppsApiImpl$throw IllegalStateException("Could not get store") UseCheckOrError:CleanApkAppsRepository.kt$CleanApkAppsRepository$throw IllegalStateException("No home data found") UseCheckOrError:CleanApkPwaRepository.kt$CleanApkPwaRepository$throw IllegalStateException("No home data found") - UseCheckOrError:HomeApiImpl.kt$HomeApiImpl$throw IllegalStateException("Could not find store for $source") UseCheckOrError:PlayStoreRepository.kt$PlayStoreRepository$throw IllegalStateException("App version code cannot be 0") UseCheckOrError:PlayStoreRepository.kt$PlayStoreRepository$throw IllegalStateException("Could not get download details for $idOrPackageName") Wrapping:AppInstallProcessor.kt$AppInstallProcessor$( diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cb9d3d92a951959d070a817074fa7e9e020a32c3..a8fff317b851c876840266a3b9f12e8103b53986 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -124,12 +124,12 @@ @@ -139,7 +139,7 @@ - @@ -147,7 +147,7 @@ - @@ -156,7 +156,7 @@ - @@ -166,7 +166,7 @@ - @@ -195,7 +195,7 @@ @@ -205,7 +205,7 @@ tools:node="merge" /> diff --git a/app/src/main/java/foundation/e/apps/AppLoungeApplication.kt b/app/src/main/java/foundation/e/apps/AppLoungeApplication.kt index b98bfc5d4d13373a15b9792e6c243917cd6f9d5e..98b7056d47c10a915b3d18564dd14ba0165e4609 100644 --- a/app/src/main/java/foundation/e/apps/AppLoungeApplication.kt +++ b/app/src/main/java/foundation/e/apps/AppLoungeApplication.kt @@ -28,17 +28,17 @@ import androidx.work.ExistingPeriodicWorkPolicy import dagger.hilt.android.HiltAndroidApp import foundation.e.apps.data.Constants.TAG_APP_INSTALL_STATE import foundation.e.apps.data.Constants.TAG_AUTHDATA_DUMP +import foundation.e.apps.data.di.qualifiers.IoCoroutineScope import foundation.e.apps.data.enums.Status import foundation.e.apps.data.install.AppInstallDAO +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PkgManagerBR +import foundation.e.apps.data.install.updates.UpdatesWorkManager +import foundation.e.apps.data.install.workmanager.InstallWorkManager import foundation.e.apps.data.preference.AppLoungeDataStore import foundation.e.apps.data.preference.AppLoungePreference -import foundation.e.apps.di.qualifiers.IoCoroutineScope -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PkgManagerBR -import foundation.e.apps.install.updates.UpdatesWorkManager -import foundation.e.apps.install.workmanager.InstallWorkManager +import foundation.e.apps.data.system.CustomUncaughtExceptionHandler import foundation.e.apps.ui.setup.tos.TOS_VERSION -import foundation.e.apps.utils.CustomUncaughtExceptionHandler import foundation.e.lib.telemetry.Telemetry import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.DelicateCoroutinesApi diff --git a/app/src/main/java/foundation/e/apps/data/application/ApplicationDataManager.kt b/app/src/main/java/foundation/e/apps/data/application/ApplicationDataManager.kt index 29670f642a42096777a36184714bf8970b6e8b8e..8dbdf763d107ab1654cf7f5285ef72157edd3d3c 100644 --- a/app/src/main/java/foundation/e/apps/data/application/ApplicationDataManager.kt +++ b/app/src/main/java/foundation/e/apps/data/application/ApplicationDataManager.kt @@ -25,8 +25,8 @@ import foundation.e.apps.data.application.utils.AppVisibilityResolver import foundation.e.apps.data.enums.FilterLevel import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager import javax.inject.Inject import javax.inject.Singleton 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 97de5c53edf186c35f678f1b369bcf8562214792..21c90013400cd7403f9411ed1a7e7ade30811052 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 @@ -23,7 +23,7 @@ import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.cleanapk.repositories.NUMBER_OF_ITEMS import foundation.e.apps.data.cleanapk.repositories.NUMBER_OF_PAGES import foundation.e.apps.data.enums.Source -import foundation.e.apps.utils.SystemInfoProvider +import foundation.e.apps.data.system.SystemInfoProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import javax.inject.Inject 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 d9e03e71572f3a406ffceaccbfc2c3895ebe0114..8aea72bf0e8465839332640fad7ba580a51a7efd 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 @@ -29,7 +29,7 @@ import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.data.download.Download import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.enums.Source -import foundation.e.apps.utils.SystemInfoProvider +import foundation.e.apps.data.system.SystemInfoProvider import retrofit2.Response import javax.inject.Inject diff --git a/app/src/main/java/foundation/e/apps/di/DataModule.kt b/app/src/main/java/foundation/e/apps/data/di/bindings/DataModule.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/di/DataModule.kt rename to app/src/main/java/foundation/e/apps/data/di/bindings/DataModule.kt index 5d0d905768aa6669b35dfdd2304b22e5d52a4daf..65ec3c222ba1e084d8312090d72ec246bd21f2e2 100644 --- a/app/src/main/java/foundation/e/apps/di/DataModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/bindings/DataModule.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.di +package foundation.e.apps.data.di.bindings import dagger.Binds import dagger.Module diff --git a/app/src/main/java/foundation/e/apps/di/LoginModule.kt b/app/src/main/java/foundation/e/apps/data/di/bindings/LoginModule.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/di/LoginModule.kt rename to app/src/main/java/foundation/e/apps/data/di/bindings/LoginModule.kt index 20d7c4b0b9876ea1c051b43ddc1c87de8cb06a19..e2de022ad750304162bd0399691c63980e674f93 100644 --- a/app/src/main/java/foundation/e/apps/di/LoginModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/bindings/LoginModule.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.di +package foundation.e.apps.data.di.bindings import dagger.Module import dagger.Provides diff --git a/app/src/main/java/foundation/e/apps/di/RepositoryModule.kt b/app/src/main/java/foundation/e/apps/data/di/bindings/RepositoryModule.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/di/RepositoryModule.kt rename to app/src/main/java/foundation/e/apps/data/di/bindings/RepositoryModule.kt index 0038958d12fba4cc8fcc754842f0a54014335e73..9b4ded794821f08253a68fd04211480fe093eb20 100644 --- a/app/src/main/java/foundation/e/apps/di/RepositoryModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/bindings/RepositoryModule.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.di +package foundation.e.apps.data.di.bindings import dagger.Binds import dagger.Module diff --git a/app/src/main/java/foundation/e/apps/di/SearchPagingModule.kt b/app/src/main/java/foundation/e/apps/data/di/bindings/SearchPagingModule.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/di/SearchPagingModule.kt rename to app/src/main/java/foundation/e/apps/data/di/bindings/SearchPagingModule.kt index d0aa29ffbaf7fa657581d53f8cd74433782d6627..46ba941d834dc89919b23a36f6dea346fd35bd4d 100644 --- a/app/src/main/java/foundation/e/apps/di/SearchPagingModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/bindings/SearchPagingModule.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.di +package foundation.e.apps.data.di.bindings import dagger.Binds import dagger.Module diff --git a/app/src/main/java/foundation/e/apps/di/SearchSuggestionModule.kt b/app/src/main/java/foundation/e/apps/data/di/bindings/SearchSuggestionModule.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/di/SearchSuggestionModule.kt rename to app/src/main/java/foundation/e/apps/data/di/bindings/SearchSuggestionModule.kt index 8f538b8c81ca51480beaeadc164b4c8fb0f92c85..eb4164dda593907b2d98ed647696c0405a62b61b 100644 --- a/app/src/main/java/foundation/e/apps/di/SearchSuggestionModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/bindings/SearchSuggestionModule.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.di +package foundation.e.apps.data.di.bindings import dagger.Binds import dagger.Module diff --git a/app/src/main/java/foundation/e/apps/di/DaoModule.kt b/app/src/main/java/foundation/e/apps/data/di/db/DaoModule.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/di/DaoModule.kt rename to app/src/main/java/foundation/e/apps/data/di/db/DaoModule.kt index c58bbde22d4d7c233ad6c69a1fa96fe9e8a4facc..e86eb719f3850740c59b1a65fe10d1cd04fd972b 100644 --- a/app/src/main/java/foundation/e/apps/di/DaoModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/db/DaoModule.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.di +package foundation.e.apps.data.di.db import android.content.Context import dagger.Module diff --git a/app/src/main/java/foundation/e/apps/di/DatabaseModule.kt b/app/src/main/java/foundation/e/apps/data/di/db/DatabaseModule.kt similarity index 95% rename from app/src/main/java/foundation/e/apps/di/DatabaseModule.kt rename to app/src/main/java/foundation/e/apps/data/di/db/DatabaseModule.kt index 00be9761f1741e5d38ff2c57b283bae7e0a28ebc..615edbd93ff7573cb073740d3029daba6d81d263 100644 --- a/app/src/main/java/foundation/e/apps/di/DatabaseModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/db/DatabaseModule.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.di +package foundation.e.apps.data.di.db import android.content.Context import dagger.Module diff --git a/app/src/main/java/foundation/e/apps/di/network/InterceptorModule.kt b/app/src/main/java/foundation/e/apps/data/di/network/InterceptorModule.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/di/network/InterceptorModule.kt rename to app/src/main/java/foundation/e/apps/data/di/network/InterceptorModule.kt index e5ba08cf7b63cdf6d52b4ed7a3821bb03478d269..35b98ef47e1bc9b37d4e1c8ec855ca4ae065f844 100644 --- a/app/src/main/java/foundation/e/apps/di/network/InterceptorModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/network/InterceptorModule.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.di.network +package foundation.e.apps.data.di.network import android.annotation.SuppressLint import android.os.Build diff --git a/app/src/main/java/foundation/e/apps/di/network/NetworkModule.kt b/app/src/main/java/foundation/e/apps/data/di/network/NetworkModule.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/di/network/NetworkModule.kt rename to app/src/main/java/foundation/e/apps/data/di/network/NetworkModule.kt index cdeb0e363459775920d9e9ad6dffd030804356fc..077da8db48d0a074fe636f2d5be79c943ab2a200 100644 --- a/app/src/main/java/foundation/e/apps/di/network/NetworkModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/network/NetworkModule.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.di.network +package foundation.e.apps.data.di.network import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory diff --git a/app/src/main/java/foundation/e/apps/di/network/RetrofitApiModule.kt b/app/src/main/java/foundation/e/apps/data/di/network/RetrofitApiModule.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/di/network/RetrofitApiModule.kt rename to app/src/main/java/foundation/e/apps/data/di/network/RetrofitApiModule.kt index e021ae9828f1b664ca2d4a0177299081e8bfad5f..b25d776b6901fb60a0a68a3167bef53d9deb165b 100644 --- a/app/src/main/java/foundation/e/apps/di/network/RetrofitApiModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/network/RetrofitApiModule.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.di.network +package foundation.e.apps.data.di.network import com.google.gson.Gson import com.squareup.moshi.Moshi @@ -25,6 +25,7 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import foundation.e.apps.data.cleanapk.CleanApkRetrofit +import foundation.e.apps.data.di.network.NetworkModule.getYamlFactory import foundation.e.apps.data.ecloud.EcloudApiInterface import foundation.e.apps.data.fdroid.FdroidApiInterface import foundation.e.apps.data.gitlab.ReleaseInfoApi @@ -32,7 +33,6 @@ import foundation.e.apps.data.gitlab.SystemAppDefinitionApi import foundation.e.apps.data.gitlab.UpdatableSystemAppsApi import foundation.e.apps.data.parentalcontrol.fdroid.FDroidMonitorApi import foundation.e.apps.data.parentalcontrol.googleplay.AgeGroupApi -import foundation.e.apps.di.network.NetworkModule.getYamlFactory import okhttp3.OkHttpClient import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory diff --git a/app/src/main/java/foundation/e/apps/di/qualifiers/IoCoroutineScope.kt b/app/src/main/java/foundation/e/apps/data/di/qualifiers/IoCoroutineScope.kt similarity index 94% rename from app/src/main/java/foundation/e/apps/di/qualifiers/IoCoroutineScope.kt rename to app/src/main/java/foundation/e/apps/data/di/qualifiers/IoCoroutineScope.kt index 0e6858f36006f802572997d41592ee6c2ed2a473..2964d6a892194b1b57f00d94009de29a6638ffff 100644 --- a/app/src/main/java/foundation/e/apps/di/qualifiers/IoCoroutineScope.kt +++ b/app/src/main/java/foundation/e/apps/data/di/qualifiers/IoCoroutineScope.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.di.qualifiers +package foundation.e.apps.data.di.qualifiers import javax.inject.Qualifier diff --git a/app/src/main/java/foundation/e/apps/di/AccountManagerModule.kt b/app/src/main/java/foundation/e/apps/data/di/system/AccountManagerModule.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/di/AccountManagerModule.kt rename to app/src/main/java/foundation/e/apps/data/di/system/AccountManagerModule.kt index c7f5029727c982f04bcf12f1873dc50e57214f6a..f43107ec7c91f0d7ae6a5c048b92e758c7e81f2e 100644 --- a/app/src/main/java/foundation/e/apps/di/AccountManagerModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/system/AccountManagerModule.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.di +package foundation.e.apps.data.di.system import android.accounts.AccountManager import android.content.Context diff --git a/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt b/app/src/main/java/foundation/e/apps/data/di/system/CommonUtilsModule.kt similarity index 75% rename from app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt rename to app/src/main/java/foundation/e/apps/data/di/system/CommonUtilsModule.kt index 44af528d97cca4e7d5924f8f9d510ca4dcfe2f19..486a3b2887d5040d42a41039a1f8bcca05e5699b 100644 --- a/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/system/CommonUtilsModule.kt @@ -16,16 +16,12 @@ * */ -package foundation.e.apps.di +package foundation.e.apps.data.di.system -import android.content.ClipboardManager import android.content.Context import android.os.Build -import android.os.Bundle import android.os.Environment import android.os.StatFs -import androidx.annotation.IdRes -import androidx.navigation.NavController import com.aurora.gplayapi.data.serializers.LocaleSerializer import com.aurora.gplayapi.data.serializers.PropertiesSerializer import dagger.Module @@ -34,7 +30,7 @@ import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import foundation.e.apps.BuildConfig -import foundation.e.apps.di.qualifiers.IoCoroutineScope +import foundation.e.apps.data.di.qualifiers.IoCoroutineScope import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob @@ -42,7 +38,6 @@ import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.contextual import okhttp3.Cache -import timber.log.Timber import javax.inject.Named import javax.inject.Singleton @@ -50,7 +45,6 @@ import javax.inject.Singleton @InstallIn(SingletonComponent::class) object CommonUtilsModule { - val LIST_OF_NULL = listOf("null") private const val CACHE_SIZE_MB = 30L private const val BYTES_IN_MB = 1024L * 1024L @@ -126,37 +120,9 @@ object CommonUtilsModule { return Cache(context.cacheDir, cacheSize) } - /** - * Prevents calling a route if the navigation is already done, i.e. prevents duplicate calls. - * Source: - * https://nezspencer.medium.com/navigation-components-a-fix-for-navigation-action- - * cannot-be-found-in-the-current-destination-95b63e16152e - * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5166 - * Also related: https://gitlab.e.foundation/ecorp/apps/apps/-/merge_requests/28 - */ - fun NavController.safeNavigate( - @IdRes currentDestinationId: Int, - @IdRes id: Int, - args: Bundle? = null - ) { - try { - if (currentDestinationId == currentDestination?.id) { - navigate(id, args) - } - } catch (e: Exception) { - Timber.w(e, "Navigation to destination $id failed") - } - } - @Provides @IoCoroutineScope fun provideIoCoroutineScope(): CoroutineScope { return CoroutineScope(SupervisorJob() + Dispatchers.IO) } - - @Singleton - @Provides - fun provideClipboardService(@ApplicationContext context: Context): ClipboardManager { - return context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - } } diff --git a/app/src/main/java/foundation/e/apps/di/DownloadManagerModule.kt b/app/src/main/java/foundation/e/apps/data/di/system/DownloadManagerModule.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/di/DownloadManagerModule.kt rename to app/src/main/java/foundation/e/apps/data/di/system/DownloadManagerModule.kt index 91f2d7fb57d84806e635d3a5cf034ad7c2c3ce57..f819352ffd404cf98f553933d7e4984281a9dcf2 100644 --- a/app/src/main/java/foundation/e/apps/di/DownloadManagerModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/system/DownloadManagerModule.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.di +package foundation.e.apps.data.di.system import android.app.DownloadManager import android.content.Context diff --git a/app/src/main/java/foundation/e/apps/di/NotificationManagerModule.kt b/app/src/main/java/foundation/e/apps/data/di/system/NotificationManagerModule.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/di/NotificationManagerModule.kt rename to app/src/main/java/foundation/e/apps/data/di/system/NotificationManagerModule.kt index 3f7ffe30cc7f40547a07a601d889d8a433a7de3e..f3cb76b6f411dd7060e1e42794bd593f0074e936 100644 --- a/app/src/main/java/foundation/e/apps/di/NotificationManagerModule.kt +++ b/app/src/main/java/foundation/e/apps/data/di/system/NotificationManagerModule.kt @@ -17,7 +17,7 @@ * */ -package foundation.e.apps.di +package foundation.e.apps.data.di.system import android.app.NotificationChannel import android.app.NotificationManager diff --git a/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt b/app/src/main/java/foundation/e/apps/data/event/AppEvent.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt rename to app/src/main/java/foundation/e/apps/data/event/AppEvent.kt index 8d5b38673348732969ab2319f266ee5179101018..57806cd6188cce1e02012ced39a4e7e304bbe870 100644 --- a/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt +++ b/app/src/main/java/foundation/e/apps/data/event/AppEvent.kt @@ -18,7 +18,7 @@ * */ -package foundation.e.apps.utils.eventBus +package foundation.e.apps.data.event import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.ResultStatus diff --git a/app/src/main/java/foundation/e/apps/utils/eventBus/EventBus.kt b/app/src/main/java/foundation/e/apps/data/event/EventBus.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/utils/eventBus/EventBus.kt rename to app/src/main/java/foundation/e/apps/data/event/EventBus.kt index ffb5fac954cbe10ef69552dc3ff40b8c9a684d47..e925f80f9f4201b524372613c70c3c6627b47056 100644 --- a/app/src/main/java/foundation/e/apps/utils/eventBus/EventBus.kt +++ b/app/src/main/java/foundation/e/apps/data/event/EventBus.kt @@ -18,7 +18,7 @@ * */ -package foundation.e.apps.utils.eventBus +package foundation.e.apps.data.event import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.asSharedFlow diff --git a/app/src/main/java/foundation/e/apps/utils/ExodusUriGenerator.kt b/app/src/main/java/foundation/e/apps/data/exodus/ExodusUriGenerator.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/utils/ExodusUriGenerator.kt rename to app/src/main/java/foundation/e/apps/data/exodus/ExodusUriGenerator.kt index 3305a2042c0f532a91fe576e2717e61df67f307a..ae9a81e9b82c4a947cf4d40378a598eb38ac2fc6 100644 --- a/app/src/main/java/foundation/e/apps/utils/ExodusUriGenerator.kt +++ b/app/src/main/java/foundation/e/apps/data/exodus/ExodusUriGenerator.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.utils +package foundation.e.apps.data.exodus import android.net.Uri import java.util.Locale diff --git a/app/src/main/java/foundation/e/apps/data/fdroid/FdroidApiInterface.kt b/app/src/main/java/foundation/e/apps/data/fdroid/FdroidApiInterface.kt index 120064d8e99ab7640bb36093afbb790204fffe01..32c69536921422b3495a6864c611d7ba7b0e0de6 100644 --- a/app/src/main/java/foundation/e/apps/data/fdroid/FdroidApiInterface.kt +++ b/app/src/main/java/foundation/e/apps/data/fdroid/FdroidApiInterface.kt @@ -25,7 +25,7 @@ import retrofit2.http.Path /** * Interface for retrofit calls. - * Created from [foundation.e.apps.di.network.RetrofitApiModule.provideFdroidApi]. + * Created from [foundation.e.apps.data.di.network.RetrofitApiModule.provideFdroidApi]. */ interface FdroidApiInterface { diff --git a/app/src/main/java/foundation/e/apps/data/fdroid/FdroidDao.kt b/app/src/main/java/foundation/e/apps/data/fdroid/FdroidDao.kt index 19576d5ea777d4df66fd3bfb158242199fcffbf4..d53dda5aa691a6f8d8f0dd132e7ef89cb350a266 100644 --- a/app/src/main/java/foundation/e/apps/data/fdroid/FdroidDao.kt +++ b/app/src/main/java/foundation/e/apps/data/fdroid/FdroidDao.kt @@ -8,7 +8,7 @@ import foundation.e.apps.data.fdroid.models.FdroidEntity /** * Dao interface for storing Fdroid info in DB. - * Created from [foundation.e.apps.di.DaoModule.getFdroidDao] + * Created from [foundation.e.apps.data.di.db.DaoModule.getFdroidDao] */ @Dao interface FdroidDao { 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 9071df854ea57d4b6dfeab956ac896d52e348997..20d757c79a809789d0e06dd58724fc089175bcc7 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 @@ -31,8 +31,8 @@ import foundation.e.apps.data.gitlab.models.SystemAppInfo import foundation.e.apps.data.gitlab.models.SystemAppProject import foundation.e.apps.data.gitlab.models.toApplication import foundation.e.apps.data.handleNetworkResult -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.utils.SystemInfoProvider +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.system.SystemInfoProvider import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/foundation/e/apps/install/AppInstallComponents.kt b/app/src/main/java/foundation/e/apps/data/install/AppInstallComponents.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/install/AppInstallComponents.kt rename to app/src/main/java/foundation/e/apps/data/install/AppInstallComponents.kt index dfe3f93ac9ca6266b65c3ad51c82b0f2c78fe85f..4133ec4594e6f27113d0c3de21c907cf6d52cda0 100644 --- a/app/src/main/java/foundation/e/apps/install/AppInstallComponents.kt +++ b/app/src/main/java/foundation/e/apps/data/install/AppInstallComponents.kt @@ -17,7 +17,7 @@ * */ -package foundation.e.apps.install +package foundation.e.apps.data.install import foundation.e.apps.data.install.AppInstallRepository import foundation.e.apps.data.install.AppManagerWrapper 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 b7ff07e81d350879c90c5d16d7bbe5beb3659079..803c36e3b36cfe4e31ede10e5d45ec29b5cb38ed 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 @@ -30,13 +30,13 @@ import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.Type +import foundation.e.apps.data.install.download.data.DownloadProgressLD import foundation.e.apps.data.install.models.AppInstall +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager import foundation.e.apps.data.parentalcontrol.ContentRatingDao import foundation.e.apps.data.parentalcontrol.ContentRatingEntity import foundation.e.apps.data.preference.AppLoungePreference -import foundation.e.apps.install.download.data.DownloadProgressLD -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock 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 4fce1f9681f92bd13b94889be96c26de65fa4548..54b80142990eb180e1fc3cf649fa193b3fa8842d 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 @@ -25,9 +25,9 @@ import foundation.e.apps.data.Constants.MIN_VALID_RATING import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.enums.Status import foundation.e.apps.data.fdroid.FDroidRepository +import foundation.e.apps.data.install.download.data.DownloadProgress import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.install.download.data.DownloadProgress -import foundation.e.apps.install.workmanager.InstallWorkManager +import foundation.e.apps.data.install.workmanager.InstallWorkManager import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/foundation/e/apps/install/download/DownloadManagerBR.kt b/app/src/main/java/foundation/e/apps/data/install/download/DownloadManagerBR.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/install/download/DownloadManagerBR.kt rename to app/src/main/java/foundation/e/apps/data/install/download/DownloadManagerBR.kt index 819302f306de34a80e1fe677f27a5695f05863cb..40441bd9c54c21a478412647cb74cf903ba754cf 100644 --- a/app/src/main/java/foundation/e/apps/install/download/DownloadManagerBR.kt +++ b/app/src/main/java/foundation/e/apps/data/install/download/DownloadManagerBR.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.download +package foundation.e.apps.data.install.download import android.app.DownloadManager import android.content.BroadcastReceiver diff --git a/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt b/app/src/main/java/foundation/e/apps/data/install/download/DownloadManagerUtils.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt rename to app/src/main/java/foundation/e/apps/data/install/download/DownloadManagerUtils.kt index e02c357b69636193b6685f39786b0320409988c7..be7358f41f2804b1b906aa940602d19c6f917c85 100644 --- a/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt +++ b/app/src/main/java/foundation/e/apps/data/install/download/DownloadManagerUtils.kt @@ -16,20 +16,20 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.download +package foundation.e.apps.data.install.download import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.data.DownloadManager +import foundation.e.apps.data.di.qualifiers.IoCoroutineScope import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus import foundation.e.apps.data.install.AppManagerWrapper import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.di.qualifiers.IoCoroutineScope -import foundation.e.apps.install.notification.StorageNotificationManager -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus +import foundation.e.apps.data.install.notification.StorageNotificationManager import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.delay diff --git a/app/src/main/java/foundation/e/apps/install/download/data/DownloadProgress.kt b/app/src/main/java/foundation/e/apps/data/install/download/data/DownloadProgress.kt similarity index 82% rename from app/src/main/java/foundation/e/apps/install/download/data/DownloadProgress.kt rename to app/src/main/java/foundation/e/apps/data/install/download/data/DownloadProgress.kt index 26702236f143147b27533ec1d595323bcb93f9fd..256e028060fa4bd47baec3a1dfe27c294902d998 100644 --- a/app/src/main/java/foundation/e/apps/install/download/data/DownloadProgress.kt +++ b/app/src/main/java/foundation/e/apps/data/install/download/data/DownloadProgress.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.install.download.data +package foundation.e.apps.data.install.download.data data class DownloadProgress( var totalSizeBytes: MutableMap = mutableMapOf(), diff --git a/app/src/main/java/foundation/e/apps/install/download/data/DownloadProgressLD.kt b/app/src/main/java/foundation/e/apps/data/install/download/data/DownloadProgressLD.kt similarity index 99% rename from app/src/main/java/foundation/e/apps/install/download/data/DownloadProgressLD.kt rename to app/src/main/java/foundation/e/apps/data/install/download/data/DownloadProgressLD.kt index f5972e70e120321cf9e201e4e4a45e73e288e8d5..52023193f53d0ecf42bb8681dc9694806993e538 100644 --- a/app/src/main/java/foundation/e/apps/install/download/data/DownloadProgressLD.kt +++ b/app/src/main/java/foundation/e/apps/data/install/download/data/DownloadProgressLD.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.download.data +package foundation.e.apps.data.install.download.data import android.app.DownloadManager import android.app.DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR diff --git a/app/src/main/java/foundation/e/apps/install/notification/StorageNotificationManager.kt b/app/src/main/java/foundation/e/apps/data/install/notification/StorageNotificationManager.kt similarity index 95% rename from app/src/main/java/foundation/e/apps/install/notification/StorageNotificationManager.kt rename to app/src/main/java/foundation/e/apps/data/install/notification/StorageNotificationManager.kt index 292310b8e1c60b76f016978ec3fefacfcca30d03..77c89ee353faa1e2a97a9a30559e8adb81820cad 100644 --- a/app/src/main/java/foundation/e/apps/install/notification/StorageNotificationManager.kt +++ b/app/src/main/java/foundation/e/apps/data/install/notification/StorageNotificationManager.kt @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.notification +package foundation.e.apps.data.install.notification import android.Manifest import android.app.Notification @@ -29,9 +29,9 @@ import androidx.core.app.NotificationManagerCompat import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.data.DownloadManager +import foundation.e.apps.data.di.system.NotificationManagerModule import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.di.NotificationManagerModule -import foundation.e.apps.utils.StorageComputer +import foundation.e.apps.data.system.StorageComputer import javax.inject.Inject class StorageNotificationManager @Inject constructor( diff --git a/app/src/main/java/foundation/e/apps/install/pkg/AppLoungePackageManager.kt b/app/src/main/java/foundation/e/apps/data/install/pkg/AppLoungePackageManager.kt similarity index 99% rename from app/src/main/java/foundation/e/apps/install/pkg/AppLoungePackageManager.kt rename to app/src/main/java/foundation/e/apps/data/install/pkg/AppLoungePackageManager.kt index 984b4a63f215a7fd980c8a5feb37df0482dda152..ba909b51df67a429c9d35953c284e3c57f50a977 100644 --- a/app/src/main/java/foundation/e/apps/install/pkg/AppLoungePackageManager.kt +++ b/app/src/main/java/foundation/e/apps/data/install/pkg/AppLoungePackageManager.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.pkg +package foundation.e.apps.data.install.pkg import android.app.PendingIntent import android.content.Context diff --git a/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt b/app/src/main/java/foundation/e/apps/data/install/pkg/InstallerService.kt similarity index 95% rename from app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt rename to app/src/main/java/foundation/e/apps/data/install/pkg/InstallerService.kt index 9cc401c21e4d720240bbf7b7e709b01f7642e898..8e89f9ae2e4852fee51ed263ac03a31bcc77b35e 100644 --- a/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt +++ b/app/src/main/java/foundation/e/apps/data/install/pkg/InstallerService.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.pkg +package foundation.e.apps.data.install.pkg import android.app.Service import android.content.Intent @@ -24,11 +24,11 @@ import android.content.pm.PackageInstaller import android.os.IBinder import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.data.application.UpdatesDao +import foundation.e.apps.data.di.qualifiers.IoCoroutineScope +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus import foundation.e.apps.data.faultyApps.FaultyAppRepository import foundation.e.apps.data.install.AppManagerWrapper -import foundation.e.apps.di.qualifiers.IoCoroutineScope -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch diff --git a/app/src/main/java/foundation/e/apps/install/pkg/PkgManagerBR.kt b/app/src/main/java/foundation/e/apps/data/install/pkg/PkgManagerBR.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/install/pkg/PkgManagerBR.kt rename to app/src/main/java/foundation/e/apps/data/install/pkg/PkgManagerBR.kt index 4ae52e515db5fa793417e26ae8c6d2785a5295ee..8c85381fd0ffa2ce8dbc90073a5efffdf3d6e778 100644 --- a/app/src/main/java/foundation/e/apps/install/pkg/PkgManagerBR.kt +++ b/app/src/main/java/foundation/e/apps/data/install/pkg/PkgManagerBR.kt @@ -16,17 +16,17 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.pkg +package foundation.e.apps.data.install.pkg import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.pm.PackageInstaller import dagger.hilt.android.AndroidEntryPoint +import foundation.e.apps.data.di.qualifiers.IoCoroutineScope import foundation.e.apps.data.enums.Status import foundation.e.apps.data.faultyApps.FaultyAppRepository import foundation.e.apps.data.install.AppManagerWrapper -import foundation.e.apps.di.qualifiers.IoCoroutineScope import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import timber.log.Timber diff --git a/app/src/main/java/foundation/e/apps/install/pkg/PwaManager.kt b/app/src/main/java/foundation/e/apps/data/install/pkg/PwaManager.kt similarity index 99% rename from app/src/main/java/foundation/e/apps/install/pkg/PwaManager.kt rename to app/src/main/java/foundation/e/apps/data/install/pkg/PwaManager.kt index c505af2d913cceb6d22da2d7e132ebb146da8dc6..af585c7920e1429063b70f471ac594c076a39d0c 100644 --- a/app/src/main/java/foundation/e/apps/install/pkg/PwaManager.kt +++ b/app/src/main/java/foundation/e/apps/data/install/pkg/PwaManager.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.install.pkg +package foundation.e.apps.data.install.pkg import android.content.ContentUris import android.content.ContentValues diff --git a/app/src/main/java/foundation/e/apps/install/receiver/PwaPlayerStatusReceiver.kt b/app/src/main/java/foundation/e/apps/data/install/receiver/PwaPlayerStatusReceiver.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/install/receiver/PwaPlayerStatusReceiver.kt rename to app/src/main/java/foundation/e/apps/data/install/receiver/PwaPlayerStatusReceiver.kt index dce98e93473dde7f5dd6a92280c40984bed528f0..a453de0adc321186313c1eb65d1545e0e09563a1 100644 --- a/app/src/main/java/foundation/e/apps/install/receiver/PwaPlayerStatusReceiver.kt +++ b/app/src/main/java/foundation/e/apps/data/install/receiver/PwaPlayerStatusReceiver.kt @@ -15,15 +15,15 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.receiver +package foundation.e.apps.data.install.receiver import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import dagger.hilt.android.AndroidEntryPoint +import foundation.e.apps.data.di.qualifiers.IoCoroutineScope import foundation.e.apps.data.enums.Status import foundation.e.apps.data.install.AppInstallRepository -import foundation.e.apps.di.qualifiers.IoCoroutineScope import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import timber.log.Timber diff --git a/app/src/main/java/foundation/e/apps/install/updates/UpdatesBroadcastReceiver.kt b/app/src/main/java/foundation/e/apps/data/install/updates/UpdatesBroadcastReceiver.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/install/updates/UpdatesBroadcastReceiver.kt rename to app/src/main/java/foundation/e/apps/data/install/updates/UpdatesBroadcastReceiver.kt index d0173bd56effd6f3c5f7daa4c8d379cb022b96ad..5599eced76320dcdd228ac9802822fc5e61d42f0 100644 --- a/app/src/main/java/foundation/e/apps/install/updates/UpdatesBroadcastReceiver.kt +++ b/app/src/main/java/foundation/e/apps/data/install/updates/UpdatesBroadcastReceiver.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.updates +package foundation.e.apps.data.install.updates import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt b/app/src/main/java/foundation/e/apps/data/install/updates/UpdatesNotifier.kt similarity index 99% rename from app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt rename to app/src/main/java/foundation/e/apps/data/install/updates/UpdatesNotifier.kt index e63239fc96ee2bfd364d062b2a58fe7b6a21a44a..e48d8d42a82233d367c1be94e35829389a54dcbe 100644 --- a/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt +++ b/app/src/main/java/foundation/e/apps/data/install/updates/UpdatesNotifier.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.updates +package foundation.e.apps.data.install.updates import android.Manifest import android.app.Notification diff --git a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorkManager.kt b/app/src/main/java/foundation/e/apps/data/install/updates/UpdatesWorkManager.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/install/updates/UpdatesWorkManager.kt rename to app/src/main/java/foundation/e/apps/data/install/updates/UpdatesWorkManager.kt index 617ab0654666d7e24009ffe877a24cbbfeadf8ca..348e1a99c85ababf1283a3366ee3cb10da647c7e 100644 --- a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorkManager.kt +++ b/app/src/main/java/foundation/e/apps/data/install/updates/UpdatesWorkManager.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.updates +package foundation.e.apps.data.install.updates import android.content.Context import androidx.work.Constraints diff --git a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt b/app/src/main/java/foundation/e/apps/data/install/updates/UpdatesWorker.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt rename to app/src/main/java/foundation/e/apps/data/install/updates/UpdatesWorker.kt index 021818c4cd6ac4e6b4cf1c45d9a4e32b90efdf9b..31d0e20d26a901ada9b5f77381e7e80b6578c471 100644 --- a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt +++ b/app/src/main/java/foundation/e/apps/data/install/updates/UpdatesWorker.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.install.updates +package foundation.e.apps.data.install.updates import android.Manifest import android.content.Context @@ -20,13 +20,13 @@ import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.blockedApps.BlockedAppRepository import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.User +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus import foundation.e.apps.data.gitlab.SystemAppsUpdatesRepository +import foundation.e.apps.data.install.workmanager.AppInstallProcessor import foundation.e.apps.data.login.repository.AuthenticatorRepository import foundation.e.apps.data.preference.AppLoungeDataStore import foundation.e.apps.data.updates.UpdatesManagerRepository -import foundation.e.apps.install.workmanager.AppInstallProcessor -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.withContext diff --git a/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt b/app/src/main/java/foundation/e/apps/data/install/workmanager/AppInstallProcessor.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt rename to app/src/main/java/foundation/e/apps/data/install/workmanager/AppInstallProcessor.kt index 198a18c4dfc802562386d09438023ecbdf52e286..0e968c35b212aca9e5324e9fae8c596ee457997a 100644 --- a/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt +++ b/app/src/main/java/foundation/e/apps/data/install/workmanager/AppInstallProcessor.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.workmanager +package foundation.e.apps.data.install.workmanager import android.content.Context import androidx.annotation.VisibleForTesting @@ -32,22 +32,22 @@ import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.Type import foundation.e.apps.data.enums.User +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus +import foundation.e.apps.data.install.AppInstallComponents import foundation.e.apps.data.install.AppManager +import foundation.e.apps.data.install.download.DownloadManagerUtils import foundation.e.apps.data.install.models.AppInstall +import foundation.e.apps.data.install.notification.StorageNotificationManager +import foundation.e.apps.data.install.updates.UpdatesNotifier import foundation.e.apps.data.playstore.utils.GplayHttpRequestException import foundation.e.apps.data.preference.AppLoungeDataStore +import foundation.e.apps.data.system.ParentalControlAuthenticator +import foundation.e.apps.data.system.StorageComputer +import foundation.e.apps.data.system.isNetworkAvailable +import foundation.e.apps.data.utils.getFormattedString import foundation.e.apps.domain.ValidateAppAgeLimitUseCase import foundation.e.apps.domain.model.ContentRatingValidity -import foundation.e.apps.install.AppInstallComponents -import foundation.e.apps.install.download.DownloadManagerUtils -import foundation.e.apps.install.notification.StorageNotificationManager -import foundation.e.apps.install.updates.UpdatesNotifier -import foundation.e.apps.utils.ParentalControlAuthenticator -import foundation.e.apps.utils.StorageComputer -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus -import foundation.e.apps.utils.getFormattedString -import foundation.e.apps.utils.isNetworkAvailable import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.flow.transformWhile diff --git a/app/src/main/java/foundation/e/apps/install/workmanager/InstallAppWorker.kt b/app/src/main/java/foundation/e/apps/data/install/workmanager/InstallAppWorker.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/install/workmanager/InstallAppWorker.kt rename to app/src/main/java/foundation/e/apps/data/install/workmanager/InstallAppWorker.kt index 0344e45eff580f3b4dd1402274b3b8c063780bbe..c4af7cfbb4a7bd717c6f2351a9923ecff40d439a 100644 --- a/app/src/main/java/foundation/e/apps/install/workmanager/InstallAppWorker.kt +++ b/app/src/main/java/foundation/e/apps/data/install/workmanager/InstallAppWorker.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.workmanager +package foundation.e.apps.data.install.workmanager import android.app.NotificationChannel import android.app.NotificationManager diff --git a/app/src/main/java/foundation/e/apps/install/workmanager/InstallWorkManager.kt b/app/src/main/java/foundation/e/apps/data/install/workmanager/InstallWorkManager.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/install/workmanager/InstallWorkManager.kt rename to app/src/main/java/foundation/e/apps/data/install/workmanager/InstallWorkManager.kt index 82db14f769be3d491c13004663477521adb052f8..e3a453b6e4c6acadca1461c10c0995e471791c81 100644 --- a/app/src/main/java/foundation/e/apps/install/workmanager/InstallWorkManager.kt +++ b/app/src/main/java/foundation/e/apps/data/install/workmanager/InstallWorkManager.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.install.workmanager +package foundation.e.apps.data.install.workmanager import android.app.Application import androidx.work.Data diff --git a/app/src/main/java/foundation/e/apps/data/login/playstore/PlayStoreSession.kt b/app/src/main/java/foundation/e/apps/data/login/playstore/PlayStoreSession.kt index 8ae043a88cc858af03e7a545b1e8c4216a0a3f6c..a4813eeccb0561a1f6eb01d14f10d2b4eb020ce2 100644 --- a/app/src/main/java/foundation/e/apps/data/login/playstore/PlayStoreSession.kt +++ b/app/src/main/java/foundation/e/apps/data/login/playstore/PlayStoreSession.kt @@ -21,11 +21,11 @@ package foundation.e.apps.data.login.playstore import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.User +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.login.api.LoginManager import foundation.e.apps.data.login.exceptions.GPlayLoginException -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus import java.util.Locale class PlayStoreSession( diff --git a/app/src/main/java/foundation/e/apps/microg/AuthDataProvider.kt b/app/src/main/java/foundation/e/apps/data/microg/AuthDataProvider.kt similarity index 99% rename from app/src/main/java/foundation/e/apps/microg/AuthDataProvider.kt rename to app/src/main/java/foundation/e/apps/data/microg/AuthDataProvider.kt index 61714d6ee4334bfb115de61ecaf12ac22dd5466d..b55665eda5612726f2134980db234e2dad3768f9 100644 --- a/app/src/main/java/foundation/e/apps/microg/AuthDataProvider.kt +++ b/app/src/main/java/foundation/e/apps/data/microg/AuthDataProvider.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.microg +package foundation.e.apps.data.microg import android.content.ContentProvider import android.content.ContentValues diff --git a/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt index 25540ddc4dd63e3cface7d953ea102752694a242..7f2a6579f20dc2520edadf91944a1bcbcdbc0a6d 100644 --- a/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt @@ -49,7 +49,7 @@ import foundation.e.apps.data.login.core.StoreType import foundation.e.apps.data.login.repository.AuthenticatorRepository import foundation.e.apps.data.playstore.utils.GPlayHttpClient import foundation.e.apps.data.playstore.utils.GplayHttpRequestException -import foundation.e.apps.utils.SystemInfoProvider +import foundation.e.apps.data.system.SystemInfoProvider import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async 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 4d525919a427f239d25a6efcba4b2dd58b290c6a..8cc187ea3f93f4eadc175ddd57096ba75de14901 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 @@ -21,10 +21,10 @@ package foundation.e.apps.data.playstore.utils import androidx.annotation.VisibleForTesting import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.network.IHttpClient +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus import foundation.e.apps.data.login.core.AuthObject -import foundation.e.apps.utils.SystemInfoProvider -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus +import foundation.e.apps.data.system.SystemInfoProvider import kotlinx.coroutines.MainScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt b/app/src/main/java/foundation/e/apps/data/provider/AgeRatingProvider.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt rename to app/src/main/java/foundation/e/apps/data/provider/AgeRatingProvider.kt index 80fd58e220df580185dce2ef32c073334e7fe0a5..fdfc8991668ffdbcd1b3f033e2c942bed61154f6 100644 --- a/app/src/main/java/foundation/e/apps/provider/AgeRatingProvider.kt +++ b/app/src/main/java/foundation/e/apps/data/provider/AgeRatingProvider.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.provider +package foundation.e.apps.data.provider import android.app.NotificationChannel import android.app.NotificationManager @@ -46,6 +46,7 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.blockedApps.BlockedAppRepository import foundation.e.apps.data.enums.Source import foundation.e.apps.data.install.models.AppInstall +import foundation.e.apps.data.install.pkg.AppLoungePackageManager import foundation.e.apps.data.login.exceptions.GPlayLoginException import foundation.e.apps.data.login.repository.AuthenticatorRepository import foundation.e.apps.data.parentalcontrol.ContentRatingDao @@ -53,10 +54,9 @@ import foundation.e.apps.data.parentalcontrol.ContentRatingEntity import foundation.e.apps.data.parentalcontrol.fdroid.FDroidAntiFeatureRepository import foundation.e.apps.data.parentalcontrol.googleplay.GPlayContentRatingRepository import foundation.e.apps.data.preference.AppLoungeDataStore +import foundation.e.apps.data.system.isNetworkAvailable import foundation.e.apps.domain.ValidateAppAgeLimitUseCase import foundation.e.apps.domain.model.ContentRatingValidity -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.utils.isNetworkAvailable import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll diff --git a/app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt b/app/src/main/java/foundation/e/apps/data/receivers/DumpAppInstallStatusReceiver.kt similarity index 95% rename from app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt rename to app/src/main/java/foundation/e/apps/data/receivers/DumpAppInstallStatusReceiver.kt index fdac17e2ec716b7abb3e91cc0f3c87c4136559c3..fec38c309d618e9b79905c2c6805379eab1f33b2 100644 --- a/app/src/main/java/foundation/e/apps/receivers/DumpAppInstallStatusReceiver.kt +++ b/app/src/main/java/foundation/e/apps/data/receivers/DumpAppInstallStatusReceiver.kt @@ -17,7 +17,7 @@ * */ -package foundation.e.apps.receivers +package foundation.e.apps.data.receivers import android.content.BroadcastReceiver import android.content.Context @@ -31,8 +31,8 @@ import foundation.e.apps.data.DownloadManager import foundation.e.apps.data.enums.Status import foundation.e.apps.data.install.AppInstallRepository import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.utils.NetworkStatusManager -import foundation.e.apps.utils.StorageComputer +import foundation.e.apps.data.system.NetworkStatusManager +import foundation.e.apps.data.system.StorageComputer import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch import timber.log.Timber diff --git a/app/src/main/java/foundation/e/apps/receivers/DumpAuthData.kt b/app/src/main/java/foundation/e/apps/data/receivers/DumpAuthData.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/receivers/DumpAuthData.kt rename to app/src/main/java/foundation/e/apps/data/receivers/DumpAuthData.kt index 5142132d64fdfab59ad9ecf96b7e72976c864a73..353029a4e173ab739594755e4fc2b56fc5b3d193 100644 --- a/app/src/main/java/foundation/e/apps/receivers/DumpAuthData.kt +++ b/app/src/main/java/foundation/e/apps/data/receivers/DumpAuthData.kt @@ -17,7 +17,7 @@ * */ -package foundation.e.apps.receivers +package foundation.e.apps.data.receivers import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/java/foundation/e/apps/utils/CustomUncaughtExceptionHandler.kt b/app/src/main/java/foundation/e/apps/data/system/CustomUncaughtExceptionHandler.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/utils/CustomUncaughtExceptionHandler.kt rename to app/src/main/java/foundation/e/apps/data/system/CustomUncaughtExceptionHandler.kt index c3e9fd6d70ab584db69de2e930a1492e3773eda8..18f206112c8e9920d0af10087592401cd2487b70 100644 --- a/app/src/main/java/foundation/e/apps/utils/CustomUncaughtExceptionHandler.kt +++ b/app/src/main/java/foundation/e/apps/data/system/CustomUncaughtExceptionHandler.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.utils +package foundation.e.apps.data.system import android.Manifest import android.app.Notification diff --git a/app/src/main/java/foundation/e/apps/data/system/NetworkExtensions.kt b/app/src/main/java/foundation/e/apps/data/system/NetworkExtensions.kt new file mode 100644 index 0000000000000000000000000000000000000000..d5b50e0752cc543131fb4e93cb76f9a498b18b7c --- /dev/null +++ b/app/src/main/java/foundation/e/apps/data/system/NetworkExtensions.kt @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2026 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.system + +import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkCapabilities + +fun Context.isNetworkAvailable(): Boolean { + val connectivityManager = getSystemService(ConnectivityManager::class.java) + val capabilities = + connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork) + + if (capabilities == null) { + return false + } + + if ( + capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && + capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) + ) { + return true + } + + return false +} diff --git a/app/src/main/java/foundation/e/apps/utils/NetworkStatusManager.kt b/app/src/main/java/foundation/e/apps/data/system/NetworkStatusManager.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/utils/NetworkStatusManager.kt rename to app/src/main/java/foundation/e/apps/data/system/NetworkStatusManager.kt index b49d41e99ce035f8a0fd6a6d9d36e3af2d84e48e..abd203097b7b3886f022b8f41fb6c75db9d8f13e 100644 --- a/app/src/main/java/foundation/e/apps/utils/NetworkStatusManager.kt +++ b/app/src/main/java/foundation/e/apps/data/system/NetworkStatusManager.kt @@ -17,7 +17,7 @@ * */ -package foundation.e.apps.utils +package foundation.e.apps.data.system import android.content.Context import android.net.ConnectivityManager diff --git a/app/src/main/java/foundation/e/apps/utils/ParentalControlAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/system/ParentalControlAuthenticator.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/utils/ParentalControlAuthenticator.kt rename to app/src/main/java/foundation/e/apps/data/system/ParentalControlAuthenticator.kt index bbfd82a5200ee1e233ad881ad82f360bfe9dafc3..b8496d0a225b9efe7c23f20b5e90c1e42c307618 100644 --- a/app/src/main/java/foundation/e/apps/utils/ParentalControlAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/system/ParentalControlAuthenticator.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.utils +package foundation.e.apps.data.system import android.content.Intent import androidx.activity.result.ActivityResultLauncher diff --git a/app/src/main/java/foundation/e/apps/utils/StorageComputer.kt b/app/src/main/java/foundation/e/apps/data/system/StorageComputer.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/utils/StorageComputer.kt rename to app/src/main/java/foundation/e/apps/data/system/StorageComputer.kt index 6af73e0e2e6111467996c625c6583df3647f1f69..a1f1a50efd36bd4347821b8b2a7ad8476a831f09 100644 --- a/app/src/main/java/foundation/e/apps/utils/StorageComputer.kt +++ b/app/src/main/java/foundation/e/apps/data/system/StorageComputer.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.utils +package foundation.e.apps.data.system import android.os.Environment import android.os.StatFs diff --git a/app/src/main/java/foundation/e/apps/utils/SystemInfoProvider.kt b/app/src/main/java/foundation/e/apps/data/system/SystemInfoProvider.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/utils/SystemInfoProvider.kt rename to app/src/main/java/foundation/e/apps/data/system/SystemInfoProvider.kt index ae20f7cdb480d29ddd9352203c69a27f93792c18..41dabf9a735f35cdbdd8b39af51d1853660dd912 100644 --- a/app/src/main/java/foundation/e/apps/utils/SystemInfoProvider.kt +++ b/app/src/main/java/foundation/e/apps/data/system/SystemInfoProvider.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.utils +package foundation.e.apps.data.system import android.annotation.SuppressLint import android.os.Build 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 5d8ad93eaebe0856232432eb62ac59b6d723c7eb..17fe245b405232b3a77f5a60dcaca30a54cda77f 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 @@ -33,8 +33,8 @@ import foundation.e.apps.data.faultyApps.FaultyAppRepository import foundation.e.apps.data.fdroid.FDroidRepository import foundation.e.apps.data.gitlab.SystemAppsUpdatesRepository import foundation.e.apps.data.handleNetworkResult +import foundation.e.apps.data.install.pkg.AppLoungePackageManager import foundation.e.apps.data.preference.AppLoungePreference -import foundation.e.apps.install.pkg.AppLoungePackageManager import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import timber.log.Timber diff --git a/app/src/main/java/foundation/e/apps/data/utils/ContentRatingExtensions.kt b/app/src/main/java/foundation/e/apps/data/utils/ContentRatingExtensions.kt new file mode 100644 index 0000000000000000000000000000000000000000..48c5e5f184169317bad912e4e2984386e6828c16 --- /dev/null +++ b/app/src/main/java/foundation/e/apps/data/utils/ContentRatingExtensions.kt @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2026 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.utils + +import com.aurora.gplayapi.data.models.ContentRating + +fun ContentRating.isValid() = title.isNotBlank() && artwork.url.isNotBlank() diff --git a/app/src/main/java/foundation/e/apps/data/utils/DateExtensions.kt b/app/src/main/java/foundation/e/apps/data/utils/DateExtensions.kt new file mode 100644 index 0000000000000000000000000000000000000000..5aa6024a651e14b05e710d8d19e292e32e0d7bae --- /dev/null +++ b/app/src/main/java/foundation/e/apps/data/utils/DateExtensions.kt @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2026 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.utils + +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale + +fun Date.getFormattedString(format: String, locale: Locale = Locale.getDefault()): String { + val dateFormat = SimpleDateFormat(format, locale) + return dateFormat.format(this) +} diff --git a/app/src/main/java/foundation/e/apps/domain/login/ReportFaultyTokenUseCase.kt b/app/src/main/java/foundation/e/apps/domain/login/ReportFaultyTokenUseCase.kt index 8b6d49f68d5afe815e40cf0c402bebb7f767a2e2..03f96ae77e289a0ed69b3495d917b7d677d8c4ed 100644 --- a/app/src/main/java/foundation/e/apps/domain/login/ReportFaultyTokenUseCase.kt +++ b/app/src/main/java/foundation/e/apps/domain/login/ReportFaultyTokenUseCase.kt @@ -3,7 +3,7 @@ package foundation.e.apps.domain.login import foundation.e.apps.data.ecloud.EcloudRepository import foundation.e.apps.data.login.core.AuthObject import foundation.e.apps.data.login.exceptions.GPlayValidationException -import foundation.e.apps.utils.SystemInfoProvider +import foundation.e.apps.data.system.SystemInfoProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import timber.log.Timber diff --git a/app/src/main/java/foundation/e/apps/ui/AppProgressViewModel.kt b/app/src/main/java/foundation/e/apps/ui/AppProgressViewModel.kt index 6deb29e8f0832f8611a1b883db2f69569e130ee3..3990fdf130b260cc22a8d8855a79ad451d910f05 100644 --- a/app/src/main/java/foundation/e/apps/ui/AppProgressViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/AppProgressViewModel.kt @@ -23,9 +23,9 @@ import dagger.hilt.android.lifecycle.HiltViewModel import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.application.mapper.toApplication import foundation.e.apps.data.install.AppManagerWrapper +import foundation.e.apps.data.install.download.data.DownloadProgress +import foundation.e.apps.data.install.download.data.DownloadProgressLD import foundation.e.apps.domain.application.ApplicationDomain -import foundation.e.apps.install.download.data.DownloadProgress -import foundation.e.apps.install.download.data.DownloadProgressLD import javax.inject.Inject @HiltViewModel 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 f0fd66815ac6696c9abe2c7524edf96877ec9aba..6102b1d8241d1fab932af464f2f8a92a1b735022 100644 --- a/app/src/main/java/foundation/e/apps/ui/MainActivity.kt +++ b/app/src/main/java/foundation/e/apps/ui/MainActivity.kt @@ -48,18 +48,18 @@ import foundation.e.apps.R import foundation.e.apps.contract.ParentalControlContract.COLUMN_LOGIN_TYPE import foundation.e.apps.data.Constants import foundation.e.apps.data.enums.User +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus import foundation.e.apps.data.install.models.AppInstall +import foundation.e.apps.data.install.updates.UpdatesNotifier import foundation.e.apps.data.login.core.StoreType +import foundation.e.apps.data.system.ParentalControlAuthenticator import foundation.e.apps.databinding.ActivityMainBinding -import foundation.e.apps.install.updates.UpdatesNotifier import foundation.e.apps.ui.application.subFrags.ApplicationDialogFragment import foundation.e.apps.ui.error.AppUnavailableDialogDirections import foundation.e.apps.ui.purchase.AppPurchaseFragmentDirections import foundation.e.apps.ui.settings.SettingsFragment import foundation.e.apps.ui.setup.signin.SignInViewModel -import foundation.e.apps.utils.ParentalControlAuthenticator -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.distinctUntilChanged 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 f48c1990a09a5e19e20104212366a0dcb0e6ea5c..8d41a6a959f7e87208500ba814a4f4d83717e946 100644 --- a/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt @@ -38,18 +38,18 @@ import foundation.e.apps.data.enums.isUnFiltered import foundation.e.apps.data.gitlab.SystemAppsUpdatesRepository import foundation.e.apps.data.install.AppManagerWrapper import foundation.e.apps.data.install.models.AppInstall +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager +import foundation.e.apps.data.install.workmanager.AppInstallProcessor import foundation.e.apps.data.login.core.AuthObject import foundation.e.apps.data.login.state.LoginState import foundation.e.apps.data.parentalcontrol.fdroid.FDroidAntiFeatureRepository import foundation.e.apps.data.parentalcontrol.googleplay.GPlayContentRatingRepository import foundation.e.apps.data.preference.AppLoungeDataStore import foundation.e.apps.data.preference.getSync +import foundation.e.apps.data.system.NetworkStatusManager import foundation.e.apps.domain.application.ApplicationDomain import foundation.e.apps.domain.login.ReportFaultyTokenUseCase -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager -import foundation.e.apps.install.workmanager.AppInstallProcessor -import foundation.e.apps.utils.NetworkStatusManager import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import javax.inject.Inject diff --git a/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt b/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt index 2b2877f51f10dba5597ffa7553db9d08bcab956d..0f1606afa2139301a8697c8818322d25b22984e7 100644 --- a/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt @@ -58,14 +58,16 @@ import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.User import foundation.e.apps.data.enums.isInitialized +import foundation.e.apps.data.exodus.ExodusUriGenerator +import foundation.e.apps.data.install.download.data.DownloadProgress +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager import foundation.e.apps.data.login.core.AuthObject import foundation.e.apps.data.login.exceptions.GPlayLoginException import foundation.e.apps.data.login.state.LoginState +import foundation.e.apps.data.utils.isValid import foundation.e.apps.databinding.FragmentApplicationBinding import foundation.e.apps.domain.ValidateAppAgeLimitUseCase.Companion.KEY_ANTI_FEATURES_NSFW -import foundation.e.apps.install.download.data.DownloadProgress -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager import foundation.e.apps.ui.AppInfoFetchViewModel import foundation.e.apps.ui.MainActivity import foundation.e.apps.ui.MainActivityViewModel @@ -75,8 +77,6 @@ import foundation.e.apps.ui.application.ShareButtonVisibilityState.Visible import foundation.e.apps.ui.application.model.ApplicationScreenshotsRVAdapter import foundation.e.apps.ui.application.subFrags.ApplicationDialogFragment import foundation.e.apps.ui.parentFragment.TimeoutFragment -import foundation.e.apps.utils.ExodusUriGenerator -import foundation.e.apps.utils.isValid import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch 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 02327a2131e57bdd7def838451dddfa61d119809..d656f87c2abbf45aadd2a974957f3cb9d11735e2 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 @@ -31,18 +31,18 @@ import foundation.e.apps.data.application.data.shareUri import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus import foundation.e.apps.data.install.AppManagerWrapper +import foundation.e.apps.data.install.download.data.DownloadProgress +import foundation.e.apps.data.install.download.data.DownloadProgressLD import foundation.e.apps.data.install.models.AppInstall import foundation.e.apps.data.login.core.AuthObject import foundation.e.apps.data.parentalcontrol.fdroid.FDroidAntiFeatureRepository import foundation.e.apps.data.playstore.PlayStoreRepository -import foundation.e.apps.install.download.data.DownloadProgress -import foundation.e.apps.install.download.data.DownloadProgressLD import foundation.e.apps.ui.application.ShareButtonVisibilityState.Hidden import foundation.e.apps.ui.application.ShareButtonVisibilityState.Visible import foundation.e.apps.ui.parentFragment.LoadingViewModel -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow 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 8be111cae78fd8e96c3ee32621459125cc531002..d59988a293d6b7b146ec949a8b2cc63ec740649b 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 @@ -35,12 +35,12 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.application.ApplicationInstaller import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.enums.Status +import foundation.e.apps.data.install.download.data.DownloadProgress +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager import foundation.e.apps.data.login.core.AuthObject import foundation.e.apps.data.login.exceptions.GPlayLoginException import foundation.e.apps.databinding.FragmentApplicationListBinding -import foundation.e.apps.install.download.data.DownloadProgress -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager import foundation.e.apps.ui.AppInfoFetchViewModel import foundation.e.apps.ui.AppProgressViewModel import foundation.e.apps.ui.MainActivityViewModel 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 4d02f72e86b28d8abacb060a725b534793f62171..a803cc4834f1ba4b43d29bb8c707134d1da53c33 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 @@ -45,20 +45,21 @@ import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.User +import foundation.e.apps.data.install.pkg.InstallerService import foundation.e.apps.data.login.state.LoginState import foundation.e.apps.databinding.ApplicationListItemBinding -import foundation.e.apps.install.pkg.InstallerService import foundation.e.apps.ui.AppInfoFetchViewModel import foundation.e.apps.ui.MainActivityViewModel import foundation.e.apps.ui.PrivacyInfoViewModel import foundation.e.apps.ui.applicationlist.diffUtils.ConciseAppDiffUtils import foundation.e.apps.ui.search.SearchFragmentDirections import foundation.e.apps.ui.updates.UpdatesFragmentDirections -import foundation.e.apps.utils.disableInstallButton -import foundation.e.apps.utils.enableInstallButton +import foundation.e.apps.ui.utils.disableInstallButton +import foundation.e.apps.ui.utils.enableInstallButton import timber.log.Timber import javax.inject.Singleton import foundation.e.elib.R as eR + @Singleton class ApplicationListRVAdapter( private val applicationInstaller: ApplicationInstaller, diff --git a/app/src/main/java/foundation/e/apps/ui/compose/state/InstallButtonStateInput.kt b/app/src/main/java/foundation/e/apps/ui/compose/state/InstallButtonStateInput.kt index 9321c0137559ef908da3dbcacebf297badf6dd9c..4c4f4727da60a9f6b9b5f46dde7c1449b68281fd 100644 --- a/app/src/main/java/foundation/e/apps/ui/compose/state/InstallButtonStateInput.kt +++ b/app/src/main/java/foundation/e/apps/ui/compose/state/InstallButtonStateInput.kt @@ -21,7 +21,7 @@ package foundation.e.apps.ui.compose.state import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.User -import foundation.e.apps.install.pkg.InstallerService +import foundation.e.apps.data.install.pkg.InstallerService data class InstallationFault( val isFaulty: Boolean, diff --git a/app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusReconciler.kt b/app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusReconciler.kt index 97d84312552c5e43c3685df0d139b74e2bee49e1..4546e9023885a61413b21a292a2aef58d4c80453 100644 --- a/app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusReconciler.kt +++ b/app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusReconciler.kt @@ -21,8 +21,8 @@ package foundation.e.apps.ui.compose.state import foundation.e.apps.data.application.ApplicationRepository import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.install.AppManagerWrapper +import foundation.e.apps.data.install.download.data.DownloadProgress import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.install.download.data.DownloadProgress import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusStream.kt b/app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusStream.kt index 797938acf8fed9d7f6fe8904f87f88636dcfb959..f120780b8253e25304be639bee7f6fa5a45ab91d 100644 --- a/app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusStream.kt +++ b/app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusStream.kt @@ -32,8 +32,8 @@ package foundation.e.apps.ui.compose.state import androidx.lifecycle.asFlow import foundation.e.apps.data.install.AppManagerWrapper import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay diff --git a/app/src/main/java/foundation/e/apps/ui/di/UiSystemModule.kt b/app/src/main/java/foundation/e/apps/ui/di/UiSystemModule.kt new file mode 100644 index 0000000000000000000000000000000000000000..1f415b511490260963272c81c1484eb546e72072 --- /dev/null +++ b/app/src/main/java/foundation/e/apps/ui/di/UiSystemModule.kt @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2026 e Foundation + * + * 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.ui.di + +import android.content.ClipboardManager +import android.content.Context +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object UiSystemModule { + @Singleton + @Provides + fun provideClipboardManager(@ApplicationContext context: Context): ClipboardManager { + return context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + } +} diff --git a/app/src/main/java/foundation/e/apps/utils/Extensions.kt b/app/src/main/java/foundation/e/apps/ui/extensions/ContextDialogExtensions.kt similarity index 53% rename from app/src/main/java/foundation/e/apps/utils/Extensions.kt rename to app/src/main/java/foundation/e/apps/ui/extensions/ContextDialogExtensions.kt index 07f652e9cac50eaa129638380a6fb6e88dc4852d..5a1b7b1c7f63164625c5acace32583810f9fbb2d 100644 --- a/app/src/main/java/foundation/e/apps/utils/Extensions.kt +++ b/app/src/main/java/foundation/e/apps/ui/extensions/ContextDialogExtensions.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 MURENA SAS + * Copyright (C) 2026 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 @@ -16,22 +16,11 @@ * */ -package foundation.e.apps.utils +package foundation.e.apps.ui.extensions import android.content.Context -import android.net.ConnectivityManager -import android.net.NetworkCapabilities import androidx.appcompat.app.AlertDialog -import com.aurora.gplayapi.data.models.ContentRating import foundation.e.apps.R -import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale - -fun Date.getFormattedString(format: String, locale: Locale = Locale.getDefault()): String { - val dateFormat = SimpleDateFormat(format, locale) - return dateFormat.format(this) -} fun Context.showGoogleSignInAlertDialog( onYesClickListener: () -> Unit, @@ -44,22 +33,3 @@ fun Context.showGoogleSignInAlertDialog( .setNegativeButton(R.string.cancel) { _, _ -> onCancelClickListener() } .show() } - -fun Context.isNetworkAvailable(): Boolean { - val connectivityManager = - this.getSystemService(ConnectivityManager::class.java) - - val capabilities = - connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork) - ?: return false - - if (capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && - capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) - ) { - return true - } - - return false -} - -fun ContentRating.isValid() = title.isNotBlank() && artwork.url.isNotBlank() 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 b43f23bcdf5a685ae69a364bba1fe503543c0d96..33acdd009431521f4571239daa85304b1094f0e6 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 @@ -29,9 +29,9 @@ import androidx.recyclerview.widget.RecyclerView import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.R import foundation.e.apps.data.enums.Status +import foundation.e.apps.data.install.download.data.DownloadProgress import foundation.e.apps.databinding.FragmentHomeBinding import foundation.e.apps.domain.application.ApplicationDomain -import foundation.e.apps.install.download.data.DownloadProgress import foundation.e.apps.ui.AppInfoFetchViewModel import foundation.e.apps.ui.AppProgressViewModel import foundation.e.apps.ui.MainActivityViewModel diff --git a/app/src/main/java/foundation/e/apps/ui/home/model/HomeChildRVAdapter.kt b/app/src/main/java/foundation/e/apps/ui/home/model/HomeChildRVAdapter.kt index 0ead5aac1aa7a745f842cc9aea2bf2ea2b8fa430..3c527119f75c82904dbaeb9f1f5b192b145956db 100644 --- a/app/src/main/java/foundation/e/apps/ui/home/model/HomeChildRVAdapter.kt +++ b/app/src/main/java/foundation/e/apps/ui/home/model/HomeChildRVAdapter.kt @@ -40,8 +40,8 @@ import foundation.e.apps.domain.application.ApplicationDomain import foundation.e.apps.ui.AppInfoFetchViewModel import foundation.e.apps.ui.MainActivityViewModel import foundation.e.apps.ui.home.HomeFragmentDirections -import foundation.e.apps.utils.disableInstallButton -import foundation.e.apps.utils.enableInstallButton +import foundation.e.apps.ui.utils.disableInstallButton +import foundation.e.apps.ui.utils.enableInstallButton class HomeChildRVAdapter( private val appInfoFetchViewModel: AppInfoFetchViewModel, diff --git a/app/src/main/java/foundation/e/apps/ui/navigation/NavControllerExtensions.kt b/app/src/main/java/foundation/e/apps/ui/navigation/NavControllerExtensions.kt new file mode 100644 index 0000000000000000000000000000000000000000..20a568329abe701cab8204a7cc32a5bd086ffe9a --- /dev/null +++ b/app/src/main/java/foundation/e/apps/ui/navigation/NavControllerExtensions.kt @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2026 e Foundation + * + * 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.ui.navigation + +import android.os.Bundle +import androidx.annotation.IdRes +import androidx.navigation.NavController +import timber.log.Timber + +fun NavController.safeNavigate( + @IdRes currentDestinationId: Int, + @IdRes id: Int, + args: Bundle? = null +) { + try { + if (currentDestinationId == currentDestination?.id) { + navigate(id, args) + } + } catch (e: Exception) { + Timber.w(e, "Navigation to destination $id failed") + } +} 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 cd0ece6ea3456d2091c1fbd52e0fb392a0e352e8..8082111d7863b1b8c303fb7fb7b49bec3eebf1b5 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 @@ -44,17 +44,17 @@ import foundation.e.apps.R import foundation.e.apps.data.application.ApplicationInstaller import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.enums.Status +import foundation.e.apps.data.install.download.data.DownloadProgress import foundation.e.apps.data.install.models.AppInstall +import foundation.e.apps.data.install.pkg.PwaManager +import foundation.e.apps.data.system.isNetworkAvailable import foundation.e.apps.databinding.FragmentSearchBinding -import foundation.e.apps.install.download.data.DownloadProgress -import foundation.e.apps.install.pkg.PwaManager import foundation.e.apps.ui.AppInfoFetchViewModel import foundation.e.apps.ui.AppProgressViewModel import foundation.e.apps.ui.MainActivityViewModel import foundation.e.apps.ui.PrivacyInfoViewModel import foundation.e.apps.ui.application.subFrags.ApplicationDialogFragment import foundation.e.apps.ui.applicationlist.ApplicationListRVAdapter -import foundation.e.apps.utils.isNetworkAvailable import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import java.util.Locale diff --git a/app/src/main/java/foundation/e/apps/ui/search/v2/SearchFragmentV2.kt b/app/src/main/java/foundation/e/apps/ui/search/v2/SearchFragmentV2.kt index ca59845a25dab878e32873e580fb156d4321e4ca..c2081b38a1f105d10e3a45e51fde73a099fcd5e4 100644 --- a/app/src/main/java/foundation/e/apps/ui/search/v2/SearchFragmentV2.kt +++ b/app/src/main/java/foundation/e/apps/ui/search/v2/SearchFragmentV2.kt @@ -42,7 +42,7 @@ import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.User import foundation.e.apps.data.enums.isInitialized import foundation.e.apps.data.enums.isUnFiltered -import foundation.e.apps.install.download.data.DownloadProgress +import foundation.e.apps.data.install.download.data.DownloadProgress import foundation.e.apps.ui.AppInfoFetchViewModel import foundation.e.apps.ui.AppProgressViewModel import foundation.e.apps.ui.MainActivityViewModel diff --git a/app/src/main/java/foundation/e/apps/ui/search/v2/SearchViewModelV2.kt b/app/src/main/java/foundation/e/apps/ui/search/v2/SearchViewModelV2.kt index 3de94ff524859aeb89a4c7533c66430abe282cf5..b88910b5af2a9786df448d6933f6ad2a13084303 100644 --- a/app/src/main/java/foundation/e/apps/ui/search/v2/SearchViewModelV2.kt +++ b/app/src/main/java/foundation/e/apps/ui/search/v2/SearchViewModelV2.kt @@ -29,13 +29,13 @@ import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.cleanapk.CleanApkRetrofit import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status +import foundation.e.apps.data.install.download.data.DownloadProgress import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.domain.search.CleanApkSearchPagingUseCase import foundation.e.apps.domain.search.FetchSearchSuggestionsUseCase import foundation.e.apps.domain.search.PlayStoreSearchPagingUseCase import foundation.e.apps.domain.search.PrepareSearchSubmissionUseCase import foundation.e.apps.domain.search.SearchRequest -import foundation.e.apps.install.download.data.DownloadProgress import foundation.e.apps.ui.compose.state.InstallStatusReconciler import foundation.e.apps.ui.compose.state.InstallStatusStream import foundation.e.apps.ui.compose.state.StatusSnapshot 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 a6de6b630dc7672eaf8a98698c802d96cb6051b4..12f85b222bdd714d3710514123469d78536bae75 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 @@ -45,12 +45,12 @@ import foundation.e.apps.data.Stores import foundation.e.apps.data.application.UpdatesDao import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.User +import foundation.e.apps.data.install.updates.UpdatesWorkManager import foundation.e.apps.data.preference.AppLoungeDataStore import foundation.e.apps.data.preference.getSync +import foundation.e.apps.data.system.SystemInfoProvider import foundation.e.apps.databinding.CustomPreferenceBinding -import foundation.e.apps.install.updates.UpdatesWorkManager import foundation.e.apps.ui.LoginViewModel -import foundation.e.apps.utils.SystemInfoProvider import timber.log.Timber import java.util.Locale import javax.inject.Inject 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 cc83bca5630d9468f28c03419f25d8f3a733c47d..1ebb0bb6f220a1576daa2c5f0af2c52893b830e1 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 @@ -23,9 +23,9 @@ import android.content.Context import android.content.Intent import com.aurora.gplayapi.data.models.AuthData import dagger.hilt.android.AndroidEntryPoint +import foundation.e.apps.data.di.qualifiers.IoCoroutineScope import foundation.e.apps.data.preference.AppLoungeDataStore import foundation.e.apps.data.preference.getSync -import foundation.e.apps.di.qualifiers.IoCoroutineScope import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/app/src/main/java/foundation/e/apps/ui/setup/signin/SignInFragment.kt b/app/src/main/java/foundation/e/apps/ui/setup/signin/SignInFragment.kt index 9febd670642b3a791476b30e5e2c4ee78a75d0f3..67e247befdc7b06fc629b86811977ce313f4bbc8 100644 --- a/app/src/main/java/foundation/e/apps/ui/setup/signin/SignInFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/setup/signin/SignInFragment.kt @@ -13,9 +13,9 @@ import foundation.e.apps.R import foundation.e.apps.data.login.microg.MicrogCertUtil import foundation.e.apps.data.login.microg.MicrogSupportChecker import foundation.e.apps.databinding.FragmentSignInBinding -import foundation.e.apps.di.CommonUtilsModule.safeNavigate import foundation.e.apps.ui.LoginViewModel -import foundation.e.apps.utils.showGoogleSignInAlertDialog +import foundation.e.apps.ui.extensions.showGoogleSignInAlertDialog +import foundation.e.apps.ui.navigation.safeNavigate @AndroidEntryPoint class SignInFragment : Fragment(R.layout.fragment_sign_in) { 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 1bab86ff5ae3ae40205ee04c6239fff1ea13b996..f615b81499e8a19a29fa78e640e4d6ed207cdea3 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 @@ -32,8 +32,8 @@ import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.R import foundation.e.apps.data.playstore.utils.AC2DMUtil import foundation.e.apps.databinding.FragmentGoogleSigninBinding -import foundation.e.apps.di.CommonUtilsModule.safeNavigate import foundation.e.apps.ui.LoginViewModel +import foundation.e.apps.ui.navigation.safeNavigate @AndroidEntryPoint class GoogleSignInFragment : Fragment(R.layout.fragment_google_signin) { 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 87ad47e7520af3a181776a5f0dfb2592f511cba1..fb22fe8573826e9d06a6b13f66554ff7b5571481 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 @@ -41,26 +41,26 @@ import foundation.e.apps.data.application.ApplicationInstaller import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Status +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus +import foundation.e.apps.data.install.download.data.DownloadProgress import foundation.e.apps.data.install.models.AppInstall +import foundation.e.apps.data.install.pkg.PwaManager +import foundation.e.apps.data.install.updates.UpdatesWorkManager +import foundation.e.apps.data.install.workmanager.InstallWorkManager import foundation.e.apps.data.login.core.AuthObject import foundation.e.apps.data.login.exceptions.GPlayException import foundation.e.apps.data.login.exceptions.GPlayLoginException import foundation.e.apps.databinding.FragmentUpdatesBinding -import foundation.e.apps.di.CommonUtilsModule.safeNavigate -import foundation.e.apps.install.download.data.DownloadProgress -import foundation.e.apps.install.pkg.PwaManager -import foundation.e.apps.install.updates.UpdatesWorkManager -import foundation.e.apps.install.workmanager.InstallWorkManager import foundation.e.apps.ui.AppInfoFetchViewModel import foundation.e.apps.ui.AppProgressViewModel import foundation.e.apps.ui.MainActivityViewModel import foundation.e.apps.ui.PrivacyInfoViewModel import foundation.e.apps.ui.application.subFrags.ApplicationDialogFragment import foundation.e.apps.ui.applicationlist.ApplicationListRVAdapter +import foundation.e.apps.ui.navigation.safeNavigate import foundation.e.apps.ui.parentFragment.TimeoutFragment -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus -import foundation.e.apps.utils.toast +import foundation.e.apps.ui.utils.toast import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filter import kotlinx.coroutines.launch diff --git a/app/src/main/java/foundation/e/apps/utils/MaterialButtonUtils.kt b/app/src/main/java/foundation/e/apps/ui/utils/MaterialButtonUtils.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/utils/MaterialButtonUtils.kt rename to app/src/main/java/foundation/e/apps/ui/utils/MaterialButtonUtils.kt index 45a1ec1e1c09ee27aaaa7014452f1506f835e0a3..e7bdad247b247d2d87eeade87358f0210135c21e 100644 --- a/app/src/main/java/foundation/e/apps/utils/MaterialButtonUtils.kt +++ b/app/src/main/java/foundation/e/apps/ui/utils/MaterialButtonUtils.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.utils +package foundation.e.apps.ui.utils import androidx.core.content.ContextCompat import com.google.android.material.button.MaterialButton diff --git a/app/src/main/java/foundation/e/apps/utils/ViewUtils.kt b/app/src/main/java/foundation/e/apps/ui/utils/ViewUtils.kt similarity index 93% rename from app/src/main/java/foundation/e/apps/utils/ViewUtils.kt rename to app/src/main/java/foundation/e/apps/ui/utils/ViewUtils.kt index d483285e1108fdfbcfed514a4bd9538582c8f090..68733841419be0622aaadc7670fb928e07f093dd 100644 --- a/app/src/main/java/foundation/e/apps/utils/ViewUtils.kt +++ b/app/src/main/java/foundation/e/apps/ui/utils/ViewUtils.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.utils +package foundation.e.apps.ui.utils import android.content.Context import android.content.res.Resources diff --git a/app/src/test/java/foundation/e/apps/FakeAppLoungePackageManager.kt b/app/src/test/java/foundation/e/apps/FakeAppLoungePackageManager.kt index 9b2b69fd29ac49712f3effdb85af3a49a3f0094f..37da4a13ed254990d73590321ab3cff97f466aa0 100644 --- a/app/src/test/java/foundation/e/apps/FakeAppLoungePackageManager.kt +++ b/app/src/test/java/foundation/e/apps/FakeAppLoungePackageManager.kt @@ -23,7 +23,7 @@ import android.content.pm.ApplicationInfo import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.updates.UpdatesManagerImpl.Companion.PACKAGE_NAME_ANDROID_VENDING import foundation.e.apps.data.updates.UpdatesManagerImpl.Companion.PACKAGE_NAME_F_DROID -import foundation.e.apps.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.AppLoungePackageManager open class FakeAppLoungePackageManager( context: Context, diff --git a/app/src/test/java/foundation/e/apps/apps/AppsApiTest.kt b/app/src/test/java/foundation/e/apps/apps/AppsApiTest.kt index 92f2dccfa3b9559d002da02037ac78eab6ee4228..78d836962374812a007e622bfdd719655feb6155 100644 --- a/app/src/test/java/foundation/e/apps/apps/AppsApiTest.kt +++ b/app/src/test/java/foundation/e/apps/apps/AppsApiTest.kt @@ -32,8 +32,8 @@ import foundation.e.apps.data.enums.FilterLevel import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status import foundation.e.apps.data.playstore.PlayStoreRepository -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager import foundation.e.apps.util.MainCoroutineRule import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest diff --git a/app/src/test/java/foundation/e/apps/category/CategoryApiTest.kt b/app/src/test/java/foundation/e/apps/category/CategoryApiTest.kt index 6631cc1e48c05e5bf9a57ee2da74aeead9cb42cb..0789c6d35c414eab1c0906a4bf47f80b8584edd8 100644 --- a/app/src/test/java/foundation/e/apps/category/CategoryApiTest.kt +++ b/app/src/test/java/foundation/e/apps/category/CategoryApiTest.kt @@ -37,8 +37,8 @@ import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Source import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.AppLoungePreference -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager import foundation.e.apps.util.MainCoroutineRule import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest diff --git a/app/src/test/java/foundation/e/apps/data/application/ApplicationDataManagerTest.kt b/app/src/test/java/foundation/e/apps/data/application/ApplicationDataManagerTest.kt index 2b3b32831f731ceba05fd074c22fff1e3c2f70d0..3df0b22f5f63598a1ccbda493252538186dba6a0 100644 --- a/app/src/test/java/foundation/e/apps/data/application/ApplicationDataManagerTest.kt +++ b/app/src/test/java/foundation/e/apps/data/application/ApplicationDataManagerTest.kt @@ -6,7 +6,7 @@ import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.enums.FilterLevel import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status -import foundation.e.apps.install.pkg.PwaManager +import foundation.e.apps.data.install.pkg.PwaManager import foundation.e.apps.data.application.utils.AppVisibilityResolver import io.mockk.coEvery import io.mockk.every diff --git a/app/src/test/java/foundation/e/apps/data/cleanapk/CleanApkSearchHelperTest.kt b/app/src/test/java/foundation/e/apps/data/cleanapk/CleanApkSearchHelperTest.kt index 6513bf4a6c1dda160b10023357161793d4d2ee7b..c8138ace57a2c0c703904817a168f4f784df52e1 100644 --- a/app/src/test/java/foundation/e/apps/data/cleanapk/CleanApkSearchHelperTest.kt +++ b/app/src/test/java/foundation/e/apps/data/cleanapk/CleanApkSearchHelperTest.kt @@ -42,7 +42,7 @@ import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.cleanapk.repositories.NUMBER_OF_ITEMS import foundation.e.apps.data.cleanapk.repositories.NUMBER_OF_PAGES import foundation.e.apps.data.enums.Source -import foundation.e.apps.utils.SystemInfoProvider +import foundation.e.apps.data.system.SystemInfoProvider class CleanApkSearchHelperTest { diff --git a/app/src/test/java/foundation/e/apps/data/cleanapk/repositories/CleanApkAppsRepositoryTest.kt b/app/src/test/java/foundation/e/apps/data/cleanapk/repositories/CleanApkAppsRepositoryTest.kt index f78a8da277a996b93097dcb53a36a9de91c4a063..927521f1c35ffd1341b603465c36d3cc0ec16a32 100644 --- a/app/src/test/java/foundation/e/apps/data/cleanapk/repositories/CleanApkAppsRepositoryTest.kt +++ b/app/src/test/java/foundation/e/apps/data/cleanapk/repositories/CleanApkAppsRepositoryTest.kt @@ -36,7 +36,7 @@ import foundation.e.apps.data.cleanapk.data.home.CleanApkHome import foundation.e.apps.data.cleanapk.data.home.HomeScreenResponse import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.enums.Source -import foundation.e.apps.utils.SystemInfoProvider +import foundation.e.apps.data.system.SystemInfoProvider import io.mockk.coEvery import io.mockk.coVerify import io.mockk.every diff --git a/app/src/test/java/foundation/e/apps/di/network/InterceptorModuleTest.kt b/app/src/test/java/foundation/e/apps/data/di/network/InterceptorModuleTest.kt similarity index 98% rename from app/src/test/java/foundation/e/apps/di/network/InterceptorModuleTest.kt rename to app/src/test/java/foundation/e/apps/data/di/network/InterceptorModuleTest.kt index 929874288c5477fdb9bf7f11dace5c242e7ca23e..5409e9a9a1cbcc6e7298bf19cd20d2d9f76267ea 100644 --- a/app/src/test/java/foundation/e/apps/di/network/InterceptorModuleTest.kt +++ b/app/src/test/java/foundation/e/apps/data/di/network/InterceptorModuleTest.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.di.network +package foundation.e.apps.data.di.network import junit.framework.TestCase.assertEquals import okhttp3.Interceptor diff --git a/app/src/test/java/foundation/e/apps/utils/eventBus/AppEventTest.kt b/app/src/test/java/foundation/e/apps/data/event/AppEventTest.kt similarity index 96% rename from app/src/test/java/foundation/e/apps/utils/eventBus/AppEventTest.kt rename to app/src/test/java/foundation/e/apps/data/event/AppEventTest.kt index eaf1529b4189f4934ca4030a26739ff304e8f563..4f7c0ba385dabbed595ee0423b767fe7d417b2ec 100644 --- a/app/src/test/java/foundation/e/apps/utils/eventBus/AppEventTest.kt +++ b/app/src/test/java/foundation/e/apps/data/event/AppEventTest.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.utils.eventBus +package foundation.e.apps.data.event import com.google.common.truth.Truth.assertThat import foundation.e.apps.data.enums.ResultStatus diff --git a/app/src/test/java/foundation/e/apps/utils/ExodusUriGeneratorTest.kt b/app/src/test/java/foundation/e/apps/data/exodus/ExodusUriGeneratorTest.kt similarity index 96% rename from app/src/test/java/foundation/e/apps/utils/ExodusUriGeneratorTest.kt rename to app/src/test/java/foundation/e/apps/data/exodus/ExodusUriGeneratorTest.kt index 74351f1cfe5ded48c38c75615e35036140042124..3e1263d9d45eec3f8ecb7a4bc53c8f0a6be6a254 100644 --- a/app/src/test/java/foundation/e/apps/utils/ExodusUriGeneratorTest.kt +++ b/app/src/test/java/foundation/e/apps/data/exodus/ExodusUriGeneratorTest.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.utils +package foundation.e.apps.data.exodus import com.google.common.truth.Truth.assertThat import java.util.Locale diff --git a/app/src/test/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepositoryTest.kt b/app/src/test/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepositoryTest.kt index 5910223622d3ebecd811b8c098dcdec00339cfdc..43443a9a9b29d7494c7a3a351449b59d5c6e5936 100644 --- a/app/src/test/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepositoryTest.kt +++ b/app/src/test/java/foundation/e/apps/data/gitlab/SystemAppsUpdatesRepositoryTest.kt @@ -20,7 +20,7 @@ package foundation.e.apps.data.gitlab import android.content.Context import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.gitlab.models.SystemAppProject -import foundation.e.apps.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.AppLoungePackageManager import io.mockk.coEvery import io.mockk.coVerify import io.mockk.mockk diff --git a/app/src/test/java/foundation/e/apps/data/install/AppManagerWrapperProgressTest.kt b/app/src/test/java/foundation/e/apps/data/install/AppManagerWrapperProgressTest.kt index 071aeffb826fa0f3819f32c7f3bce6029cb9d66b..277cb7d3bab325ad1711554da5b997d6c0156176 100644 --- a/app/src/test/java/foundation/e/apps/data/install/AppManagerWrapperProgressTest.kt +++ b/app/src/test/java/foundation/e/apps/data/install/AppManagerWrapperProgressTest.kt @@ -20,7 +20,7 @@ package foundation.e.apps.data.install import foundation.e.apps.data.enums.Status import foundation.e.apps.data.fdroid.FDroidRepository import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.install.download.data.DownloadProgress +import foundation.e.apps.data.install.download.data.DownloadProgress import io.mockk.mockk import kotlinx.coroutines.test.runTest import org.junit.Assert.assertEquals diff --git a/app/src/test/java/foundation/e/apps/install/download/data/DownloadProgressLDTest.kt b/app/src/test/java/foundation/e/apps/data/install/download/data/DownloadProgressLDTest.kt similarity index 97% rename from app/src/test/java/foundation/e/apps/install/download/data/DownloadProgressLDTest.kt rename to app/src/test/java/foundation/e/apps/data/install/download/data/DownloadProgressLDTest.kt index 5ae4d24c2163faf12d603d82b4b99a1e1abecca3..f11379d76086a97607807c67c3f3c0c71d209756 100644 --- a/app/src/test/java/foundation/e/apps/install/download/data/DownloadProgressLDTest.kt +++ b/app/src/test/java/foundation/e/apps/data/install/download/data/DownloadProgressLDTest.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.install.download.data +package foundation.e.apps.data.install.download.data import android.app.DownloadManager import android.database.Cursor diff --git a/app/src/test/java/foundation/e/apps/install/pkg/AppLoungePackageManagerTest.kt b/app/src/test/java/foundation/e/apps/data/install/pkg/AppLoungePackageManagerTest.kt similarity index 98% rename from app/src/test/java/foundation/e/apps/install/pkg/AppLoungePackageManagerTest.kt rename to app/src/test/java/foundation/e/apps/data/install/pkg/AppLoungePackageManagerTest.kt index 4e0bd6c5c43f411e4cd8ce45b0ba804401a25607..ed5460fe790a46a4d056578eea1634978839450a 100644 --- a/app/src/test/java/foundation/e/apps/install/pkg/AppLoungePackageManagerTest.kt +++ b/app/src/test/java/foundation/e/apps/data/install/pkg/AppLoungePackageManagerTest.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.pkg +package foundation.e.apps.data.install.pkg import android.content.Context import android.content.pm.PackageInfo diff --git a/app/src/test/java/foundation/e/apps/install/pkg/PwaManagerTest.kt b/app/src/test/java/foundation/e/apps/data/install/pkg/PwaManagerTest.kt similarity index 98% rename from app/src/test/java/foundation/e/apps/install/pkg/PwaManagerTest.kt rename to app/src/test/java/foundation/e/apps/data/install/pkg/PwaManagerTest.kt index 1f7e799f7c0c5f3b71dc9be0731b49a9e9e1b554..71a4485119267c426eb29ef5c51073ab1785f8b3 100644 --- a/app/src/test/java/foundation/e/apps/install/pkg/PwaManagerTest.kt +++ b/app/src/test/java/foundation/e/apps/data/install/pkg/PwaManagerTest.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.install.pkg +package foundation.e.apps.data.install.pkg import android.content.ContentProvider import android.content.ContentValues diff --git a/app/src/test/java/foundation/e/apps/install/updates/UpdatesWorkerTest.kt b/app/src/test/java/foundation/e/apps/data/install/updates/UpdatesWorkerTest.kt similarity index 99% rename from app/src/test/java/foundation/e/apps/install/updates/UpdatesWorkerTest.kt rename to app/src/test/java/foundation/e/apps/data/install/updates/UpdatesWorkerTest.kt index a73558bf2727ccbce77166956616f89f1a3ef361..962863037d67f8d86b81db25891659a5e5412f38 100644 --- a/app/src/test/java/foundation/e/apps/install/updates/UpdatesWorkerTest.kt +++ b/app/src/test/java/foundation/e/apps/data/install/updates/UpdatesWorkerTest.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.install.updates +package foundation.e.apps.data.install.updates import android.app.NotificationManager import android.content.Context @@ -52,7 +52,7 @@ import foundation.e.apps.data.login.repository.AuthenticatorRepository import foundation.e.apps.data.login.state.LoginState import foundation.e.apps.data.preference.AppLoungeDataStore import foundation.e.apps.data.updates.UpdatesManagerRepository -import foundation.e.apps.install.workmanager.AppInstallProcessor +import foundation.e.apps.data.install.workmanager.AppInstallProcessor import io.mockk.coEvery import io.mockk.coVerify import io.mockk.every diff --git a/app/src/test/java/foundation/e/apps/utils/MicrogSupportCheckerTest.kt b/app/src/test/java/foundation/e/apps/data/login/microg/MicrogSupportCheckerTest.kt similarity index 98% rename from app/src/test/java/foundation/e/apps/utils/MicrogSupportCheckerTest.kt rename to app/src/test/java/foundation/e/apps/data/login/microg/MicrogSupportCheckerTest.kt index 0744369cec3996e3a253b428b5b742cc12368899..cc1b48767b84b41ec68810c116918b659336f5a9 100644 --- a/app/src/test/java/foundation/e/apps/utils/MicrogSupportCheckerTest.kt +++ b/app/src/test/java/foundation/e/apps/data/login/microg/MicrogSupportCheckerTest.kt @@ -16,7 +16,7 @@ * */ -package foundation.e.apps.utils +package foundation.e.apps.data.login.microg import android.content.Context import android.content.pm.PackageInfo diff --git a/app/src/test/java/foundation/e/apps/data/playstore/PlayStoreRepositoryTest.kt b/app/src/test/java/foundation/e/apps/data/playstore/PlayStoreRepositoryTest.kt index d1616d8a5663f4534174c1b522d990a969c4679b..11113d0921653cd55f193cc348e27ac1b2486bcb 100644 --- a/app/src/test/java/foundation/e/apps/data/playstore/PlayStoreRepositoryTest.kt +++ b/app/src/test/java/foundation/e/apps/data/playstore/PlayStoreRepositoryTest.kt @@ -22,7 +22,7 @@ import foundation.e.apps.data.login.repository.AuthenticatorRepository import foundation.e.apps.data.playstore.utils.GPlayHttpClient import foundation.e.apps.data.playstore.utils.GplayHttpRequestException import foundation.e.apps.data.enums.Source -import foundation.e.apps.utils.SystemInfoProvider +import foundation.e.apps.data.system.SystemInfoProvider import io.mockk.every import io.mockk.mockk import io.mockk.mockkConstructor diff --git a/app/src/test/java/foundation/e/apps/utils/StorageComputerTest.kt b/app/src/test/java/foundation/e/apps/data/system/StorageComputerTest.kt similarity index 96% rename from app/src/test/java/foundation/e/apps/utils/StorageComputerTest.kt rename to app/src/test/java/foundation/e/apps/data/system/StorageComputerTest.kt index 849b3517ef96aaa9102d087b3bd7e85ffc7ae9f7..89d0da0fb638dce20293b7fa49617c50dd91ac0e 100644 --- a/app/src/test/java/foundation/e/apps/utils/StorageComputerTest.kt +++ b/app/src/test/java/foundation/e/apps/data/system/StorageComputerTest.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.utils +package foundation.e.apps.data.system import com.google.common.truth.Truth.assertThat import java.util.Locale diff --git a/app/src/test/java/foundation/e/apps/utils/SystemInfoProviderTest.kt b/app/src/test/java/foundation/e/apps/data/system/SystemInfoProviderTest.kt similarity index 94% rename from app/src/test/java/foundation/e/apps/utils/SystemInfoProviderTest.kt rename to app/src/test/java/foundation/e/apps/data/system/SystemInfoProviderTest.kt index 7a260ce2865e4f570458e764df070e54c9d6bf84..d29a5d05f3c167e7f3b396c89b49789cfbfa4165 100644 --- a/app/src/test/java/foundation/e/apps/utils/SystemInfoProviderTest.kt +++ b/app/src/test/java/foundation/e/apps/data/system/SystemInfoProviderTest.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.utils +package foundation.e.apps.data.system import com.google.common.truth.Truth.assertThat import org.json.JSONObject diff --git a/app/src/test/java/foundation/e/apps/utils/ExtensionsTest.kt b/app/src/test/java/foundation/e/apps/data/utils/ExtensionsTest.kt similarity index 91% rename from app/src/test/java/foundation/e/apps/utils/ExtensionsTest.kt rename to app/src/test/java/foundation/e/apps/data/utils/ExtensionsTest.kt index 2e94492eb3da2dd7a9b05448b072585c3a2b7a77..7662bcd17e2ae77fa6890afa7e3c14d33d868be4 100644 --- a/app/src/test/java/foundation/e/apps/utils/ExtensionsTest.kt +++ b/app/src/test/java/foundation/e/apps/data/utils/ExtensionsTest.kt @@ -1,4 +1,4 @@ -package foundation.e.apps.utils +package foundation.e.apps.data.utils import com.google.common.truth.Truth.assertThat import java.util.Date diff --git a/app/src/test/java/foundation/e/apps/domain/login/ReportFaultyTokenUseCaseTest.kt b/app/src/test/java/foundation/e/apps/domain/login/ReportFaultyTokenUseCaseTest.kt index f690fc2531e51b7122d9e6171acd95c9217d9ae8..3b8d567c1db5d50212e0be805a3595d13c8dbe62 100644 --- a/app/src/test/java/foundation/e/apps/domain/login/ReportFaultyTokenUseCaseTest.kt +++ b/app/src/test/java/foundation/e/apps/domain/login/ReportFaultyTokenUseCaseTest.kt @@ -6,7 +6,7 @@ import foundation.e.apps.data.enums.User import foundation.e.apps.data.login.core.AuthObject import foundation.e.apps.data.login.exceptions.GPlayValidationException import foundation.e.apps.data.ecloud.EcloudRepository -import foundation.e.apps.utils.SystemInfoProvider +import foundation.e.apps.data.system.SystemInfoProvider import io.mockk.coEvery import io.mockk.coVerify import io.mockk.mockk diff --git a/app/src/test/java/foundation/e/apps/exodus/PrivacyScoreRepositoryImplTest.kt b/app/src/test/java/foundation/e/apps/exodus/PrivacyScoreRepositoryImplTest.kt index fcd0aa5cf65e52b9799dc69b14b12ff3b976e40e..4d108c3dc4f43f7dd07274c6125609f2f91d952c 100644 --- a/app/src/test/java/foundation/e/apps/exodus/PrivacyScoreRepositoryImplTest.kt +++ b/app/src/test/java/foundation/e/apps/exodus/PrivacyScoreRepositoryImplTest.kt @@ -22,7 +22,6 @@ import foundation.e.apps.data.enums.Status import foundation.e.apps.data.exodus.repositories.PrivacyScoreRepositoryImpl import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.blockedApps.BlockedAppRepository -import foundation.e.apps.di.CommonUtilsModule import org.junit.Assert import org.junit.Before import org.junit.Test diff --git a/app/src/test/java/foundation/e/apps/fused/SearchRepositoryImplTest.kt b/app/src/test/java/foundation/e/apps/fused/SearchRepositoryImplTest.kt index 0f4a24cdc83524eee4f5e775c71202e4bfc32d32..38ef3b5a8082c78a577796fa5a7cd8a12b0bc51c 100644 --- a/app/src/test/java/foundation/e/apps/fused/SearchRepositoryImplTest.kt +++ b/app/src/test/java/foundation/e/apps/fused/SearchRepositoryImplTest.kt @@ -37,8 +37,8 @@ import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.AppLoungeDataStore -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager import foundation.e.apps.util.MainCoroutineRule import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest diff --git a/app/src/test/java/foundation/e/apps/fusedManager/AppManagerWrapperTest.kt b/app/src/test/java/foundation/e/apps/fusedManager/AppManagerWrapperTest.kt index fb77fcfce4cb48c54d54cfb54f06ae560566b8e8..9cf3b5152a49bab5afbe2571b00a998e250925e1 100644 --- a/app/src/test/java/foundation/e/apps/fusedManager/AppManagerWrapperTest.kt +++ b/app/src/test/java/foundation/e/apps/fusedManager/AppManagerWrapperTest.kt @@ -24,7 +24,7 @@ import foundation.e.apps.data.enums.Status import foundation.e.apps.data.fdroid.FDroidRepository import foundation.e.apps.data.install.AppManagerWrapper import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.install.workmanager.InstallWorkManager +import foundation.e.apps.data.install.workmanager.InstallWorkManager import foundation.e.apps.installProcessor.FakeAppInstallDAO import foundation.e.apps.util.MainCoroutineRule import io.mockk.every diff --git a/app/src/test/java/foundation/e/apps/gplay/GPlayHttpClientTest.kt b/app/src/test/java/foundation/e/apps/gplay/GPlayHttpClientTest.kt index 3bd77f11130c0f514838148f50aae1b201de44a5..a846fe5450123034c0c23a9df79b9517bbfafd25 100644 --- a/app/src/test/java/foundation/e/apps/gplay/GPlayHttpClientTest.kt +++ b/app/src/test/java/foundation/e/apps/gplay/GPlayHttpClientTest.kt @@ -24,9 +24,9 @@ import foundation.e.apps.data.playstore.utils.GPlayHttpClient import foundation.e.apps.data.playstore.utils.GplayHttpRequestException import foundation.e.apps.util.FakeCall import foundation.e.apps.util.MainCoroutineRule -import foundation.e.apps.utils.SystemInfoProvider -import foundation.e.apps.utils.eventBus.AppEvent -import foundation.e.apps.utils.eventBus.EventBus +import foundation.e.apps.data.system.SystemInfoProvider +import foundation.e.apps.data.event.AppEvent +import foundation.e.apps.data.event.EventBus import io.mockk.every import io.mockk.mockkObject import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt b/app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt index 67544b5c95ec0753d5e9e9fdabc8bbb067c146d6..ade2dc588663aea237a76593de4bf64f3c89f43b 100644 --- a/app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt +++ b/app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt @@ -35,10 +35,10 @@ import foundation.e.apps.data.install.models.AppInstall import foundation.e.apps.data.preference.AppLoungeDataStore import foundation.e.apps.domain.ValidateAppAgeLimitUseCase import foundation.e.apps.domain.model.ContentRatingValidity -import foundation.e.apps.install.AppInstallComponents -import foundation.e.apps.install.notification.StorageNotificationManager -import foundation.e.apps.install.workmanager.AppInstallProcessor -import foundation.e.apps.utils.StorageComputer +import foundation.e.apps.data.install.AppInstallComponents +import foundation.e.apps.data.install.notification.StorageNotificationManager +import foundation.e.apps.data.install.workmanager.AppInstallProcessor +import foundation.e.apps.data.system.StorageComputer import foundation.e.apps.util.MainCoroutineRule import io.mockk.coEvery import io.mockk.coVerify diff --git a/app/src/test/java/foundation/e/apps/ui/compose/state/InstallButtonStateMapperTest.kt b/app/src/test/java/foundation/e/apps/ui/compose/state/InstallButtonStateMapperTest.kt index 134a9bdeec74c01eb8cfd6831f74886a17e30cd1..9f3c7c5f1b3938330f4fc58fdffbfb0106a954dd 100644 --- a/app/src/test/java/foundation/e/apps/ui/compose/state/InstallButtonStateMapperTest.kt +++ b/app/src/test/java/foundation/e/apps/ui/compose/state/InstallButtonStateMapperTest.kt @@ -23,7 +23,7 @@ import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.User -import foundation.e.apps.install.pkg.InstallerService +import foundation.e.apps.data.install.pkg.InstallerService import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue diff --git a/app/src/test/java/foundation/e/apps/ui/compose/state/InstallStatusReconcilerTest.kt b/app/src/test/java/foundation/e/apps/ui/compose/state/InstallStatusReconcilerTest.kt index 1f37a9cfa8f45d95138eeb8fe6cd11a136653664..ed3a261a34541cc72127c649fcddd68059d30e55 100644 --- a/app/src/test/java/foundation/e/apps/ui/compose/state/InstallStatusReconcilerTest.kt +++ b/app/src/test/java/foundation/e/apps/ui/compose/state/InstallStatusReconcilerTest.kt @@ -22,7 +22,7 @@ import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.enums.Status import foundation.e.apps.data.install.AppManagerWrapper import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.install.download.data.DownloadProgress +import foundation.e.apps.data.install.download.data.DownloadProgress import io.mockk.coEvery import io.mockk.coVerify import io.mockk.every diff --git a/app/src/test/java/foundation/e/apps/ui/compose/state/InstallStatusStreamTest.kt b/app/src/test/java/foundation/e/apps/ui/compose/state/InstallStatusStreamTest.kt index d3d8d103828b732f86e0be27dbdadecbd3febb59..ab5a6fedc7c6cee74ecbc6791bd441438d2ecf10 100644 --- a/app/src/test/java/foundation/e/apps/ui/compose/state/InstallStatusStreamTest.kt +++ b/app/src/test/java/foundation/e/apps/ui/compose/state/InstallStatusStreamTest.kt @@ -22,8 +22,8 @@ import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.lifecycle.MutableLiveData import foundation.e.apps.data.install.AppManagerWrapper import foundation.e.apps.data.install.models.AppInstall -import foundation.e.apps.install.pkg.AppLoungePackageManager -import foundation.e.apps.install.pkg.PwaManager +import foundation.e.apps.data.install.pkg.AppLoungePackageManager +import foundation.e.apps.data.install.pkg.PwaManager import foundation.e.apps.util.MainCoroutineRule import io.mockk.every import io.mockk.mockk