diff options
| author | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-05-02 21:25:17 +0200 | 
|---|---|---|
| committer | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-05-02 22:00:35 +0200 | 
| commit | a8874167f663885f2d3371801cf03681576ac817 (patch) | |
| tree | 5be07b8768142efeade536d4135f2250c1ac9071 /app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt | |
| parent | a0ee04ea9dbc0802c828afdf660eb37dc6fa350f (diff) | |
| download | advanced-privacy-a8874167f663885f2d3371801cf03681576ac817.tar.gz | |
1200: rename everything to AdvancedPrivacy
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt')
| -rw-r--r-- | app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt | 211 | 
1 files changed, 0 insertions, 211 deletions
| diff --git a/app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt b/app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt deleted file mode 100644 index aab81d5..0000000 --- a/app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt +++ /dev/null @@ -1,211 +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.privacycentralapp - -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.privacycentralapp.common.WarningDialog -import foundation.e.privacycentralapp.data.repositories.AppListsRepository -import foundation.e.privacycentralapp.data.repositories.LocalStateRepository -import foundation.e.privacycentralapp.data.repositories.TrackersRepository -import foundation.e.privacycentralapp.domain.usecases.AppListUseCase -import foundation.e.privacycentralapp.domain.usecases.FakeLocationStateUseCase -import foundation.e.privacycentralapp.domain.usecases.GetQuickPrivacyStateUseCase -import foundation.e.privacycentralapp.domain.usecases.IpScramblingStateUseCase -import foundation.e.privacycentralapp.domain.usecases.ShowFeaturesWarningUseCase -import foundation.e.privacycentralapp.domain.usecases.TrackersStateUseCase -import foundation.e.privacycentralapp.domain.usecases.TrackersStatisticsUseCase -import foundation.e.privacycentralapp.dummy.CityDataSource -import foundation.e.privacycentralapp.features.dashboard.DashboardViewModel -import foundation.e.privacycentralapp.features.internetprivacy.InternetPrivacyViewModel -import foundation.e.privacycentralapp.features.location.FakeLocationViewModel -import foundation.e.privacycentralapp.features.trackers.TrackersViewModel -import foundation.e.privacycentralapp.features.trackers.apptrackers.AppTrackersFragment -import foundation.e.privacycentralapp.features.trackers.apptrackers.AppTrackersViewModel -import foundation.e.privacymodules.fakelocation.FakeLocationModule -import foundation.e.privacymodules.ipscrambler.IpScramblerModule -import foundation.e.privacymodules.ipscramblermodule.IIpScramblerModule -import foundation.e.privacymodules.permissions.PermissionsPrivacyModule -import foundation.e.privacymodules.permissions.data.ApplicationDescription -import foundation.e.privacymodules.permissions.data.ProfileType -import foundation.e.privacymodules.trackers.api.BlockTrackersPrivacyModule -import foundation.e.privacymodules.trackers.api.TrackTrackersPrivacyModule -import kotlinx.coroutines.DelicateCoroutinesApi -import kotlinx.coroutines.GlobalScope - -/** - * Simple container to hold application wide dependencies. - * - */ -@OptIn(DelicateCoroutinesApi::class) -class DependencyContainer(val app: Application) { -    val context: Context by lazy { app.applicationContext } - -    // Drivers -    private val fakeLocationModule: FakeLocationModule by lazy { FakeLocationModule(app.applicationContext) } -    private val permissionsModule by lazy { PermissionsPrivacyModule(app.applicationContext) } -    private val ipScramblerModule: IIpScramblerModule by lazy { IpScramblerModule(app.applicationContext) } - -    private val appDesc by lazy { -        ApplicationDescription( -            packageName = context.packageName, -            uid = Process.myUid(), -            label = context.resources.getString(R.string.app_name), -            icon = null, -            profileId = -1, -            profileType = ProfileType.MAIN -        ) -    } - -    private val blockTrackersPrivacyModule by lazy { BlockTrackersPrivacyModule.getInstance(context) } -    private val trackTrackersPrivacyModule by lazy { TrackTrackersPrivacyModule.getInstance(context) } - -    // Repositories -    private val localStateRepository by lazy { LocalStateRepository(context) } -    private val trackersRepository by lazy { TrackersRepository(context) } -    private val appListsRepository by lazy { AppListsRepository(permissionsModule, context, GlobalScope) } - -    // Usecases -    val getQuickPrivacyStateUseCase by lazy { -        GetQuickPrivacyStateUseCase(localStateRepository) -    } -    private val ipScramblingStateUseCase by lazy { -        IpScramblingStateUseCase( -            ipScramblerModule, permissionsModule, appDesc, localStateRepository, -            appListsRepository, GlobalScope -        ) -    } -    private val appListUseCase = AppListUseCase(appListsRepository) - -    val trackersStatisticsUseCase by lazy { -        TrackersStatisticsUseCase(trackTrackersPrivacyModule, blockTrackersPrivacyModule, appListsRepository, context.resources) -    } - -    val trackersStateUseCase by lazy { -        TrackersStateUseCase(blockTrackersPrivacyModule, trackTrackersPrivacyModule, localStateRepository, trackersRepository, appListsRepository, GlobalScope) -    } - -    private val fakeLocationStateUseCase by lazy { -        FakeLocationStateUseCase( -            fakeLocationModule, permissionsModule, localStateRepository, CityDataSource, appDesc, context, GlobalScope -        ) -    } - -    val showFeaturesWarningUseCase by lazy { -        ShowFeaturesWarningUseCase(localStateRepository = localStateRepository) -    } - -    val viewModelsFactory by lazy { -        ViewModelsFactory( -            getQuickPrivacyStateUseCase = getQuickPrivacyStateUseCase, -            trackersStatisticsUseCase = trackersStatisticsUseCase, -            trackersStateUseCase = trackersStateUseCase, -            fakeLocationStateUseCase = fakeLocationStateUseCase, -            ipScramblerModule = ipScramblerModule, -            ipScramblingStateUseCase = ipScramblingStateUseCase, -            appListUseCase = appListUseCase -        ) -    } - -    // Background -    fun initBackgroundSingletons() { -        trackersStateUseCase -        ipScramblingStateUseCase -        fakeLocationStateUseCase - -        UpdateTrackersWorker.periodicUpdate(context) - -        WarningDialog.startListening( -            showFeaturesWarningUseCase, -            GlobalScope, -            context -        ) - -        Widget.startListening( -            context, -            getQuickPrivacyStateUseCase, -            trackersStatisticsUseCase, -        ) - -        Notifications.startListening( -            context, -            getQuickPrivacyStateUseCase, -            permissionsModule, -            GlobalScope -        ) -    } -} - -@Suppress("LongParameterList") -class ViewModelsFactory( -    private val getQuickPrivacyStateUseCase: GetQuickPrivacyStateUseCase, -    private val trackersStatisticsUseCase: TrackersStatisticsUseCase, -    private val trackersStateUseCase: TrackersStateUseCase, -    private val fakeLocationStateUseCase: FakeLocationStateUseCase, -    private val ipScramblerModule: IIpScramblerModule, -    private val ipScramblingStateUseCase: IpScramblingStateUseCase, -    private val appListUseCase: AppListUseCase -) : ViewModelProvider.Factory { - -    @Suppress("UNCHECKED_CAST") -    override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { -        return when (modelClass) { -            AppTrackersViewModel::class.java -> { -                val app = extras[DEFAULT_ARGS_KEY]?.getInt(AppTrackersFragment.PARAM_APP_UID)?.let { -                    appListUseCase.getApp(it) -                } ?: appListUseCase.dummySystemApp - -                AppTrackersViewModel( -                    app = app, -                    trackersStateUseCase = trackersStateUseCase, -                    trackersStatisticsUseCase = trackersStatisticsUseCase, -                    getQuickPrivacyStateUseCase = getQuickPrivacyStateUseCase -                ) -            } - -            TrackersViewModel::class.java -> -                TrackersViewModel( -                    trackersStatisticsUseCase = trackersStatisticsUseCase -                ) -            FakeLocationViewModel::class.java -> -                FakeLocationViewModel( -                    getQuickPrivacyStateUseCase = getQuickPrivacyStateUseCase, -                    fakeLocationStateUseCase = fakeLocationStateUseCase -                ) -            InternetPrivacyViewModel::class.java -> -                InternetPrivacyViewModel( -                    ipScramblerModule = ipScramblerModule, -                    getQuickPrivacyStateUseCase = getQuickPrivacyStateUseCase, -                    ipScramblingStateUseCase = ipScramblingStateUseCase, -                    appListUseCase = appListUseCase -                ) -            DashboardViewModel::class.java -> -                DashboardViewModel( -                    getPrivacyStateUseCase = getQuickPrivacyStateUseCase, -                    trackersStatisticsUseCase = trackersStatisticsUseCase -                ) -            else -> throw IllegalArgumentException("Unknown class $modelClass") -        } as T -    } -} | 
