Loading app/build.gradle +1 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ android { dependencies { compileOnly files('libs/e-ui-sdk-1.0.1-q.jar') implementation files('libs/lineage-sdk.jar') implementation files('libs/trackerfilter.aar') //implementation project(":privacymodulesapi") // include the google specific version of the modules, just for the google flavor Loading app/src/main/AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ android:supportsRtl="true" android:theme="@style/Theme.PrivacyCentralApp" android:windowSoftInputMode="adjustResize" tools:replace="android:icon,android:label,android:theme" > <activity android:name=".main.MainActivity"> <intent-filter> Loading app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt +18 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import foundation.e.privacycentralapp.data.repositories.LocalStateRepository import foundation.e.privacycentralapp.domain.usecases.AppListUseCase import foundation.e.privacycentralapp.domain.usecases.GetQuickPrivacyStateUseCase import foundation.e.privacycentralapp.domain.usecases.IpScramblingStateUseCase import foundation.e.privacycentralapp.domain.usecases.TrackersStateUseCase import foundation.e.privacycentralapp.domain.usecases.TrackersStatisticsUseCase import foundation.e.privacycentralapp.dummy.TrackTrackersPrivacyMock import foundation.e.privacycentralapp.features.dashboard.DashBoardViewModelFactory Loading @@ -31,12 +32,15 @@ import foundation.e.privacycentralapp.features.internetprivacy.InternetPrivacyVi import foundation.e.privacycentralapp.features.location.FakeLocationViewModelFactory import foundation.e.privacycentralapp.features.location.LocationApiDelegate import foundation.e.privacycentralapp.features.trackers.TrackersViewModelFactory import foundation.e.privacycentralapp.features.trackers.apptrackers.AppTrackersViewModelFactory import foundation.e.privacymodules.ipscrambler.IpScramblerModule import foundation.e.privacymodules.ipscramblermodule.IIpScramblerModule import foundation.e.privacymodules.location.FakeLocation import foundation.e.privacymodules.location.IFakeLocation import foundation.e.privacymodules.permissions.PermissionsPrivacyModule import foundation.e.privacymodules.permissions.data.ApplicationDescription import foundation.e.trackerfilter.api.BlockTrackersPrivacyModule import foundation.e.trackerfilter.api.TrackTrackersPrivacyModule import kotlinx.coroutines.GlobalScope import lineageos.blockers.BlockerInterface Loading Loading @@ -67,9 +71,13 @@ class DependencyContainer constructor(val app: Application) { LocationApiDelegate(fakeLocationModule, permissionsModule, appDesc) } private val blockTrackersPrivacyModule by lazy { BlockTrackersPrivacyModule.getInstance(context) } // Repositories private val localStateRepository by lazy { LocalStateRepository(context) } private val trackTrackersPrivacyModule by lazy { TrackTrackersPrivacyMock() } private val trackTrackersPrivacyModule by lazy { TrackTrackersPrivacyModule.getInstance(context) } private val trackersPrivacyMock by lazy { TrackTrackersPrivacyMock() } // Usecases private val getQuickPrivacyStateUseCase by lazy { GetQuickPrivacyStateUseCase(localStateRepository) Loading @@ -81,7 +89,11 @@ class DependencyContainer constructor(val app: Application) { AppListUseCase(permissionsModule) } private val trackersStatisticsUseCase by lazy { TrackersStatisticsUseCase(trackTrackersPrivacyModule) TrackersStatisticsUseCase(trackersPrivacyMock) } private val trackersStateUseCase by lazy { TrackersStateUseCase(trackersPrivacyMock, trackersPrivacyMock, permissionsModule) } // ViewModelFactories Loading @@ -102,4 +114,8 @@ class DependencyContainer constructor(val app: Application) { val trackersViewModelFactory by lazy { TrackersViewModelFactory(getQuickPrivacyStateUseCase, trackersStatisticsUseCase, appListUseCase) } val appTrackersViewModelFactory by lazy { AppTrackersViewModelFactory(trackersStateUseCase) } } app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * 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.domain.usecases import foundation.e.privacymodules.permissions.PermissionsPrivacyModule import foundation.e.privacymodules.permissions.data.ApplicationDescription import foundation.e.privacymodules.trackers.IBlockTrackersPrivacyModule import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule import foundation.e.privacymodules.trackers.Tracker class TrackersStateUseCase( private val blockTrackersPrivacyModule: IBlockTrackersPrivacyModule, private val trackersPrivacyModule: ITrackTrackersPrivacyModule, private val permissionsPrivacyModule: PermissionsPrivacyModule ) { fun getApplicationPermission(packageName: String): ApplicationDescription { return permissionsPrivacyModule.getApplicationDescription(packageName) } fun getTrackers(appUid: Int): List<Tracker> { return trackersPrivacyModule.getTrackersForApp(appUid) } fun isWhitelisted(appUid: Int): Boolean { return blockTrackersPrivacyModule.isWhitelisted(appUid) } fun getTrackersWhitelistIds(appUid: Int): List<Int> { return blockTrackersPrivacyModule.getWhiteList(appUid).map { it.id } } fun toggleAppWhitelist(appUid: Int, isWhitelisted: Boolean) { blockTrackersPrivacyModule.setWhiteListed(appUid, isWhitelisted) } fun blockTracker(appUid: Int, tracker: Tracker, isBlocked: Boolean) { blockTrackersPrivacyModule.setWhiteListed(tracker, appUid, !isBlocked) } } app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt +6 −6 Original line number Diff line number Diff line Loading @@ -17,19 +17,19 @@ package foundation.e.privacycentralapp.domain.usecases import foundation.e.privacycentralapp.dummy.TrackTrackersPrivacyMock import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule class TrackersStatisticsUseCase( private val trackTrackersPrivacyModule: TrackTrackersPrivacyMock private val trackTrackersPrivacyModule: ITrackTrackersPrivacyModule ) { fun getPast24HoursTrackersCalls(): List<Int> { return trackTrackersPrivacyModule.getPast24HoursTrackersCalls() fun getPastDayTrackersCalls(): List<Int> { return trackTrackersPrivacyModule.getPastDayTrackersCalls() } fun getDayMonthYearStatistics(): Triple<List<Int>, List<Int>, List<Int>> { return Triple( trackTrackersPrivacyModule.getPast24HoursTrackersCalls(), trackTrackersPrivacyModule.getPastDayTrackersCalls(), trackTrackersPrivacyModule.getPastMonthTrackersCalls(), trackTrackersPrivacyModule.getPastYearTrackersCalls() ) Loading @@ -37,7 +37,7 @@ class TrackersStatisticsUseCase( fun getDayMonthYearCounts(): Triple<Int, Int, Int> { return Triple( trackTrackersPrivacyModule.getPast24HoursTrackersCount(), trackTrackersPrivacyModule.getPastDayTrackersCount(), trackTrackersPrivacyModule.getPastMonthTrackersCount(), trackTrackersPrivacyModule.getPastYearTrackersCount() ) Loading Loading
app/build.gradle +1 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ android { dependencies { compileOnly files('libs/e-ui-sdk-1.0.1-q.jar') implementation files('libs/lineage-sdk.jar') implementation files('libs/trackerfilter.aar') //implementation project(":privacymodulesapi") // include the google specific version of the modules, just for the google flavor Loading
app/src/main/AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ android:supportsRtl="true" android:theme="@style/Theme.PrivacyCentralApp" android:windowSoftInputMode="adjustResize" tools:replace="android:icon,android:label,android:theme" > <activity android:name=".main.MainActivity"> <intent-filter> Loading
app/src/main/java/foundation/e/privacycentralapp/DependencyContainer.kt +18 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import foundation.e.privacycentralapp.data.repositories.LocalStateRepository import foundation.e.privacycentralapp.domain.usecases.AppListUseCase import foundation.e.privacycentralapp.domain.usecases.GetQuickPrivacyStateUseCase import foundation.e.privacycentralapp.domain.usecases.IpScramblingStateUseCase import foundation.e.privacycentralapp.domain.usecases.TrackersStateUseCase import foundation.e.privacycentralapp.domain.usecases.TrackersStatisticsUseCase import foundation.e.privacycentralapp.dummy.TrackTrackersPrivacyMock import foundation.e.privacycentralapp.features.dashboard.DashBoardViewModelFactory Loading @@ -31,12 +32,15 @@ import foundation.e.privacycentralapp.features.internetprivacy.InternetPrivacyVi import foundation.e.privacycentralapp.features.location.FakeLocationViewModelFactory import foundation.e.privacycentralapp.features.location.LocationApiDelegate import foundation.e.privacycentralapp.features.trackers.TrackersViewModelFactory import foundation.e.privacycentralapp.features.trackers.apptrackers.AppTrackersViewModelFactory import foundation.e.privacymodules.ipscrambler.IpScramblerModule import foundation.e.privacymodules.ipscramblermodule.IIpScramblerModule import foundation.e.privacymodules.location.FakeLocation import foundation.e.privacymodules.location.IFakeLocation import foundation.e.privacymodules.permissions.PermissionsPrivacyModule import foundation.e.privacymodules.permissions.data.ApplicationDescription import foundation.e.trackerfilter.api.BlockTrackersPrivacyModule import foundation.e.trackerfilter.api.TrackTrackersPrivacyModule import kotlinx.coroutines.GlobalScope import lineageos.blockers.BlockerInterface Loading Loading @@ -67,9 +71,13 @@ class DependencyContainer constructor(val app: Application) { LocationApiDelegate(fakeLocationModule, permissionsModule, appDesc) } private val blockTrackersPrivacyModule by lazy { BlockTrackersPrivacyModule.getInstance(context) } // Repositories private val localStateRepository by lazy { LocalStateRepository(context) } private val trackTrackersPrivacyModule by lazy { TrackTrackersPrivacyMock() } private val trackTrackersPrivacyModule by lazy { TrackTrackersPrivacyModule.getInstance(context) } private val trackersPrivacyMock by lazy { TrackTrackersPrivacyMock() } // Usecases private val getQuickPrivacyStateUseCase by lazy { GetQuickPrivacyStateUseCase(localStateRepository) Loading @@ -81,7 +89,11 @@ class DependencyContainer constructor(val app: Application) { AppListUseCase(permissionsModule) } private val trackersStatisticsUseCase by lazy { TrackersStatisticsUseCase(trackTrackersPrivacyModule) TrackersStatisticsUseCase(trackersPrivacyMock) } private val trackersStateUseCase by lazy { TrackersStateUseCase(trackersPrivacyMock, trackersPrivacyMock, permissionsModule) } // ViewModelFactories Loading @@ -102,4 +114,8 @@ class DependencyContainer constructor(val app: Application) { val trackersViewModelFactory by lazy { TrackersViewModelFactory(getQuickPrivacyStateUseCase, trackersStatisticsUseCase, appListUseCase) } val appTrackersViewModelFactory by lazy { AppTrackersViewModelFactory(trackersStateUseCase) } }
app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * 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.domain.usecases import foundation.e.privacymodules.permissions.PermissionsPrivacyModule import foundation.e.privacymodules.permissions.data.ApplicationDescription import foundation.e.privacymodules.trackers.IBlockTrackersPrivacyModule import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule import foundation.e.privacymodules.trackers.Tracker class TrackersStateUseCase( private val blockTrackersPrivacyModule: IBlockTrackersPrivacyModule, private val trackersPrivacyModule: ITrackTrackersPrivacyModule, private val permissionsPrivacyModule: PermissionsPrivacyModule ) { fun getApplicationPermission(packageName: String): ApplicationDescription { return permissionsPrivacyModule.getApplicationDescription(packageName) } fun getTrackers(appUid: Int): List<Tracker> { return trackersPrivacyModule.getTrackersForApp(appUid) } fun isWhitelisted(appUid: Int): Boolean { return blockTrackersPrivacyModule.isWhitelisted(appUid) } fun getTrackersWhitelistIds(appUid: Int): List<Int> { return blockTrackersPrivacyModule.getWhiteList(appUid).map { it.id } } fun toggleAppWhitelist(appUid: Int, isWhitelisted: Boolean) { blockTrackersPrivacyModule.setWhiteListed(appUid, isWhitelisted) } fun blockTracker(appUid: Int, tracker: Tracker, isBlocked: Boolean) { blockTrackersPrivacyModule.setWhiteListed(tracker, appUid, !isBlocked) } }
app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt +6 −6 Original line number Diff line number Diff line Loading @@ -17,19 +17,19 @@ package foundation.e.privacycentralapp.domain.usecases import foundation.e.privacycentralapp.dummy.TrackTrackersPrivacyMock import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule class TrackersStatisticsUseCase( private val trackTrackersPrivacyModule: TrackTrackersPrivacyMock private val trackTrackersPrivacyModule: ITrackTrackersPrivacyModule ) { fun getPast24HoursTrackersCalls(): List<Int> { return trackTrackersPrivacyModule.getPast24HoursTrackersCalls() fun getPastDayTrackersCalls(): List<Int> { return trackTrackersPrivacyModule.getPastDayTrackersCalls() } fun getDayMonthYearStatistics(): Triple<List<Int>, List<Int>, List<Int>> { return Triple( trackTrackersPrivacyModule.getPast24HoursTrackersCalls(), trackTrackersPrivacyModule.getPastDayTrackersCalls(), trackTrackersPrivacyModule.getPastMonthTrackersCalls(), trackTrackersPrivacyModule.getPastYearTrackersCalls() ) Loading @@ -37,7 +37,7 @@ class TrackersStatisticsUseCase( fun getDayMonthYearCounts(): Triple<Int, Int, Int> { return Triple( trackTrackersPrivacyModule.getPast24HoursTrackersCount(), trackTrackersPrivacyModule.getPastDayTrackersCount(), trackTrackersPrivacyModule.getPastMonthTrackersCount(), trackTrackersPrivacyModule.getPastYearTrackersCount() ) Loading