summaryrefslogtreecommitdiffhomepage
path: root/gui/src
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src')
-rw-r--r--gui/src/main/daemon-rpc.ts2
-rw-r--r--gui/src/main/index.ts1
-rw-r--r--gui/src/renderer/components/CustomDnsSettings.tsx10
-rw-r--r--gui/src/renderer/components/Preferences.tsx29
-rw-r--r--gui/src/renderer/redux/settings/reducers.ts1
-rw-r--r--gui/src/shared/daemon-rpc-types.ts1
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;
};
}