diff options
Diffstat (limited to 'gui/src')
| -rw-r--r-- | gui/src/main/daemon-rpc.ts | 2 | ||||
| -rw-r--r-- | gui/src/main/index.ts | 1 | ||||
| -rw-r--r-- | gui/src/renderer/components/CustomDnsSettings.tsx | 10 | ||||
| -rw-r--r-- | gui/src/renderer/components/Preferences.tsx | 29 | ||||
| -rw-r--r-- | gui/src/renderer/redux/settings/reducers.ts | 1 | ||||
| -rw-r--r-- | gui/src/shared/daemon-rpc-types.ts | 1 |
6 files changed, 42 insertions, 2 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts index edfc3ec4cd..32fc7adccf 100644 --- a/gui/src/main/daemon-rpc.ts +++ b/gui/src/main/daemon-rpc.ts @@ -463,6 +463,7 @@ export class DaemonRpc { const defaultOptions = new grpcTypes.DefaultDnsOptions(); defaultOptions.setBlockAds(dns.defaultOptions.blockAds); defaultOptions.setBlockTrackers(dns.defaultOptions.blockTrackers); + defaultOptions.setBlockMalware(dns.defaultOptions.blockMalware); dnsOptions.setDefaultOptions(defaultOptions); const customOptions = new grpcTypes.CustomDnsOptions(); @@ -1095,6 +1096,7 @@ function convertFromTunnelOptions(tunnelOptions: grpcTypes.TunnelOptions.AsObjec defaultOptions: { blockAds: tunnelOptions.dnsOptions?.defaultOptions?.blockAds ?? false, blockTrackers: tunnelOptions.dnsOptions?.defaultOptions?.blockTrackers ?? false, + blockMalware: tunnelOptions.dnsOptions?.defaultOptions?.blockMalware ?? false, }, customOptions: { addresses: tunnelOptions.dnsOptions?.customOptions?.addressesList ?? [], diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts index a2c49bcacc..893045f614 100644 --- a/gui/src/main/index.ts +++ b/gui/src/main/index.ts @@ -185,6 +185,7 @@ class ApplicationMain { defaultOptions: { blockAds: false, blockTrackers: false, + blockMalware: false, }, customOptions: { addresses: [], diff --git a/gui/src/renderer/components/CustomDnsSettings.tsx b/gui/src/renderer/components/CustomDnsSettings.tsx index 98f0c8f1b2..7ef7d39193 100644 --- a/gui/src/renderer/components/CustomDnsSettings.tsx +++ b/gui/src/renderer/components/CustomDnsSettings.tsx @@ -45,7 +45,10 @@ export default function CustomDnsSettings() { const featureAvailable = useMemo( () => - dns.state === 'custom' || (!dns.defaultOptions.blockAds && !dns.defaultOptions.blockTrackers), + dns.state === 'custom' || + (!dns.defaultOptions.blockAds && + !dns.defaultOptions.blockTrackers && + !dns.defaultOptions.blockMalware), [dns], ); @@ -275,6 +278,7 @@ export default function CustomDnsSettings() { function DisabledMessage() { const blockAdsFeatureName = messages.pgettext('preferences-view', 'Block ads'); const blockTrackersFeatureName = messages.pgettext('preferences-view', 'Block trackers'); + const blockMalwareFeatureName = messages.pgettext('preferences-view', 'Block malware'); const preferencesPageName = messages.pgettext('preferences-nav', 'Preferences'); // TRANSLATORS: This is displayed when either or both of the block ads/trackers settings are @@ -283,16 +287,18 @@ function DisabledMessage() { // TRANSLATORS: Available placeholders: // TRANSLATORS: %(blockAdsFeatureName)s - The name displayed next to the "Block ads" toggle. // TRANSLATORS: %(blockTrackersFeatureName)s - The name displayed next to the "Block trackers" toggle. + // TRANSLATORS: %(blockMalwareFeatureName)s - The name displayed next to the "Block malware" toggle. // TRANSLATORS: %(preferencesPageName)s - The page title showed on top in the preferences page. const customDnsDisabledMessage = messages.pgettext( 'preferences-view', - 'Disable **%(blockAdsFeatureName)s** and **%(blockTrackersFeatureName)s** (under %(preferencesPageName)s) to activate this setting.', + 'Disable **%(blockAdsFeatureName)s**, **%(blockTrackersFeatureName)s** and **%(blockMalwareFeatureName)s** (under %(preferencesPageName)s) to activate this setting.', ); return formatMarkdown( sprintf(customDnsDisabledMessage, { blockAdsFeatureName, blockTrackersFeatureName, + blockMalwareFeatureName, preferencesPageName, }), ); diff --git a/gui/src/renderer/components/Preferences.tsx b/gui/src/renderer/components/Preferences.tsx index 4f66b60d4a..7adcfcf3e4 100644 --- a/gui/src/renderer/components/Preferences.tsx +++ b/gui/src/renderer/components/Preferences.tsx @@ -167,6 +167,25 @@ export default class Preferences extends React.Component<IProps, IState> { /> </AriaInput> </Cell.Container> + </AriaInputGroup> + <StyledSeparator /> + <AriaInputGroup> + <Cell.Container disabled={this.props.dns.state === 'custom'}> + <AriaLabel> + <Cell.InputLabel> + {messages.pgettext('preferences-view', 'Block malware')} + </Cell.InputLabel> + </AriaLabel> + <AriaInput> + <Cell.Switch + isOn={ + this.props.dns.state === 'default' && + this.props.dns.defaultOptions.blockMalware + } + onChange={this.setBlockMalware} + /> + </AriaInput> + </Cell.Container> {this.props.dns.state === 'custom' && <CustomDnsEnabledFooter />} </AriaInputGroup> @@ -381,6 +400,16 @@ export default class Preferences extends React.Component<IProps, IState> { }); }; + private setBlockMalware = async (enabled: boolean) => { + await this.props.setDnsOptions({ + ...this.props.dns, + defaultOptions: { + ...this.props.dns.defaultOptions, + blockMalware: enabled, + }, + }); + }; + private showKillSwitchInfo = () => { this.setState({ showKillSwitchInfo: true }); }; diff --git a/gui/src/renderer/redux/settings/reducers.ts b/gui/src/renderer/redux/settings/reducers.ts index 5ac19cadf6..401edaf5c4 100644 --- a/gui/src/renderer/redux/settings/reducers.ts +++ b/gui/src/renderer/redux/settings/reducers.ts @@ -190,6 +190,7 @@ const initialState: ISettingsReduxState = { defaultOptions: { blockAds: false, blockTrackers: false, + blockMalware: false, }, customOptions: { addresses: [], diff --git a/gui/src/shared/daemon-rpc-types.ts b/gui/src/shared/daemon-rpc-types.ts index 3f026b032c..472742db71 100644 --- a/gui/src/shared/daemon-rpc-types.ts +++ b/gui/src/shared/daemon-rpc-types.ts @@ -291,6 +291,7 @@ export interface IDnsOptions { defaultOptions: { blockAds: boolean; blockTrackers: boolean; + blockMalware: boolean; }; } |
