diff options
Diffstat (limited to 'app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt')
-rw-r--r-- | app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt | 124 |
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) +} |