Loading .gitlab-ci.yml +1 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ test-debug: build-e-release: stage: build script: - ./gradlew :app:assembleERelease - ./gradlew :app:assembleEosRelease rules: - if: '$CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_TAG =~ /^eOS-/' variables: Loading app/build.gradle +6 −7 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' id 'kotlin-parcelize' id 'androidx.navigation.safeargs.kotlin' } Loading Loading @@ -82,7 +81,7 @@ android { // expected by the android gradle plugin. flavorDimensions 'os' productFlavors { e { eos { dimension 'os' minSdkVersion 29 targetSdkVersion 32 Loading Loading @@ -144,20 +143,20 @@ android { dependencies { implementation project(':core') standaloneImplementation project(':permissionsstandalone') eImplementation project(':permissionse') eosImplementation project(':permissionseos') implementation project(':fakelocation') eImplementation files('libs/lineage-sdk.jar') eosImplementation files('libs/lineage-sdk.jar') implementation project(':trackers') implementation project(':ipscrambling') eImplementation project(':trackersservicee') eosImplementation project(':trackersserviceeos') standaloneImplementation project(':trackersservicestandalone') implementation ( libs.e.elib, libs.eos.elib, libs.androidx.core.ktx, libs.androidx.appcompat, Loading @@ -174,7 +173,7 @@ dependencies { libs.maplibre, libs.mpandroidcharts, libs.e.telemetry, libs.eos.telemetry, libs.timber ) Loading app/src/main/java/foundation/e/advancedprivacy/AdvancedPrivacyApplication.kt +4 −1 Original line number Diff line number Diff line /* * Copyright (C) 2021 E FOUNDATION, 2022 - 2023 MURENA SAS * Copyright (C) 2022 - 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 Loading @@ -25,6 +26,7 @@ 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.domain.usecases.VpnSupervisorUseCase import foundation.e.advancedprivacy.externalinterfaces.permissions.IPermissionsPrivacyModule import foundation.e.advancedprivacy.trackers.services.UpdateTrackersWorker import foundation.e.lib.telemetry.Telemetry Loading Loading @@ -70,5 +72,6 @@ class AdvancedPrivacyApplication : Application() { get<IpScramblingStateUseCase>(IpScramblingStateUseCase::class.java) get<TrackersStateUseCase>(TrackersStateUseCase::class.java) get<FakeLocationStateUseCase>(FakeLocationStateUseCase::class.java) get<VpnSupervisorUseCase>(VpnSupervisorUseCase::class.java).listenSettings() } } app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt +6 −7 Original line number Diff line number Diff line Loading @@ -20,11 +20,12 @@ 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.data.repositories.LocalStateRepositoryImpl import foundation.e.advancedprivacy.domain.entities.ApplicationDescription import foundation.e.advancedprivacy.domain.entities.CHANNEL_TRACKER_FLAG import foundation.e.advancedprivacy.domain.entities.NotificationContent import foundation.e.advancedprivacy.domain.entities.ProfileType import foundation.e.advancedprivacy.domain.repositories.LocalStateRepository import foundation.e.advancedprivacy.domain.usecases.AppListUseCase import foundation.e.advancedprivacy.domain.usecases.FakeLocationStateUseCase import foundation.e.advancedprivacy.domain.usecases.GetQuickPrivacyStateUseCase Loading Loading @@ -55,8 +56,8 @@ val appModule = module { includes(coreModule, trackersModule, fakelocationModule, ipScramblerModule, trackerServiceModule) factory<Resources> { androidContext().resources } single { LocalStateRepository(context = androidContext()) single<LocalStateRepository> { LocalStateRepositoryImpl(context = androidContext()) } single<ApplicationDescription>(named("AdvancedPrivacy")) { Loading Loading @@ -120,15 +121,13 @@ val appModule = module { singleOf(::GetQuickPrivacyStateUseCase) single { IpScramblingStateUseCase( orbotServiceSupervisor = get(), permissionsPrivacyModule = get(), appDesc = get(named("AdvancedPrivacy")), orbotSupervisor = get(), localStateRepository = get(), appListsRepository = get(), trackersServiceSupervisor = get(), coroutineScope = get() ) } singleOf(::ShowFeaturesWarningUseCase) singleOf(::TrackersStateUseCase) singleOf(::TrackersStatisticsUseCase) Loading app/src/main/java/foundation/e/advancedprivacy/Notifications.kt +11 −17 Original line number Diff line number Diff line Loading @@ -29,8 +29,7 @@ import foundation.e.advancedprivacy.domain.entities.CHANNEL_FAKE_LOCATION_FLAG import foundation.e.advancedprivacy.domain.entities.CHANNEL_FIRST_BOOT import foundation.e.advancedprivacy.domain.entities.CHANNEL_IPSCRAMBLING_FLAG import foundation.e.advancedprivacy.domain.entities.CHANNEL_TRACKER_FLAG import foundation.e.advancedprivacy.domain.entities.FeatureServiceState import foundation.e.advancedprivacy.domain.entities.MainFeatures import foundation.e.advancedprivacy.domain.entities.FeatureState import foundation.e.advancedprivacy.domain.entities.NOTIFICATION_FAKE_LOCATION_FLAG import foundation.e.advancedprivacy.domain.entities.NOTIFICATION_FIRST_BOOT import foundation.e.advancedprivacy.domain.entities.NOTIFICATION_IPSCRAMBLING_FLAG Loading Loading @@ -98,19 +97,19 @@ object Notifications { getQuickPrivacyStateUseCase.isLocationHidden.onEach { if (it) { showFlagNotification(appContext, MainFeatures.FAKE_LOCATION) showFlagNotification(appContext, NOTIFICATION_FAKE_LOCATION_FLAG) } else { hideFlagNotification(appContext, MainFeatures.FAKE_LOCATION) hideFlagNotification(appContext, NOTIFICATION_FAKE_LOCATION_FLAG) } }.launchIn(appScope) getQuickPrivacyStateUseCase.ipScramblingMode.map { it != FeatureServiceState.OFF it != FeatureState.OFF }.distinctUntilChanged().onEach { if (it) { showFlagNotification(appContext, MainFeatures.IP_SCRAMBLING) showFlagNotification(appContext, NOTIFICATION_IPSCRAMBLING_FLAG) } else { hideFlagNotification(appContext, MainFeatures.IP_SCRAMBLING) hideFlagNotification(appContext, NOTIFICATION_IPSCRAMBLING_FLAG) } }.launchIn(appScope) } Loading Loading @@ -139,9 +138,9 @@ object Notifications { NotificationManagerCompat.from(context).createNotificationChannel(channel) } private fun showFlagNotification(context: Context, feature: MainFeatures) { when (feature) { MainFeatures.FAKE_LOCATION -> showFlagNotification( private fun showFlagNotification(context: Context, id: Int) { when (id) { NOTIFICATION_FAKE_LOCATION_FLAG -> showFlagNotification( context = context, id = NOTIFICATION_FAKE_LOCATION_FLAG, content = NotificationContent( Loading @@ -154,7 +153,7 @@ object Notifications { .createPendingIntent() ) ) MainFeatures.IP_SCRAMBLING -> showFlagNotification( NOTIFICATION_IPSCRAMBLING_FLAG -> showFlagNotification( context = context, id = NOTIFICATION_IPSCRAMBLING_FLAG, content = NotificationContent( Loading Loading @@ -183,12 +182,7 @@ object Notifications { NotificationManagerCompat.from(context).notify(id, builder.build()) } private fun hideFlagNotification(context: Context, feature: MainFeatures) { val id = when (feature) { MainFeatures.FAKE_LOCATION -> NOTIFICATION_FAKE_LOCATION_FLAG MainFeatures.IP_SCRAMBLING -> NOTIFICATION_IPSCRAMBLING_FLAG else -> return } private fun hideFlagNotification(context: Context, id: Int) { NotificationManagerCompat.from(context).cancel(id) } } Loading
.gitlab-ci.yml +1 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ test-debug: build-e-release: stage: build script: - ./gradlew :app:assembleERelease - ./gradlew :app:assembleEosRelease rules: - if: '$CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_TAG =~ /^eOS-/' variables: Loading
app/build.gradle +6 −7 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' id 'kotlin-parcelize' id 'androidx.navigation.safeargs.kotlin' } Loading Loading @@ -82,7 +81,7 @@ android { // expected by the android gradle plugin. flavorDimensions 'os' productFlavors { e { eos { dimension 'os' minSdkVersion 29 targetSdkVersion 32 Loading Loading @@ -144,20 +143,20 @@ android { dependencies { implementation project(':core') standaloneImplementation project(':permissionsstandalone') eImplementation project(':permissionse') eosImplementation project(':permissionseos') implementation project(':fakelocation') eImplementation files('libs/lineage-sdk.jar') eosImplementation files('libs/lineage-sdk.jar') implementation project(':trackers') implementation project(':ipscrambling') eImplementation project(':trackersservicee') eosImplementation project(':trackersserviceeos') standaloneImplementation project(':trackersservicestandalone') implementation ( libs.e.elib, libs.eos.elib, libs.androidx.core.ktx, libs.androidx.appcompat, Loading @@ -174,7 +173,7 @@ dependencies { libs.maplibre, libs.mpandroidcharts, libs.e.telemetry, libs.eos.telemetry, libs.timber ) Loading
app/src/main/java/foundation/e/advancedprivacy/AdvancedPrivacyApplication.kt +4 −1 Original line number Diff line number Diff line /* * Copyright (C) 2021 E FOUNDATION, 2022 - 2023 MURENA SAS * Copyright (C) 2022 - 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 Loading @@ -25,6 +26,7 @@ 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.domain.usecases.VpnSupervisorUseCase import foundation.e.advancedprivacy.externalinterfaces.permissions.IPermissionsPrivacyModule import foundation.e.advancedprivacy.trackers.services.UpdateTrackersWorker import foundation.e.lib.telemetry.Telemetry Loading Loading @@ -70,5 +72,6 @@ class AdvancedPrivacyApplication : Application() { get<IpScramblingStateUseCase>(IpScramblingStateUseCase::class.java) get<TrackersStateUseCase>(TrackersStateUseCase::class.java) get<FakeLocationStateUseCase>(FakeLocationStateUseCase::class.java) get<VpnSupervisorUseCase>(VpnSupervisorUseCase::class.java).listenSettings() } }
app/src/main/java/foundation/e/advancedprivacy/KoinModule.kt +6 −7 Original line number Diff line number Diff line Loading @@ -20,11 +20,12 @@ 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.data.repositories.LocalStateRepositoryImpl import foundation.e.advancedprivacy.domain.entities.ApplicationDescription import foundation.e.advancedprivacy.domain.entities.CHANNEL_TRACKER_FLAG import foundation.e.advancedprivacy.domain.entities.NotificationContent import foundation.e.advancedprivacy.domain.entities.ProfileType import foundation.e.advancedprivacy.domain.repositories.LocalStateRepository import foundation.e.advancedprivacy.domain.usecases.AppListUseCase import foundation.e.advancedprivacy.domain.usecases.FakeLocationStateUseCase import foundation.e.advancedprivacy.domain.usecases.GetQuickPrivacyStateUseCase Loading Loading @@ -55,8 +56,8 @@ val appModule = module { includes(coreModule, trackersModule, fakelocationModule, ipScramblerModule, trackerServiceModule) factory<Resources> { androidContext().resources } single { LocalStateRepository(context = androidContext()) single<LocalStateRepository> { LocalStateRepositoryImpl(context = androidContext()) } single<ApplicationDescription>(named("AdvancedPrivacy")) { Loading Loading @@ -120,15 +121,13 @@ val appModule = module { singleOf(::GetQuickPrivacyStateUseCase) single { IpScramblingStateUseCase( orbotServiceSupervisor = get(), permissionsPrivacyModule = get(), appDesc = get(named("AdvancedPrivacy")), orbotSupervisor = get(), localStateRepository = get(), appListsRepository = get(), trackersServiceSupervisor = get(), coroutineScope = get() ) } singleOf(::ShowFeaturesWarningUseCase) singleOf(::TrackersStateUseCase) singleOf(::TrackersStatisticsUseCase) Loading
app/src/main/java/foundation/e/advancedprivacy/Notifications.kt +11 −17 Original line number Diff line number Diff line Loading @@ -29,8 +29,7 @@ import foundation.e.advancedprivacy.domain.entities.CHANNEL_FAKE_LOCATION_FLAG import foundation.e.advancedprivacy.domain.entities.CHANNEL_FIRST_BOOT import foundation.e.advancedprivacy.domain.entities.CHANNEL_IPSCRAMBLING_FLAG import foundation.e.advancedprivacy.domain.entities.CHANNEL_TRACKER_FLAG import foundation.e.advancedprivacy.domain.entities.FeatureServiceState import foundation.e.advancedprivacy.domain.entities.MainFeatures import foundation.e.advancedprivacy.domain.entities.FeatureState import foundation.e.advancedprivacy.domain.entities.NOTIFICATION_FAKE_LOCATION_FLAG import foundation.e.advancedprivacy.domain.entities.NOTIFICATION_FIRST_BOOT import foundation.e.advancedprivacy.domain.entities.NOTIFICATION_IPSCRAMBLING_FLAG Loading Loading @@ -98,19 +97,19 @@ object Notifications { getQuickPrivacyStateUseCase.isLocationHidden.onEach { if (it) { showFlagNotification(appContext, MainFeatures.FAKE_LOCATION) showFlagNotification(appContext, NOTIFICATION_FAKE_LOCATION_FLAG) } else { hideFlagNotification(appContext, MainFeatures.FAKE_LOCATION) hideFlagNotification(appContext, NOTIFICATION_FAKE_LOCATION_FLAG) } }.launchIn(appScope) getQuickPrivacyStateUseCase.ipScramblingMode.map { it != FeatureServiceState.OFF it != FeatureState.OFF }.distinctUntilChanged().onEach { if (it) { showFlagNotification(appContext, MainFeatures.IP_SCRAMBLING) showFlagNotification(appContext, NOTIFICATION_IPSCRAMBLING_FLAG) } else { hideFlagNotification(appContext, MainFeatures.IP_SCRAMBLING) hideFlagNotification(appContext, NOTIFICATION_IPSCRAMBLING_FLAG) } }.launchIn(appScope) } Loading Loading @@ -139,9 +138,9 @@ object Notifications { NotificationManagerCompat.from(context).createNotificationChannel(channel) } private fun showFlagNotification(context: Context, feature: MainFeatures) { when (feature) { MainFeatures.FAKE_LOCATION -> showFlagNotification( private fun showFlagNotification(context: Context, id: Int) { when (id) { NOTIFICATION_FAKE_LOCATION_FLAG -> showFlagNotification( context = context, id = NOTIFICATION_FAKE_LOCATION_FLAG, content = NotificationContent( Loading @@ -154,7 +153,7 @@ object Notifications { .createPendingIntent() ) ) MainFeatures.IP_SCRAMBLING -> showFlagNotification( NOTIFICATION_IPSCRAMBLING_FLAG -> showFlagNotification( context = context, id = NOTIFICATION_IPSCRAMBLING_FLAG, content = NotificationContent( Loading Loading @@ -183,12 +182,7 @@ object Notifications { NotificationManagerCompat.from(context).notify(id, builder.build()) } private fun hideFlagNotification(context: Context, feature: MainFeatures) { val id = when (feature) { MainFeatures.FAKE_LOCATION -> NOTIFICATION_FAKE_LOCATION_FLAG MainFeatures.IP_SCRAMBLING -> NOTIFICATION_IPSCRAMBLING_FLAG else -> return } private fun hideFlagNotification(context: Context, id: Int) { NotificationManagerCompat.from(context).cancel(id) } }