diff --git a/app/src/main/java/foundation/e/apps/data/blockedApps/AppWarningInfo.kt b/app/src/main/java/foundation/e/apps/data/blockedApps/AppWarningInfo.kt index c5eba1acfc057d3e6193e037988b76372927680a..c645eda1616503026fe92f5a22531ec70fd39b7d 100644 --- a/app/src/main/java/foundation/e/apps/data/blockedApps/AppWarningInfo.kt +++ b/app/src/main/java/foundation/e/apps/data/blockedApps/AppWarningInfo.kt @@ -20,4 +20,7 @@ package foundation.e.apps.data.blockedApps import com.google.gson.annotations.SerializedName -data class AppWarningInfo(@SerializedName("not_working_apps") val notWorkingApps: List) +data class AppWarningInfo( + @SerializedName("not_working_apps") val notWorkingApps: List, + @SerializedName("zero_privacy_apps") val zeroPrivacyApps: List +) diff --git a/app/src/main/java/foundation/e/apps/data/blockedApps/BlockedAppRepository.kt b/app/src/main/java/foundation/e/apps/data/blockedApps/BlockedAppRepository.kt index 5962030bd06741123abd52c1737c0be9fc6dfcb4..9ab06202cf0a92f735dc87e7d1f498c5077528b9 100644 --- a/app/src/main/java/foundation/e/apps/data/blockedApps/BlockedAppRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/blockedApps/BlockedAppRepository.kt @@ -50,6 +50,9 @@ class BlockedAppRepository @Inject constructor( fun isBlockedApp(packageName: String) = blockedAppInfoList?.notWorkingApps?.contains(packageName) ?: false + fun isPrivacyScoreZero(packageName: String) = + blockedAppInfoList?.zeroPrivacyApps?.contains(packageName) ?: false + suspend fun fetchUpdateOfAppWarningList(): Boolean = suspendCancellableCoroutine { continuation -> downloadManager.downloadFileInCache( @@ -75,7 +78,7 @@ class BlockedAppRepository @Inject constructor( gson.fromJson(blockedAppInfoJson, AppWarningInfo::class.java) } catch (exception: Exception) { Timber.e(exception.localizedMessage ?: "", exception) - AppWarningInfo(listOf()) + AppWarningInfo(listOf(), listOf()) } } } diff --git a/app/src/main/java/foundation/e/apps/data/exodus/repositories/PrivacyScoreRepositoryImpl.kt b/app/src/main/java/foundation/e/apps/data/exodus/repositories/PrivacyScoreRepositoryImpl.kt index 91d0e3f12f1b713002d67fee6ce6efc9d7055ecb..02cb97b8e51673a1085baafd0330a0b44c38af8a 100644 --- a/app/src/main/java/foundation/e/apps/data/exodus/repositories/PrivacyScoreRepositoryImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/exodus/repositories/PrivacyScoreRepositoryImpl.kt @@ -19,6 +19,7 @@ package foundation.e.apps.data.exodus.repositories import foundation.e.apps.data.application.data.Application +import foundation.e.apps.data.blockedApps.BlockedAppRepository import foundation.e.apps.di.CommonUtilsModule import javax.inject.Inject import javax.inject.Singleton @@ -26,18 +27,29 @@ import kotlin.math.ceil import kotlin.math.round @Singleton -class PrivacyScoreRepositoryImpl @Inject constructor() : PrivacyScoreRepository { +class PrivacyScoreRepositoryImpl @Inject constructor( + private val blockedAppRepository: BlockedAppRepository +) : PrivacyScoreRepository { override fun calculatePrivacyScore(application: Application): Int { + var privacyScore = -1 + if (blockedAppRepository.isPrivacyScoreZero(application.package_name)) { + privacyScore = 0 + } + if (application.permsFromExodus == CommonUtilsModule.LIST_OF_NULL) { - return -1 + return privacyScore + } + + if (privacyScore != 0) { + val calculateTrackersScore = calculateTrackersScore(application.trackers.size) + val calculatePermissionsScore = calculatePermissionsScore( + countAndroidPermissions(application) + ) + privacyScore = calculateTrackersScore + calculatePermissionsScore } - val calculateTrackersScore = calculateTrackersScore(application.trackers.size) - val calculatePermissionsScore = calculatePermissionsScore( - countAndroidPermissions(application) - ) - return calculateTrackersScore + calculatePermissionsScore + return privacyScore } private fun calculateTrackersScore(numberOfTrackers: Int): Int { diff --git a/app/src/test/java/foundation/e/apps/exodus/PrivacyScoreRepositoryImplTest.kt b/app/src/test/java/foundation/e/apps/exodus/PrivacyScoreRepositoryImplTest.kt index e8b61b401fe0b915a5c50ed917287afb4ffcaae1..1602f92b0fcb3a8001bdc002dad316f9e7723fa1 100644 --- a/app/src/test/java/foundation/e/apps/exodus/PrivacyScoreRepositoryImplTest.kt +++ b/app/src/test/java/foundation/e/apps/exodus/PrivacyScoreRepositoryImplTest.kt @@ -21,18 +21,27 @@ package foundation.e.apps.exodus import foundation.e.apps.data.enums.Status import foundation.e.apps.data.exodus.repositories.PrivacyScoreRepositoryImpl import foundation.e.apps.data.application.data.Application +import foundation.e.apps.data.blockedApps.BlockedAppRepository import foundation.e.apps.di.CommonUtilsModule import org.junit.Assert import org.junit.Before import org.junit.Test +import org.mockito.Mock +import org.mockito.Mockito +import org.mockito.MockitoAnnotations +import org.mockito.kotlin.any class PrivacyScoreRepositoryImplTest { private lateinit var privacyScoreRepository: PrivacyScoreRepositoryImpl + @Mock + private lateinit var blockedAppRepository: BlockedAppRepository + @Before fun setup() { - privacyScoreRepository = PrivacyScoreRepositoryImpl() + MockitoAnnotations.openMocks(this) + privacyScoreRepository = PrivacyScoreRepositoryImpl(blockedAppRepository) } @Test