summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-03-26 14:42:41 +0100
committerOskar Nyberg <oskar@mullvad.net>2020-03-26 14:42:41 +0100
commite3148ff202e8f1d66e142c096d01f6686673eafa (patch)
treeb3a1953886ca79f6360b898f3919c4783761c3ee
parent72f19b1f69b0e02220b8517abcc27f229afc5534 (diff)
parente7386424e3dca92caf225b50b4c5a0ba18281cca (diff)
downloadmullvadvpn-e3148ff202e8f1d66e142c096d01f6686673eafa.tar.xz
mullvadvpn-e3148ff202e8f1d66e142c096d01f6686673eafa.zip
Merge branch 'add-beta-channel-button'
-rw-r--r--gui/src/main/daemon-rpc.ts4
-rw-r--r--gui/src/main/index.ts3
-rw-r--r--gui/src/renderer/app.tsx6
-rw-r--r--gui/src/renderer/components/Preferences.tsx20
-rw-r--r--gui/src/renderer/containers/PreferencesPage.tsx4
-rw-r--r--gui/src/shared/ipc-event-channel.ts5
6 files changed, 42 insertions, 0 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts
index 494b9d9b4a..b4147ff821 100644
--- a/gui/src/main/daemon-rpc.ts
+++ b/gui/src/main/daemon-rpc.ts
@@ -464,6 +464,10 @@ export class DaemonRpc {
await this.transport.send('set_allow_lan', [allowLan]);
}
+ public async setShowBetaReleases(showBetaReleases: boolean): Promise<void> {
+ await this.transport.send('set_show_beta_releases', [showBetaReleases]);
+ }
+
public async setEnableIpv6(enableIpv6: boolean): Promise<void> {
await this.transport.send('set_enable_ipv6', [enableIpv6]);
}
diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts
index 5b44f2fa8c..0f1082e0fa 100644
--- a/gui/src/main/index.ts
+++ b/gui/src/main/index.ts
@@ -920,6 +920,9 @@ class ApplicationMain {
IpcMainEventChannel.settings.handleAllowLan((allowLan: boolean) =>
this.daemonRpc.setAllowLan(allowLan),
);
+ IpcMainEventChannel.settings.handleShowBetaReleases((showBetaReleases: boolean) =>
+ this.daemonRpc.setShowBetaReleases(showBetaReleases),
+ );
IpcMainEventChannel.settings.handleEnableIpv6((enableIpv6: boolean) =>
this.daemonRpc.setEnableIpv6(enableIpv6),
);
diff --git a/gui/src/renderer/app.tsx b/gui/src/renderer/app.tsx
index 7f77759154..0758f6496a 100644
--- a/gui/src/renderer/app.tsx
+++ b/gui/src/renderer/app.tsx
@@ -311,6 +311,12 @@ export default class AppRenderer {
actions.settings.updateAllowLan(allowLan);
}
+ public async setShowBetaReleases(showBetaReleases: boolean) {
+ const actions = this.reduxActions;
+ await IpcRendererEventChannel.settings.setShowBetaReleases(showBetaReleases);
+ actions.settings.updateShowBetaReleases(showBetaReleases);
+ }
+
public async setEnableIpv6(enableIpv6: boolean) {
const actions = this.reduxActions;
await IpcRendererEventChannel.settings.setEnableIpv6(enableIpv6);
diff --git a/gui/src/renderer/components/Preferences.tsx b/gui/src/renderer/components/Preferences.tsx
index d2d1709abc..54d492ce7e 100644
--- a/gui/src/renderer/components/Preferences.tsx
+++ b/gui/src/renderer/components/Preferences.tsx
@@ -18,6 +18,7 @@ export interface IProps {
autoStart: boolean;
autoConnect: boolean;
allowLan: boolean;
+ showBetaReleases?: boolean;
enableSystemNotifications: boolean;
monochromaticIcon: boolean;
startMinimized: boolean;
@@ -26,6 +27,7 @@ export interface IProps {
setEnableSystemNotifications: (flag: boolean) => void;
setAutoConnect: (autoConnect: boolean) => void;
setAllowLan: (allowLan: boolean) => void;
+ setShowBetaReleases: (showBetaReleases: boolean) => void;
setStartMinimized: (startMinimized: boolean) => void;
setMonochromaticIcon: (monochromaticIcon: boolean) => void;
onClose: () => void;
@@ -160,6 +162,24 @@ export default class Preferences extends Component<IProps> {
) : (
undefined
)}
+
+ <Cell.Container>
+ <Cell.Label>
+ {messages.pgettext('preferences-view', 'Beta program')}
+ </Cell.Label>
+ <Cell.Switch
+ isOn={this.props.showBetaReleases || false}
+ onChange={this.props.setShowBetaReleases}
+ />
+ </Cell.Container>
+ <Cell.Footer>
+ <Cell.FooterText>
+ {messages.pgettext(
+ 'preferences-view',
+ 'Enable to get notified when new beta versions of the app are released.',
+ )}
+ </Cell.FooterText>
+ </Cell.Footer>
</View>
</NavigationScrollbars>
</View>
diff --git a/gui/src/renderer/containers/PreferencesPage.tsx b/gui/src/renderer/containers/PreferencesPage.tsx
index 299d5799cb..131d85a1ae 100644
--- a/gui/src/renderer/containers/PreferencesPage.tsx
+++ b/gui/src/renderer/containers/PreferencesPage.tsx
@@ -10,6 +10,7 @@ import { IReduxState, ReduxDispatch } from '../redux/store';
const mapStateToProps = (state: IReduxState) => ({
autoStart: state.settings.autoStart,
allowLan: state.settings.allowLan,
+ showBetaReleases: state.settings.showBetaReleases,
autoConnect: state.settings.guiSettings.autoConnect,
enableSystemNotifications: state.settings.guiSettings.enableSystemNotifications,
monochromaticIcon: state.settings.guiSettings.monochromaticIcon,
@@ -38,6 +39,9 @@ const mapDispatchToProps = (dispatch: ReduxDispatch, props: IAppContext) => {
setAllowLan: (allowLan: boolean) => {
consumePromise(props.app.setAllowLan(allowLan));
},
+ setShowBetaReleases: (showBetaReleases: boolean) => {
+ consumePromise(props.app.setShowBetaReleases(showBetaReleases));
+ },
setStartMinimized: (startMinimized: boolean) => {
props.app.setStartMinimized(startMinimized);
},
diff --git a/gui/src/shared/ipc-event-channel.ts b/gui/src/shared/ipc-event-channel.ts
index 3a24d3f46e..9931ecf56b 100644
--- a/gui/src/shared/ipc-event-channel.ts
+++ b/gui/src/shared/ipc-event-channel.ts
@@ -67,6 +67,7 @@ interface ITunnelHandlers extends ISender<TunnelState> {
interface ISettingsMethods extends IReceiver<ISettings> {
setAllowLan(allowLan: boolean): Promise<void>;
+ setShowBetaReleases(showBetaReleases: boolean): Promise<void>;
setEnableIpv6(enableIpv6: boolean): Promise<void>;
setBlockWhenDisconnected(block: boolean): Promise<void>;
setBridgeState(state: BridgeState): Promise<void>;
@@ -78,6 +79,7 @@ interface ISettingsMethods extends IReceiver<ISettings> {
interface ISettingsHandlers extends ISender<ISettings> {
handleAllowLan(fn: (allowLan: boolean) => Promise<void>): void;
+ handleShowBetaReleases(fn: (showBetaReleases: boolean) => Promise<void>): void;
handleEnableIpv6(fn: (enableIpv6: boolean) => Promise<void>): void;
handleBlockWhenDisconnected(fn: (block: boolean) => Promise<void>): void;
handleBridgeState(fn: (state: BridgeState) => Promise<void>): void;
@@ -158,6 +160,7 @@ const RECONNECT_TUNNEL = 'reconnect-tunnel';
const SETTINGS_CHANGED = 'settings-changed';
const SET_ALLOW_LAN = 'set-allow-lan';
+const SET_SHOW_BETA_RELEASES = 'set-show-beta-releases';
const SET_ENABLE_IPV6 = 'set-enable-ipv6';
const SET_BLOCK_WHEN_DISCONNECTED = 'set-block-when-disconnected';
const SET_BRIDGE_STATE = 'set-bridge-state';
@@ -235,6 +238,7 @@ export class IpcRendererEventChannel {
public static settings: ISettingsMethods = {
listen: listen(SETTINGS_CHANGED),
setAllowLan: requestSender(SET_ALLOW_LAN),
+ setShowBetaReleases: requestSender(SET_SHOW_BETA_RELEASES),
setEnableIpv6: requestSender(SET_ENABLE_IPV6),
setBlockWhenDisconnected: requestSender(SET_BLOCK_WHEN_DISCONNECTED),
setBridgeState: requestSender(SET_BRIDGE_STATE),
@@ -333,6 +337,7 @@ export class IpcMainEventChannel {
public static settings: ISettingsHandlers = {
notify: sender(SETTINGS_CHANGED),
handleAllowLan: requestHandler(SET_ALLOW_LAN),
+ handleShowBetaReleases: requestHandler(SET_SHOW_BETA_RELEASES),
handleEnableIpv6: requestHandler(SET_ENABLE_IPV6),
handleBlockWhenDisconnected: requestHandler(SET_BLOCK_WHEN_DISCONNECTED),
handleBridgeState: requestHandler(SET_BRIDGE_STATE),