summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer/components
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2019-08-23 14:58:16 +0200
committerAndrej Mihajlov <and@mullvad.net>2019-08-23 14:58:16 +0200
commitd0291326facf5d4e693e03e6496c37de4421fe97 (patch)
tree5df33a1145732e4caadb9bfdd781baf170266697 /gui/src/renderer/components
parent7f6d9d95e29362ab5d79a36e831df20f99c98d3c (diff)
parent40f5ed17a8b23d9f0cfe8f9f0a3faddb3cc8b8ad (diff)
downloadmullvadvpn-d0291326facf5d4e693e03e6496c37de4421fe97.tar.xz
mullvadvpn-d0291326facf5d4e693e03e6496c37de4421fe97.zip
Merge branch 'prevent-opening-multiple-report-logs'
Diffstat (limited to 'gui/src/renderer/components')
-rw-r--r--gui/src/renderer/components/Support.tsx50
-rw-r--r--gui/src/renderer/components/SupportStyles.tsx1
2 files changed, 33 insertions, 18 deletions
diff --git a/gui/src/renderer/components/Support.tsx b/gui/src/renderer/components/Support.tsx
index fd9241bbf8..c3b7d42993 100644
--- a/gui/src/renderer/components/Support.tsx
+++ b/gui/src/renderer/components/Support.tsx
@@ -25,6 +25,7 @@ interface ISupportState {
message: string;
savedReport?: string;
sendState: SendState;
+ disableActions: boolean;
}
interface ISupportProps {
@@ -46,6 +47,7 @@ export default class Support extends Component<ISupportProps, ISupportState> {
message: '',
savedReport: undefined,
sendState: SendState.Initial,
+ disableActions: false,
};
private collectLogPromise?: Promise<string>;
@@ -74,13 +76,15 @@ export default class Support extends Component<ISupportProps, ISupportState> {
});
};
- public onViewLog = async (): Promise<void> => {
- try {
- const reportPath = await this.collectLog();
- this.props.viewLog(reportPath);
- } catch (error) {
- // TODO: handle error
- }
+ public onViewLog = () => {
+ this.performWithActionsDisabled(async () => {
+ try {
+ const reportPath = await this.collectLog();
+ this.props.viewLog(reportPath);
+ } catch (error) {
+ // TODO: handle error
+ }
+ });
};
public onSend = async (): Promise<void> => {
@@ -88,14 +92,10 @@ export default class Support extends Component<ISupportProps, ISupportState> {
case SendState.Initial:
if (this.state.email.length === 0) {
this.setState({ sendState: SendState.Confirm });
+ break;
} else {
- try {
- await this.sendReport();
- } catch (error) {
- // No-op
- }
+ // fallthrough
}
- return Promise.resolve();
case SendState.Confirm:
try {
@@ -103,13 +103,11 @@ export default class Support extends Component<ISupportProps, ISupportState> {
} catch (error) {
// No-op
}
- return Promise.resolve();
+ break;
default:
break;
}
-
- return Promise.resolve();
};
public onCancelConfirmation = () => {
@@ -257,13 +255,18 @@ export default class Support extends Component<ISupportProps, ISupportState> {
</View>
</View>
<View style={styles.support__footer}>
- <AppButton.BlueButton style={styles.view_logs_button} onPress={this.onViewLog}>
+ <AppButton.BlueButton
+ style={styles.view_logs_button}
+ onPress={this.onViewLog}
+ disabled={this.state.disableActions}>
<AppButton.Label>
{messages.pgettext('support-view', 'View app logs')}
</AppButton.Label>
<AppButton.Icon source="icon-extLink" height={16} width={16} />
</AppButton.BlueButton>
- <AppButton.GreenButton disabled={!this.validate()} onPress={this.onSend}>
+ <AppButton.GreenButton
+ disabled={!this.validate() || this.state.disableActions}
+ onPress={this.onSend}>
{messages.pgettext('support-view', 'Send')}
</AppButton.GreenButton>
</View>
@@ -371,6 +374,17 @@ export default class Support extends Component<ISupportProps, ISupportState> {
private handleEditMessage = () => {
this.setState({ sendState: SendState.Initial });
};
+
+ private performWithActionsDisabled(work: () => Promise<void>) {
+ this.setState({ disableActions: true }, async () => {
+ try {
+ await work();
+ } catch {
+ // TODO: handle error
+ }
+ this.setState({ disableActions: false });
+ });
+ }
}
interface IConfirmNoEmailDialogProps {
diff --git a/gui/src/renderer/components/SupportStyles.tsx b/gui/src/renderer/components/SupportStyles.tsx
index bcc05b7b50..05fd89bfd0 100644
--- a/gui/src/renderer/components/SupportStyles.tsx
+++ b/gui/src/renderer/components/SupportStyles.tsx
@@ -109,6 +109,7 @@ export default {
fontFamily: 'DINPro',
fontSize: 34,
fontWeight: '900',
+ lineHeight: 38,
letterSpacing: -0.9,
color: colors.white,
marginBottom: 4,