summaryrefslogtreecommitdiff
path: root/app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt')
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt124
1 files changed, 124 insertions, 0 deletions
diff --git a/app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt b/app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt
new file mode 100644
index 0000000..534aa6b
--- /dev/null
+++ b/app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt
@@ -0,0 +1,124 @@
+package foundation.e.advancedprivacy
+
+import android.content.res.Resources
+import android.os.Process
+import foundation.e.advancedprivacy.core.coreModule
+import foundation.e.advancedprivacy.data.repositories.LocalStateRepository
+import foundation.e.advancedprivacy.domain.entities.ApplicationDescription
+import foundation.e.advancedprivacy.domain.entities.ProfileType
+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
+import foundation.e.advancedprivacy.externalinterfaces.permissions.IPermissionsPrivacyModule
+import foundation.e.advancedprivacy.fakelocation.fakelocationModule
+import foundation.e.advancedprivacy.features.dashboard.DashboardViewModel
+import foundation.e.advancedprivacy.features.internetprivacy.InternetPrivacyViewModel
+import foundation.e.advancedprivacy.features.location.FakeLocationViewModel
+import foundation.e.advancedprivacy.features.trackers.TrackersViewModel
+import foundation.e.advancedprivacy.features.trackers.apptrackers.AppTrackersViewModel
+import foundation.e.advancedprivacy.ipscrambler.ipScramblerModule
+import foundation.e.advancedprivacy.permissions.externalinterfaces.PermissionsPrivacyModule
+import foundation.e.advancedprivacy.trackers.trackersModule
+import org.koin.android.ext.koin.androidContext
+import org.koin.androidx.viewmodel.dsl.viewModel
+import org.koin.androidx.viewmodel.dsl.viewModelOf
+import org.koin.core.module.dsl.singleOf
+import org.koin.core.qualifier.named
+import org.koin.dsl.module
+
+val appModule = module {
+ includes(coreModule, trackersModule, fakelocationModule, ipScramblerModule)
+
+ factory<Resources> { androidContext().resources }
+ single {
+ LocalStateRepository(context = androidContext())
+ }
+
+ single<ApplicationDescription>(named("AdvancedPrivacy")) {
+ ApplicationDescription(
+ packageName = androidContext().packageName,
+ uid = Process.myUid(),
+ label = androidContext().resources.getString(R.string.app_name),
+ icon = null,
+ profileId = -1,
+ profileType = ProfileType.MAIN
+ )
+ }
+
+ single<ApplicationDescription>(named("DummySystemApp")) {
+ ApplicationDescription(
+ packageName = "foundation.e.dummysystemapp",
+ uid = -1,
+ label = androidContext().getString(R.string.dummy_system_app_label),
+ icon = androidContext().getDrawable(R.drawable.ic_e_app_logo),
+ profileId = -1,
+ profileType = ProfileType.MAIN
+ )
+ }
+
+ single<ApplicationDescription>(named("DummyCompatibilityApp")) {
+ ApplicationDescription(
+ packageName = "foundation.e.dummyappscompatibilityapp",
+ uid = -2,
+ label = androidContext().getString(R.string.dummy_apps_compatibility_app_label),
+ icon = androidContext().getDrawable(R.drawable.ic_apps_compatibility_components),
+ profileId = -1,
+ profileType = ProfileType.MAIN
+ )
+ }
+
+ single { CityDataSource }
+
+ singleOf(::AppListUseCase)
+ single {
+ FakeLocationStateUseCase(
+ fakeLocationModule = get(),
+ permissionsModule = get(),
+ localStateRepository = get(),
+ citiesRepository = get(),
+ appDesc = get(named("AdvancedPrivacy")),
+ appContext = androidContext(),
+ coroutineScope = get()
+ )
+ }
+
+ singleOf(::GetQuickPrivacyStateUseCase)
+ single {
+ IpScramblingStateUseCase(
+ ipScramblerModule = get(),
+ permissionsPrivacyModule = get(),
+ appDesc = get(named("AdvancedPrivacy")),
+ localStateRepository = get(),
+ appListsRepository = get(),
+ coroutineScope = get()
+ )
+ }
+ singleOf(::ShowFeaturesWarningUseCase)
+ singleOf(::TrackersStateUseCase)
+ singleOf(::TrackersStatisticsUseCase)
+
+ single<IPermissionsPrivacyModule> {
+ PermissionsPrivacyModule(context = androidContext())
+ }
+
+ viewModel { parameters ->
+ val appListUseCase: AppListUseCase = get()
+ val app = appListUseCase.getApp(parameters.get())
+
+ AppTrackersViewModel(
+ app = app,
+ trackersStateUseCase = get(),
+ trackersStatisticsUseCase = get(),
+ getQuickPrivacyStateUseCase = get()
+ )
+ }
+ viewModelOf(::TrackersViewModel)
+ viewModelOf(::FakeLocationViewModel)
+ viewModelOf(::InternetPrivacyViewModel)
+ viewModelOf(::DashboardViewModel)
+}