Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5891ac8e authored by Guillaume Jacquart's avatar Guillaume Jacquart
Browse files

Update fake location

parent 2ea0e99f
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -95,14 +95,14 @@ 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
    // TODO: google version is broken for now. googleImplementation project(":privacymodulesgoogle")
    googleImplementation project(":privacymodulesgoogle")
    // include the e specific version of the modules, just for the e flavor
    eImplementation 'foundation.e:privacymodule.e-29:0.3.2'
    eImplementation project(":privacymodulese")

    implementation 'foundation.e:privacymodule.api:0.3.2'
    implementation 'foundation.e:privacymodule.api:0.4.1'
    implementation 'foundation.e:privacymodule.tor:0.1.1'

    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
+15 −12
Original line number Diff line number Diff line
@@ -22,21 +22,22 @@ import android.content.Context
import android.os.Process
import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
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.TrackersStateUseCase
import foundation.e.privacycentralapp.domain.usecases.TrackersStatisticsUseCase
import foundation.e.privacycentralapp.dummy.CityDataSource
import foundation.e.privacycentralapp.dummy.TrackTrackersPrivacyMock
import foundation.e.privacycentralapp.features.dashboard.DashBoardViewModelFactory
import foundation.e.privacycentralapp.features.internetprivacy.InternetPrivacyViewModelFactory
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.location.FakeLocationModule
import foundation.e.privacymodules.location.IFakeLocationModule
import foundation.e.privacymodules.permissions.PermissionsPrivacyModule
import foundation.e.privacymodules.permissions.data.ApplicationDescription
import foundation.e.trackerfilter.api.BlockTrackersPrivacyModule
@@ -54,7 +55,7 @@ class DependencyContainer constructor(val app: Application) {
    val context: Context by lazy { app.applicationContext }

    // Drivers
    private val fakeLocationModule: IFakeLocation by lazy { FakeLocation(app.applicationContext) }
    private val fakeLocationModule: IFakeLocationModule by lazy { FakeLocationModule(app.applicationContext) }
    private val permissionsModule by lazy { PermissionsPrivacyModule(app.applicationContext) }
    private val ipScramblerModule: IIpScramblerModule by lazy { IpScramblerModule(app.applicationContext) }

@@ -67,10 +68,6 @@ class DependencyContainer constructor(val app: Application) {
        )
    }

    private val locationApi by lazy {
        LocationApiDelegate(fakeLocationModule, permissionsModule, appDesc)
    }

    private val blockTrackersPrivacyModule by lazy { BlockTrackersPrivacyModule.getInstance(context) }

    // Repositories
@@ -85,9 +82,8 @@ class DependencyContainer constructor(val app: Application) {
    private val ipScramblingStateUseCase by lazy {
        IpScramblingStateUseCase(ipScramblerModule, localStateRepository, GlobalScope)
    }
    private val appListUseCase by lazy {
        AppListUseCase(permissionsModule, GlobalScope)
    }
    private val appListUseCase = AppListUseCase(permissionsModule, GlobalScope)

    private val trackersStatisticsUseCase by lazy {
        TrackersStatisticsUseCase(trackTrackersPrivacyModule)
    }
@@ -96,13 +92,20 @@ class DependencyContainer constructor(val app: Application) {
        TrackersStateUseCase(blockTrackersPrivacyModule, trackTrackersPrivacyModule, permissionsModule, localStateRepository, GlobalScope)
    }

    private val fakeLocationStateUseCase by lazy {
        FakeLocationStateUseCase(
            fakeLocationModule, permissionsModule, localStateRepository, CityDataSource, appDesc, GlobalScope)
    }

    // ViewModelFactories
    val dashBoardViewModelFactory by lazy {
        DashBoardViewModelFactory(getQuickPrivacyStateUseCase, ipScramblingStateUseCase, trackersStatisticsUseCase, trackersStateUseCase)
    }

    val fakeLocationViewModelFactory by lazy {
        FakeLocationViewModelFactory(locationApi)
        FakeLocationViewModelFactory(
            getQuickPrivacyStateUseCase = getQuickPrivacyStateUseCase,
            fakeLocationStateUseCase = fakeLocationStateUseCase)
    }

    val blockerService = BlockerInterface.getInstance(context)
+46 −0
Original line number Diff line number Diff line
@@ -17,31 +17,20 @@

package foundation.e.privacycentralapp.dummy

import foundation.e.privacycentralapp.domain.entities.LocationMode
import kotlin.random.Random

data class City(val name: String, val latitude: Double, val longitude: Double) {

    fun toRandomLocation(): Location {
        return Location(LocationMode.RANDOM_LOCATION, this.latitude, this.longitude)
    }
}

object CityDataSource {
    private val BARCELONA = Pair(41.3851, 2.1734)
    private val BUDAPEST = Pair(47.4979, 19.0402)
    private val ABU_DHABI = Pair(24.4539, 54.3773)
    private val HYDERABAD = Pair(17.3850, 78.4867)
    private val QUEZON_CITY = Pair(14.6760, 121.0437)
    private val PARIS = Pair(48.8566, 2.3522)
    private val LONDON = Pair(51.5074, 0.1278)
    private val SHANGHAI = Pair(31.2304, 121.4737)
    private val MADRID = Pair(40.4168, 3.7038)
    private val LAHORE = Pair(31.5204, 74.3587)
    private val CHICAGO = Pair(41.8781, 87.6298)
    private val BARCELONA = Pair(41.3851f, 2.1734f)
    private val BUDAPEST = Pair(47.4979f, 19.0402f)
    private val ABU_DHABI = Pair(24.4539f, 54.3773f)
    private val HYDERABAD = Pair(17.3850f, 78.4867f)
    private val QUEZON_CITY = Pair(14.6760f, 121.0437f)
    private val PARIS = Pair(48.8566f, 2.3522f)
    private val LONDON = Pair(51.5074f, 0.1278f)
    private val SHANGHAI = Pair(31.2304f, 121.4737f)
    private val MADRID = Pair(40.4168f, 3.7038f)
    private val LAHORE = Pair(31.5204f, 74.3587f)
    private val CHICAGO = Pair(41.8781f, 87.6298f)

    // LatLong Array, the order should be the same as that of R.array.cities
    private val latLongArray = arrayOf(
    val citiesLocationsList = listOf(
        BARCELONA,
        BUDAPEST,
        ABU_DHABI,
@@ -54,13 +43,4 @@ object CityDataSource {
        LAHORE,
        CHICAGO
    )

    fun getRandomCity(cities: Array<String>): City {
        if (cities.size != latLongArray.size) {
            throw IllegalStateException("LatLong array must have the same number of element as in cities array.")
        }
        val randomIndex = Random.nextInt(cities.size)
        val latLong = latLongArray[randomIndex]
        return City(cities[randomIndex], latLong.first, latLong.second)
    }
}
+23 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ class LocalStateRepository(context: Context) {
        private const val SHARED_PREFS_FILE = "localState"
        private const val KEY_QUICK_PRIVACY = "quickPrivacy"
        private const val KEY_IP_SCRAMBLING = "ipScrambling"
        private const val KEY_FAKE_LATITUDE = "fakeLatitude"
        private const val KEY_FAKE_LONGITUDE = "fakeLongitude"
    }

    private val sharedPref = context.getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE)
@@ -40,6 +42,27 @@ class LocalStateRepository(context: Context) {

    var quickPrivacyEnabledFlow: Flow<Boolean> = quickPrivacyEnabledMutableFlow

    var fakeLocation: Pair<Float, Float>?
        get() = if (sharedPref.contains(KEY_FAKE_LATITUDE) && sharedPref.contains(
                    KEY_FAKE_LONGITUDE))
                        Pair(
                            sharedPref.getFloat(KEY_FAKE_LATITUDE, 0f),
                            sharedPref.getFloat(KEY_FAKE_LONGITUDE, 0f))
                else null
        set(value) {
            if (value == null) {
                sharedPref.edit()
                    .remove(KEY_FAKE_LATITUDE)
                    .remove(KEY_FAKE_LONGITUDE)
                    .commit()
            } else {
                sharedPref.edit()
                    .putFloat(KEY_FAKE_LATITUDE, value.first)
                    .putFloat(KEY_FAKE_LONGITUDE, value.second)
                    .commit()
            }
        }

    var isIpScramblingEnabled: Boolean
        get() = sharedPref.getBoolean(KEY_IP_SCRAMBLING, false)
        set(value) = set(KEY_IP_SCRAMBLING, value)
+1 −1
Original line number Diff line number Diff line
@@ -18,5 +18,5 @@
package foundation.e.privacycentralapp.domain.entities

enum class LocationMode {
    REAL_LOCATION, RANDOM_LOCATION, CUSTOM_LOCATION
    REAL_LOCATION, RANDOM_LOCATION, SPECIFIC_LOCATION
}
Loading