diff options
author | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-09-12 06:17:39 +0000 |
---|---|---|
committer | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-09-12 06:17:39 +0000 |
commit | a38472602d259b6c265660bf3b0ba472f20c6a7f (patch) | |
tree | 59c58e58cfef0e370f39bd9c150e36c6dfcb50c0 | |
parent | 1a77e3924bc78eabca7b859ef62be30bbf2476ad (diff) | |
parent | 53f4a9ce311d612d43fa770cf7e8f8e98fbb43a0 (diff) | |
download | advanced-privacy-a38472602d259b6c265660bf3b0ba472f20c6a7f.tar.gz advanced-privacy-a38472602d259b6c265660bf3b0ba472f20c6a7f.tar.bz2 advanced-privacy-a38472602d259b6c265660bf3b0ba472f20c6a7f.zip |
Merge branch '2-privacymodules_to_clean_archi' into 'main'
2: organise module with clean archi, use Koin for injection.
See merge request e/os/advanced-privacy!144
87 files changed, 975 insertions, 1589 deletions
diff --git a/app/build.gradle b/app/build.gradle index af05ec0..5ce72f3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -140,7 +140,7 @@ android { } dependencies { - implementation project(':privacymodule-api') + implementation project(':core') standaloneImplementation project(':permissionsstandalone') eImplementation project(':permissionse') @@ -160,15 +160,13 @@ dependencies { libs.androidx.fragment.ktx, libs.androidx.lifecycle.runtime, libs.androidx.lifecycle.viewmodel, - libs.androidx.work.ktx, + + libs.bundles.koin, libs.google.material, libs.androidx.navigation.fragment, libs.androidx.navigation.ui, - libs.retrofit, - libs.retrofit.scalars, - libs.maplibre, libs.mpandroidcharts, diff --git a/app/src/main/java/foundation/e/advancedprivacy/AdvancedPrivacyApplication.kt b/app/src/main/java/foundation/e/advancedprivacy/AdvancedPrivacyApplication.kt index 9ce0c2b..0af2a0e 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/AdvancedPrivacyApplication.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/AdvancedPrivacyApplication.kt @@ -18,17 +18,64 @@ package foundation.e.advancedprivacy import android.app.Application +import android.content.Intent +import foundation.e.advancedprivacy.common.WarningDialog +import foundation.e.advancedprivacy.domain.usecases.FakeLocationStateUseCase +import foundation.e.advancedprivacy.domain.usecases.GetQuickPrivacyStateUseCase +import foundation.e.advancedprivacy.domain.usecases.IpScramblingStateUseCase +import foundation.e.advancedprivacy.domain.usecases.ShowFeaturesWarningUseCase +import foundation.e.advancedprivacy.domain.usecases.TrackersStateUseCase +import foundation.e.advancedprivacy.domain.usecases.TrackersStatisticsUseCase +import foundation.e.advancedprivacy.externalinterfaces.permissions.IPermissionsPrivacyModule +import foundation.e.advancedprivacy.trackers.services.DNSBlockerService +import foundation.e.advancedprivacy.trackers.services.UpdateTrackersWorker import foundation.e.lib.telemetry.Telemetry +import kotlinx.coroutines.CoroutineScope +import org.koin.android.ext.koin.androidContext +import org.koin.core.context.startKoin +import org.koin.java.KoinJavaComponent.get class AdvancedPrivacyApplication : Application() { - - // Initialize the dependency container. - val dependencyContainer: DependencyContainer by lazy { DependencyContainer(this) } - override fun onCreate() { super.onCreate() Telemetry.init(BuildConfig.SENTRY_DSN, this, true) - dependencyContainer.initBackgroundSingletons() + startKoin { + androidContext(this@AdvancedPrivacyApplication) + modules(appModule) + } + initBackgroundSingletons() + } + + private fun initBackgroundSingletons() { + UpdateTrackersWorker.periodicUpdate(this) + + WarningDialog.startListening( + get(ShowFeaturesWarningUseCase::class.java), + get(CoroutineScope::class.java), + this + ) + + Widget.startListening( + this, + get(GetQuickPrivacyStateUseCase::class.java), + get(TrackersStatisticsUseCase::class.java), + ) + + Notifications.startListening( + this, + get(GetQuickPrivacyStateUseCase::class.java), + get(IPermissionsPrivacyModule::class.java), + get(CoroutineScope::class.java), + ) + + get<IpScramblingStateUseCase>(IpScramblingStateUseCase::class.java) + get<FakeLocationStateUseCase>(FakeLocationStateUseCase::class.java) + get<TrackersStateUseCase>(TrackersStateUseCase::class.java) + + val intent = Intent(this, DNSBlockerService::class.java) + intent.action = DNSBlockerService.ACTION_START + intent.putExtra(DNSBlockerService.EXTRA_ENABLE_NOTIFICATION, false) + startService(intent) } } diff --git a/app/src/main/java/foundation/e/advancedprivacy/DependencyContainer.kt b/app/src/main/java/foundation/e/advancedprivacy/DependencyContainer.kt deleted file mode 100644 index f6f2038..0000000 --- a/app/src/main/java/foundation/e/advancedprivacy/DependencyContainer.kt +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (C) 2023 MURENA SAS - * Copyright (C) 2021 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 <https://www.gnu.org/licenses/>. - */ - -package foundation.e.advancedprivacy - -import android.app.Application -import android.content.Context -import android.os.Process -import androidx.lifecycle.DEFAULT_ARGS_KEY -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.viewmodel.CreationExtras -import foundation.e.advancedprivacy.common.WarningDialog -import foundation.e.advancedprivacy.data.repositories.AppListsRepository -import foundation.e.advancedprivacy.data.repositories.LocalStateRepository -import foundation.e.advancedprivacy.data.repositories.TrackersRepository -import foundation.e.advancedprivacy.domain.usecases.AppListUseCase -import foundation.e.advancedprivacy.domain.usecases.FakeLocationStateUseCase -import foundation.e.advancedprivacy.domain.usecases.GetQuickPrivacyStateUseCase -import foundation.e.advancedprivacy.domain.usecases.IpScramblingStateUseCase -import foundation.e.advancedprivacy.domain.usecases.ShowFeaturesWarningUseCase -import foundation.e.advancedprivacy.domain.usecases.TrackersStateUseCase -import foundation.e.advancedprivacy.domain.usecases.TrackersStatisticsUseCase -import foundation.e.advancedprivacy.dummy.CityDataSource |