summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-12-09 16:31:50 +0100
committerOskar Nyberg <oskar@mullvad.net>2020-12-10 11:30:31 +0100
commit6a8cf020b3a561b28773831fc2cef4066d445884 (patch)
tree98b494619e4ddde3949011f06082ef48e493b04b /gui/src/renderer
parentae3cae40c16b01683b2a562ac48799699c711ca2 (diff)
downloadmullvadvpn-6a8cf020b3a561b28773831fc2cef4066d445884.tar.xz
mullvadvpn-6a8cf020b3a561b28773831fc2cef4066d445884.zip
Move problem report ipc calls to ipc-event-channel
Diffstat (limited to 'gui/src/renderer')
-rw-r--r--gui/src/renderer/app.tsx12
-rw-r--r--gui/src/renderer/containers/SupportPage.tsx10
-rw-r--r--gui/src/renderer/lib/problem-report.ts53
3 files changed, 17 insertions, 58 deletions
diff --git a/gui/src/renderer/app.tsx b/gui/src/renderer/app.tsx
index a16718945c..091aa6137e 100644
--- a/gui/src/renderer/app.tsx
+++ b/gui/src/renderer/app.tsx
@@ -424,6 +424,18 @@ export default class AppRenderer {
consumePromise(IpcRendererEventChannel.splitTunneling.launchApplication(application));
}
+ public collectProblemReport(toRedact: string[]): Promise<string> {
+ return IpcRendererEventChannel.problemReport.collectLogs(toRedact);
+ }
+
+ public async sendProblemReport(
+ email: string,
+ message: string,
+ savedReport: string,
+ ): Promise<void> {
+ await IpcRendererEventChannel.problemReport.sendReport({ email, message, savedReport });
+ }
+
public getPreferredLocaleList(): IPreferredLocaleDescriptor[] {
return [
{
diff --git a/gui/src/renderer/containers/SupportPage.tsx b/gui/src/renderer/containers/SupportPage.tsx
index d77ec3e421..e3e5ee7d4f 100644
--- a/gui/src/renderer/containers/SupportPage.tsx
+++ b/gui/src/renderer/containers/SupportPage.tsx
@@ -4,7 +4,7 @@ import { RouteComponentProps, withRouter } from 'react-router';
import { bindActionCreators } from 'redux';
import consumePromise from '../../shared/promise';
import Support from '../components/Support';
-import { collectProblemReport, sendProblemReport } from '../lib/problem-report';
+import withAppContext, { IAppContext } from '../context';
import { IReduxState, ReduxDispatch } from '../redux/store';
import supportActions from '../redux/support/actions';
@@ -16,7 +16,7 @@ const mapStateToProps = (state: IReduxState) => ({
outdatedVersion: state.version.suggestedUpgrade ? true : false,
});
-const mapDispatchToProps = (dispatch: ReduxDispatch, props: RouteComponentProps) => {
+const mapDispatchToProps = (dispatch: ReduxDispatch, props: IAppContext & RouteComponentProps) => {
const { saveReportForm, clearReportForm } = bindActionCreators(supportActions, dispatch);
return {
@@ -28,10 +28,10 @@ const mapDispatchToProps = (dispatch: ReduxDispatch, props: RouteComponentProps)
},
saveReportForm,
clearReportForm,
- collectProblemReport,
- sendProblemReport,
+ collectProblemReport: props.app.collectProblemReport,
+ sendProblemReport: props.app.sendProblemReport,
onExternalLink: (url: string) => shell.openExternal(url),
};
};
-export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Support));
+export default withAppContext(withRouter(connect(mapStateToProps, mapDispatchToProps)(Support)));
diff --git a/gui/src/renderer/lib/problem-report.ts b/gui/src/renderer/lib/problem-report.ts
deleted file mode 100644
index 7213ed8d07..0000000000
--- a/gui/src/renderer/lib/problem-report.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { ipcRenderer } from 'electron';
-import * as uuid from 'uuid';
-
-interface IErrorResult {
- success: false;
- error: string;
-}
-type CollectResult = { success: true; reportPath: string } | IErrorResult;
-type SendResult = { success: true } | IErrorResult;
-
-const collectProblemReport = (toRedact: string[]): Promise<string> => {
- return new Promise((resolve, reject) => {
- const requestId = uuid.v4();
- const responseListener = (
- _event: Electron.Event,
- responseId: string,
- result: CollectResult,
- ) => {
- if (responseId === requestId) {
- ipcRenderer.removeListener('collect-logs-reply', responseListener);
- if (result.success) {
- resolve(result.reportPath);
- } else {
- reject(new Error(result.error));
- }
- }
- };
-
- ipcRenderer.on('collect-logs-reply', responseListener);
- ipcRenderer.send('collect-logs', requestId, toRedact);
- });
-};
-
-const sendProblemReport = (email: string, message: string, savedReport: string): Promise<void> => {
- return new Promise((resolve, reject) => {
- const requestId = uuid.v4();
- const responseListener = (_event: Electron.Event, responseId: string, result: SendResult) => {
- if (requestId === responseId) {
- ipcRenderer.removeListener('send-problem-report-reply', responseListener);
- if (result.success) {
- resolve();
- } else {
- reject(new Error(result.error));
- }
- }
- };
-
- ipcRenderer.on('send-problem-report-reply', responseListener);
- ipcRenderer.send('send-problem-report', requestId, email, message, savedReport);
- });
-};
-
-export { collectProblemReport, sendProblemReport };