summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2023-09-12 06:17:39 +0000
committerGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2023-09-12 06:17:39 +0000
commita38472602d259b6c265660bf3b0ba472f20c6a7f (patch)
tree59c58e58cfef0e370f39bd9c150e36c6dfcb50c0
parent1a77e3924bc78eabca7b859ef62be30bbf2476ad (diff)
parent53f4a9ce311d612d43fa770cf7e8f8e98fbb43a0 (diff)
downloadadvanced-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
-rw-r--r--app/build.gradle8
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/AdvancedPrivacyApplication.kt57
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/DependencyContainer.kt210
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt124
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/Notifications.kt6
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/common/ToggleAppsAdapter.kt2
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/common/WarningDialog.kt5
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/data/repositories/LocalStateRepository.kt2
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/data/repositories/TrackersRepository.kt133
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/entities/AppWithCounts.kt1
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/usecases/AppListUseCase.kt2
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/usecases/FakeLocationStateUseCase.kt12
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/usecases/GetQuickPrivacyStateUseCase.kt4
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/usecases/IpScramblingStateUseCase.kt24
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/usecases/TrackersStateUseCase.kt61
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/usecases/TrackersStatisticsUseCase.kt115
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/usecases/UpdateWidgetUseCase.kt33
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardFragment.kt12
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/internetprivacy/InternetPrivacyFragment.kt12
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/internetprivacy/InternetPrivacyState.kt2
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/internetprivacy/InternetPrivacyViewModel.kt4
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationFragment.kt12
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersFragment.kt11
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/trackers/apptrackers/AppTrackersFragment.kt14
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/trackers/apptrackers/AppTrackersState.kt4
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/trackers/apptrackers/AppTrackersViewModel.kt4
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/trackers/apptrackers/ToggleTrackersAdapter.kt2
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/widget/WidgetCommandReceiver.kt11
-rw-r--r--core/.gitignore (renamed from privacymodule-api/.gitignore)0
-rw-r--r--core/build.gradle52
-rw-r--r--core/consumer-rules.pro (renamed from privacymodule-api/consumer-rules.pro)0
-rw-r--r--core/proguard-rules.pro (renamed from privacymodule-api/proguard-rules.pro)0
-rw-r--r--core/src/main/AndroidManifest.xml (renamed from privacymodule-api/src/main/AndroidManifest.xml)3
-rw-r--r--core/src/main/java/foundation/e/advancedprivacy/core/KoinModule.kt23
-rw-r--r--core/src/main/java/foundation/e/advancedprivacy/core/utils/CoroutinesUtils.kt45
-rw-r--r--core/src/main/java/foundation/e/advancedprivacy/data/repositories/AppListsRepository.kt (renamed from app/src/main/java/foundation/e/advancedprivacy/data/repositories/AppListsRepository.kt)29
-rw-r--r--core/src/main/java/foundation/e/advancedprivacy/domain/entities/AppOpModes.kt (renamed from privacymodule-api/src/main/java/foundation/e/privacymodules/permissions/data/AppOpModes.kt)2
-rw-r--r--core/src/main/java/foundation/e/advancedprivacy/domain/entities/ApplicationDescription.kt (renamed from privacymodule-api/src/main/java/foundation/e/privacymodules/permissions/data/ApplicationDescription.kt)2
-rw-r--r--core/src/main/java/foundation/e/advancedprivacy/domain/entities/PermissionDescription.kt (renamed from privacymodule-api/src/main/java/foundation/e/privacymodules/permissions/data/PermissionDescription.kt)2
-rw-r--r--core/src/main/java/foundation/e/advancedprivacy/externalinterfaces/permissions/APermissionsPrivacyModule.kt (renamed from privacymodule-api/src/main/java/foundation/e/privacymodules/permissions/APermissionsPrivacyModule.kt)10
-rw-r--r--core/src/main/java/foundation/e/advancedprivacy/externalinterfaces/permissions/IPermissionsPrivacyModule.kt (renamed from privacymodule-api/src/main/java/foundation/e/privacymodules/permissions/IPermissionsPrivacyModule.kt)11
-rw-r--r--fakelocation/build.gradle8
-rw-r--r--fakelocation/fakelocationdemo/build.gradle2
-rw-r--r--fakelocation/fakelocationdemo/src/main/java/foundation/e/privacymodules/fakelocationdemo/MainActivity.kt10
-rw-r--r--fakelocation/src/main/AndroidManifest.xml3
-rw-r--r--fakelocation/src/main/java/foundation/e/advancedprivacy/fakelocation/KoinModule.kt9
-rw-r--r--fakelocation/src/main/java/foundation/e/advancedprivacy/fakelocation/domain/usecases/FakeLocationModule.kt (renamed from fakelocation/src/main/java/foundation/e/privacymodules/fakelocation/FakeLocationModule.kt)11
-rw-r--r--fakelocation/src/main/java/foundation/e/advancedprivacy/fakelocation/services/FakeLocationService.kt (renamed from fakelocation/src/main/java/foundation/e/privacymodules/fakelocation/FakeLocationService.kt)3
-rw-r--r--fakelocation/src/main/java/foundation/e/privacymodules/fakelocation/IFakeLocationModule.kt41
-rw-r--r--gradle/libs.versions.toml5
-rw-r--r--ipscrambling/build.gradle1
m---------ipscrambling/orbotservice0
-rw-r--r--ipscrambling/src/main/AndroidManifest.xml2
-rw-r--r--ipscrambling/src/main/java/foundation/e/advancedprivacy/ipscrambler/IpScramblerModule.kt (renamed from ipscrambling/src/main/java/foundation/e/privacymodules/ipscrambler/IpScramblerModule.kt)41
-rw-r--r--ipscrambling/src/main/java/foundation/e/advancedprivacy/ipscrambler/KoinModule.kt8
-rw-r--r--ipscrambling/src/main/java/foundation/e/privacymodules/ipscrambler/IIpScramblerModule.kt54
-rw-r--r--permissionse/build.gradle2
-rw-r--r--permissionse/src/main/AndroidManifest.xml19
-rw-r--r--permissionse/src/main/java/foundation/e/advancedprivacy/externalinterfaces/permissions/PermissionsPrivacyModule.kt (renamed from permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt)11
-rw-r--r--permissionsstandalone/build.gradle2
-rw-r--r--permissionsstandalone/src/main/AndroidManifest.xml3
-rw-r--r--permissionsstandalone/src/main/java/foundation/e/advancedprivacy/permissions/externalinterfaces/PermissionsPrivacyModule.kt (renamed from permissionsstandalone/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt)7
-rw-r--r--privacymodule-api/build.gradle111
-rw-r--r--privacymodule-api/src/main/java/foundation/e/privacymodules/DependencyInjector.kt31
-rw-r--r--privacymodule-api/src/main/java/foundation/e/privacymodules/trackers/IDNSBlocker.kt26
-rw-r--r--settings.gradle4
-rw-r--r--trackers/build.gradle9
-rw-r--r--trackers/src/main/AndroidManifest.xml5
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/KoinModule.kt72
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/data/ETrackersResponse.kt10
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/data/RemoteTrackersListRepository.kt61
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/data/StatsDatabase.kt (renamed from trackers/src/main/java/foundation/e/privacymodules/trackers/data/StatsDatabase.kt)22
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/data/TrackersRepository.kt109
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/data/WhitelistRepository.kt (renamed from trackers/src/main/java/foundation/e/privacymodules/trackers/data/WhitelistRepository.kt)46
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/domain/entities/Tracker.kt (renamed from trackers/src/main/java/foundation/e/privacymodules/trackers/api/Tracker.kt)2
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/domain/usecases/DNSBlocker.kt (renamed from trackers/src/main/java/foundation/e/privacymodules/trackers/DNSBlockerRunnable.kt)68
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/domain/usecases/StatisticsUseCase.kt (renamed from trackers/src/main/java/foundation/e/privacymodules/trackers/data/StatsRepository.kt)57
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/domain/usecases/TrackersLogger.kt (renamed from trackers/src/main/java/foundation/e/privacymodules/trackers/TrackersLogger.kt)49
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/domain/usecases/UpdateTrackerListUseCase.kt29
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/services/DNSBlockerService.kt (renamed from trackers/src/main/java/foundation/e/privacymodules/trackers/DNSBlockerService.kt)45
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/services/ForegroundStarter.kt (renamed from trackers/src/main/java/foundation/e/privacymodules/trackers/ForegroundStarter.kt)2
-rw-r--r--trackers/src/main/java/foundation/e/advancedprivacy/trackers/services/UpdateTrackersWorker.kt (renamed from app/src/main/java/foundation/e/advancedprivacy/UpdateTrackersWorker.kt)9
-rw-r--r--trackers/src/main/java/foundation/e/privacymodules/trackers/api/BlockTrackersPrivacyModule.kt98
-rw-r--r--trackers/src/main/java/foundation/e/privacymodules/trackers/api/IBlockTrackersPrivacyModule.kt98
-rw-r--r--trackers/src/main/java/foundation/e/privacymodules/trackers/api/ITrackTrackersPrivacyModule.kt110
-rw-r--r--trackers/src/main/java/foundation/e/privacymodules/trackers/api/TrackTrackersPrivacyModule.kt126
-rw-r--r--trackers/src/main/java/foundation/e/privacymodules/trackers/data/TrackersRepository.kt57
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