Loading app/src/main/java/foundation/e/apps/data/application/data/Application.kt +4 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,10 @@ data class Application( } } } fun hasExodusPrivacyRating(): Boolean { return this.reportId.toInt() != -1 } } val Application.shareUri: Uri Loading app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt +1 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ class AppPrivacyInfoRepositoryImpl @Inject constructor( } val reports = fetchReports(application.package_name) if (reports.isEmpty()) { if (reports.firstOrNull()?.handle != application.package_name) { return Result.error("Could not fetch reports for ${application.package_name}") } Loading app/src/main/java/foundation/e/apps/ui/PrivacyInfoViewModel.kt +4 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,10 @@ class PrivacyInfoViewModel @Inject constructor( } fun shouldRequestExodusReport(application: Application?): Boolean { if (application?.hasExodusPrivacyRating() == false) { return true } if (application?.isFree != true) { return false } Loading app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt +10 −2 Original line number Diff line number Diff line Loading @@ -303,9 +303,17 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { } private fun openBrowser() { val url = generateExodusUrl() val application = applicationViewModel.getApplication() val packageName = application?.package_name ?: return val url = if (application.hasExodusPrivacyRating()) { ExodusUriGenerator.buildReportUri(packageName) } else { ExodusUriGenerator.buildRequestReportUri(packageName) } val intent = Intent(Intent.ACTION_VIEW).apply { data = Uri.parse(url) data = url } if (intent.resolveActivity(requireContext().packageManager) == null) { Loading app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt +2 −17 Original line number Diff line number Diff line Loading @@ -226,7 +226,7 @@ class ApplicationListRVAdapter( appPrivacyScoreLayout.isVisible = false return } if (searchApp.ratings.privacyScore != -1.0) { if (searchApp.hasExodusPrivacyRating() && searchApp.ratings.privacyScore != -1.0) { appPrivacyScore.text = view.context.getString( R.string.privacy_rating_out_of, searchApp.ratings.privacyScore.toInt().toString() Loading Loading @@ -395,23 +395,8 @@ class ApplicationListRVAdapter( searchApp: Application, view: View ) { if (searchApp.privacyScore > -1) { showPrivacyScoreOnAvailableData(searchApp, view) } else { showPrivacyScoreAfterFetching(searchApp, view) } } private fun ApplicationListItemBinding.showPrivacyScoreOnAvailableData( searchApp: Application, view: View ) { showPrivacyScore() appPrivacyScore.text = view.context.getString( R.string.privacy_rating_out_of, searchApp.privacyScore.toString() ) } private fun ApplicationListItemBinding.showPrivacyScoreAfterFetching( searchApp: Application, Loading Loading
app/src/main/java/foundation/e/apps/data/application/data/Application.kt +4 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,10 @@ data class Application( } } } fun hasExodusPrivacyRating(): Boolean { return this.reportId.toInt() != -1 } } val Application.shareUri: Uri Loading
app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt +1 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ class AppPrivacyInfoRepositoryImpl @Inject constructor( } val reports = fetchReports(application.package_name) if (reports.isEmpty()) { if (reports.firstOrNull()?.handle != application.package_name) { return Result.error("Could not fetch reports for ${application.package_name}") } Loading
app/src/main/java/foundation/e/apps/ui/PrivacyInfoViewModel.kt +4 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,10 @@ class PrivacyInfoViewModel @Inject constructor( } fun shouldRequestExodusReport(application: Application?): Boolean { if (application?.hasExodusPrivacyRating() == false) { return true } if (application?.isFree != true) { return false } Loading
app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt +10 −2 Original line number Diff line number Diff line Loading @@ -303,9 +303,17 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { } private fun openBrowser() { val url = generateExodusUrl() val application = applicationViewModel.getApplication() val packageName = application?.package_name ?: return val url = if (application.hasExodusPrivacyRating()) { ExodusUriGenerator.buildReportUri(packageName) } else { ExodusUriGenerator.buildRequestReportUri(packageName) } val intent = Intent(Intent.ACTION_VIEW).apply { data = Uri.parse(url) data = url } if (intent.resolveActivity(requireContext().packageManager) == null) { Loading
app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt +2 −17 Original line number Diff line number Diff line Loading @@ -226,7 +226,7 @@ class ApplicationListRVAdapter( appPrivacyScoreLayout.isVisible = false return } if (searchApp.ratings.privacyScore != -1.0) { if (searchApp.hasExodusPrivacyRating() && searchApp.ratings.privacyScore != -1.0) { appPrivacyScore.text = view.context.getString( R.string.privacy_rating_out_of, searchApp.ratings.privacyScore.toInt().toString() Loading Loading @@ -395,23 +395,8 @@ class ApplicationListRVAdapter( searchApp: Application, view: View ) { if (searchApp.privacyScore > -1) { showPrivacyScoreOnAvailableData(searchApp, view) } else { showPrivacyScoreAfterFetching(searchApp, view) } } private fun ApplicationListItemBinding.showPrivacyScoreOnAvailableData( searchApp: Application, view: View ) { showPrivacyScore() appPrivacyScore.text = view.context.getString( R.string.privacy_rating_out_of, searchApp.privacyScore.toString() ) } private fun ApplicationListItemBinding.showPrivacyScoreAfterFetching( searchApp: Application, Loading