From 6423f7ce03b68fd219fbd226def68a809e1c5494 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 11 Apr 2017 18:59:22 +0100 Subject: [PATCH] rageshake: factor out submission to a separate file This will mean we can load it asyncronously in future, if we want. --- .../views/dialogs/BugReportDialog.js | 4 +- src/vector/rageshake.js | 61 -------------- src/vector/submit-rageshake.js | 81 +++++++++++++++++++ 3 files changed, 83 insertions(+), 63 deletions(-) create mode 100644 src/vector/submit-rageshake.js diff --git a/src/components/views/dialogs/BugReportDialog.js b/src/components/views/dialogs/BugReportDialog.js index c03c9b43..62424cb1 100644 --- a/src/components/views/dialogs/BugReportDialog.js +++ b/src/components/views/dialogs/BugReportDialog.js @@ -16,7 +16,7 @@ limitations under the License. import React from 'react'; import sdk from 'matrix-react-sdk'; -import rageshake from '../../../vector/rageshake'; +import submit_rageshake from '../../../vector/submit-rageshake'; import SdkConfig from 'matrix-react-sdk/lib/SdkConfig'; export default class BugReportDialog extends React.Component { @@ -48,7 +48,7 @@ export default class BugReportDialog extends React.Component { return; } this.setState({ busy: true, err: null }); - rageshake.sendBugReport( + submit_rageshake( SdkConfig.get().bug_report_endpoint_url, userText, sendLogs, ).then(() => { this.setState({ busy: false }); diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 711cc298..feaec26d 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; -import request from "browser-request"; import q from "q"; // This module contains all the code needed to log the console, persist it to @@ -454,63 +452,4 @@ module.exports = { }]; } }, - - /** - * Send a bug report. - * @param {string} bugReportEndpoint HTTP url to send the report to - * @param {string} userText Any additional user input. - * @param {boolean} sendLogs True to send logs - * @return {Promise} Resolved when the bug report is sent. - */ - sendBugReport: async function(bugReportEndpoint, userText, sendLogs) { - if (!bugReportEndpoint) { - throw new Error("No bug report endpoint has been set."); - } - - let version = "UNKNOWN"; - try { - version = await PlatformPeg.get().getAppVersion(); - } - catch (err) {} // PlatformPeg already logs this. - - let userAgent = "UNKNOWN"; - if (window.navigator && window.navigator.userAgent) { - userAgent = window.navigator.userAgent; - } - - console.log("Sending bug report."); - - let logs = []; - if (sendLogs) { - logs = await this.getLogsForReport(); - } - - await q.Promise((resolve, reject) => { - request({ - method: "POST", - url: bugReportEndpoint, - body: { - logs: logs, - text: ( - userText || "User did not supply any additional text." - ), - app: 'riot-web', - version: version, - user_agent: userAgent, - }, - json: true, - timeout: 5 * 60 * 1000, - }, (err, res) => { - if (err) { - reject(err); - return; - } - if (res.status < 200 || res.status >= 400) { - reject(new Error(`HTTP ${res.status}`)); - return; - } - resolve(); - }) - }); - } }; diff --git a/src/vector/submit-rageshake.js b/src/vector/submit-rageshake.js new file mode 100644 index 00000000..87188821 --- /dev/null +++ b/src/vector/submit-rageshake.js @@ -0,0 +1,81 @@ +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import q from "q"; +import request from "browser-request"; + +import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; + +import rageshake from './rageshake' + +/** + * Send a bug report. + * @param {string} bugReportEndpoint HTTP url to send the report to + * @param {string} userText Any additional user input. + * @param {boolean} sendLogs True to send logs + * @return {Promise} Resolved when the bug report is sent. + */ +export default async function sendBugReport(bugReportEndpoint, userText, sendLogs) { + if (!bugReportEndpoint) { + throw new Error("No bug report endpoint has been set."); + } + + let version = "UNKNOWN"; + try { + version = await PlatformPeg.get().getAppVersion(); + } + catch (err) {} // PlatformPeg already logs this. + + let userAgent = "UNKNOWN"; + if (window.navigator && window.navigator.userAgent) { + userAgent = window.navigator.userAgent; + } + + console.log("Sending bug report."); + + let logs = []; + if (sendLogs) { + logs = await rageshake.getLogsForReport(); + } + + await q.Promise((resolve, reject) => { + request({ + method: "POST", + url: bugReportEndpoint, + body: { + logs: logs, + text: ( + userText || "User did not supply any additional text." + ), + app: 'riot-web', + version: version, + user_agent: userAgent, + }, + json: true, + timeout: 5 * 60 * 1000, + }, (err, res) => { + if (err) { + reject(err); + return; + } + if (res.status < 200 || res.status >= 400) { + reject(new Error(`HTTP ${res.status}`)); + return; + } + resolve(); + }) + }); +}