1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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)
}
|