diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt index 3ff4719b59af..41751ad02ded 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt @@ -113,6 +113,7 @@ private fun PreviewVpnSettings() { onToggleBlockMalware = {}, onToggleBlockAdultContent = {}, onToggleBlockGambling = {}, + onToggleBlockSocialMedia = {}, onDnsClick = {}, onDnsInputChange = {}, onSaveDnsClick = {}, @@ -156,6 +157,7 @@ fun VpnSettingsScreen( onToggleBlockMalware: (Boolean) -> Unit = {}, onToggleBlockAdultContent: (Boolean) -> Unit = {}, onToggleBlockGambling: (Boolean) -> Unit = {}, + onToggleBlockSocialMedia: (Boolean) -> Unit = {}, onDnsClick: (index: Int?) -> Unit = {}, onDnsInputChange: (String) -> Unit = {}, onSaveDnsClick: () -> Unit = {}, @@ -396,6 +398,17 @@ fun VpnSettingsScreen( ) } + itemWithDivider { + NormalSwitchComposeCell( + title = stringResource(R.string.block_social_media_title), + isToggled = uiState.contentBlockersOptions.blockSocialMedia, + isEnabled = !uiState.isCustomDnsEnabled, + onCellClicked = { onToggleBlockSocialMedia(it) }, + background = MaterialTheme.colorScheme.secondaryContainer, + startPadding = Dimens.indentedCellStartPadding + ) + } + if (uiState.isCustomDnsEnabled) { item { ContentBlockersDisableModeCellSubtitle( diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/VpnSettingsFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/VpnSettingsFragment.kt index bf799d887a7c..e3ed6c469dbd 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/VpnSettingsFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/VpnSettingsFragment.kt @@ -38,6 +38,7 @@ class VpnSettingsFragment : BaseFragment() { onToggleBlockMalware = vm::onToggleBlockMalware, onToggleBlockAdultContent = vm::onToggleBlockAdultContent, onToggleBlockGambling = vm::onToggleBlockGambling, + onToggleBlockSocialMedia = vm::onToggleBlockSocialMedia, onDnsClick = vm::onDnsClick, onDnsInputChange = vm::onDnsInputChange, onSaveDnsClick = vm::onSaveDnsClick, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt index 7d3344d9487d..2c8e30f2b479 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt @@ -290,6 +290,13 @@ class VpnSettingsViewModel( showApplySettingChangesWarningToast() } + fun onToggleBlockSocialMedia(isEnabled: Boolean) { + updateDefaultDnsOptionsViaRepository( + vmState.value.contentBlockersOptions.copy(blockSocialMedia = isEnabled) + ) + showApplySettingChangesWarningToast() + } + fun onRemoveDnsClick() = viewModelScope.launch(dispatcher) { val dialog = diff --git a/android/lib/resource/src/main/res/values/strings.xml b/android/lib/resource/src/main/res/values/strings.xml index 6b1486fe5623..988b343c19a2 100644 --- a/android/lib/resource/src/main/res/values/strings.xml +++ b/android/lib/resource/src/main/res/values/strings.xml @@ -180,6 +180,7 @@ Warning: The malware blocker is not an anti-virus and should not be treated as such, this is just an extra layer of protection. Gambling Adult content + Social media %s below to activate these settings.]]> diff --git a/gui/locales/messages.pot b/gui/locales/messages.pot index 26035a4321a8..13a9d8d9112d 100644 --- a/gui/locales/messages.pot +++ b/gui/locales/messages.pot @@ -1833,3 +1833,6 @@ msgid "an hour ago" msgid_plural "%d hours ago" msgstr[0] "" msgstr[1] "" + +msgid "Social media" +msgstr ""