From 3823ac7f789c0a532d748844a280be9f12342f69 Mon Sep 17 00:00:00 2001 From: Zhongyi Tong Date: Wed, 21 Jun 2017 15:56:05 +0800 Subject: [PATCH 1/5] Improve network error display. --- app/renderer/css/network.css | 42 ++++++++++++++++++++++++++ app/renderer/img/zulip_network.png | Bin 0 -> 27803 bytes app/renderer/js/components/webview.js | 2 +- app/renderer/js/main.js | 10 ++++++ app/renderer/js/pages/network.js | 20 ++++++++++++ app/renderer/network.html | 21 +++++++++++++ 6 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 app/renderer/css/network.css create mode 100644 app/renderer/img/zulip_network.png create mode 100644 app/renderer/js/pages/network.js create mode 100644 app/renderer/network.html diff --git a/app/renderer/css/network.css b/app/renderer/css/network.css new file mode 100644 index 00000000..942c3373 --- /dev/null +++ b/app/renderer/css/network.css @@ -0,0 +1,42 @@ +html, body { + margin: 0; + cursor: default; + font-size: 14px; + color: #333; + background: #fff; + user-select:none; +} + +#content { + display: flex; + flex-direction: column; + font-family: "Trebuchet MS", Helvetica, sans-serif; + margin: 100px 200px; + text-align: center; +} + +#title { + font-size: 24px; + font-weight: bold; + margin: 20px 0; +} + +#description { + font-size: 16px; +} + +#reconnect { + font-size: 16px; + background: #009688; + color: #fff; + width: 84px; + height: 32px; + border-radius: 5px; + line-height: 32px; + margin: 20px auto 0; + cursor: pointer; +} + +#reconnect:hover { + opacity: 0.8; +} \ No newline at end of file diff --git a/app/renderer/img/zulip_network.png b/app/renderer/img/zulip_network.png new file mode 100644 index 0000000000000000000000000000000000000000..51574c7c88db7690f4e1d89bfe5c0250ea2a4ccc GIT binary patch literal 27803 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 buK>eW3$N5XHNp{(@B= 0); if (hasConnectivityErr) { console.error('error', errorDescription); - this.checkConnectivity(); + this.props.onNetworkError(); } }); diff --git a/app/renderer/js/main.js b/app/renderer/js/main.js index 8528f6b0..bc8be4f8 100644 --- a/app/renderer/js/main.js +++ b/app/renderer/js/main.js @@ -54,6 +54,7 @@ class ServerManagerView { isActive: () => { return index === this.activeTabIndex; }, + onNetworkError: this.openNetworkTroubleshooting.bind(this), onTitleChange: this.updateBadge.bind(this), nodeIntegration: false }) @@ -89,6 +90,7 @@ class ServerManagerView { isActive: () => { return this.functionalTabs[tabProps.name] === this.activeTabIndex; }, + onNetworkError: this.openNetworkTroubleshooting.bind(this), onTitleChange: this.updateBadge.bind(this), nodeIntegration: true }) @@ -113,6 +115,14 @@ class ServerManagerView { }); } + openNetworkTroubleshooting() { + this.openFunctionalTab({ + name: 'Network Troubleshooting', + materialIcon: 'network_check', + url: `file://${__dirname}/network.html` + }); + } + activateTab(index, hideOldTab = true) { if (this.tabs[index].loading) { return; diff --git a/app/renderer/js/pages/network.js b/app/renderer/js/pages/network.js new file mode 100644 index 00000000..cc8e45eb --- /dev/null +++ b/app/renderer/js/pages/network.js @@ -0,0 +1,20 @@ +'use strict'; + +const {ipcRenderer} = require('electron'); + +class NetworkTroubleshootingView { + constructor(errorDescription) { + this.$reconnectButton = document.getElementById('reconnect'); + } + + init() { + this.$reconnectButton.addEventListener('click', () => { + ipcRenderer.send('reload-main'); + }); + } +} + +window.onload = () => { + const networkTroubleshootingView = new NetworkTroubleshootingView(); + networkTroubleshootingView.init(); +}; diff --git a/app/renderer/network.html b/app/renderer/network.html new file mode 100644 index 00000000..c4c722ca --- /dev/null +++ b/app/renderer/network.html @@ -0,0 +1,21 @@ + + + + + + Zulip - Network Troubleshooting + + + +
+
+
Zulip can't connect
+
+
Your computer seems to be offline.
+
We will keep trying to reconnect, or you can try now.
+
+
Try now
+
+ + + From 937a193a61350cdbbc9aa20ae166c44e58370372 Mon Sep 17 00:00:00 2001 From: Zhongyi Tong Date: Wed, 21 Jun 2017 15:59:09 +0800 Subject: [PATCH 2/5] Fix linting errors. --- app/renderer/js/pages/network.js | 2 +- app/renderer/js/tray.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/renderer/js/pages/network.js b/app/renderer/js/pages/network.js index cc8e45eb..b573f99a 100644 --- a/app/renderer/js/pages/network.js +++ b/app/renderer/js/pages/network.js @@ -3,7 +3,7 @@ const {ipcRenderer} = require('electron'); class NetworkTroubleshootingView { - constructor(errorDescription) { + constructor() { this.$reconnectButton = document.getElementById('reconnect'); } diff --git a/app/renderer/js/tray.js b/app/renderer/js/tray.js index c5b63005..26ed0b00 100644 --- a/app/renderer/js/tray.js +++ b/app/renderer/js/tray.js @@ -118,7 +118,7 @@ const createTray = function () { label: 'About', click() { // We need to focus the main window first - ipcRenderer.send('focus-app'); + ipcRenderer.send('focus-app'); sendAction('open-about'); } }, @@ -137,7 +137,7 @@ const createTray = function () { { label: 'Manage Zulip servers', click() { - ipcRenderer.send('focus-app'); + ipcRenderer.send('focus-app'); sendAction('open-settings'); } }, From 1511ce4610c4541acd070d775ec33207f4356c1f Mon Sep 17 00:00:00 2001 From: Zhongyi Tong Date: Wed, 21 Jun 2017 20:10:58 +0800 Subject: [PATCH 3/5] Reconnect app when network comes back. --- app/renderer/js/main.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/renderer/js/main.js b/app/renderer/js/main.js index bc8be4f8..744a03cb 100644 --- a/app/renderer/js/main.js +++ b/app/renderer/js/main.js @@ -198,3 +198,7 @@ window.onload = () => { const serverManagerView = new ServerManagerView(); serverManagerView.init(); }; + +window.addEventListener('online', () => { + ipcRenderer.send('reload-main'); +}); \ No newline at end of file From f96dd6e6bc4e696b2e079ede22124b47888a8557 Mon Sep 17 00:00:00 2001 From: Zhongyi Tong Date: Wed, 21 Jun 2017 20:11:58 +0800 Subject: [PATCH 4/5] Fix linting error. --- app/renderer/js/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/renderer/js/main.js b/app/renderer/js/main.js index 744a03cb..3a485643 100644 --- a/app/renderer/js/main.js +++ b/app/renderer/js/main.js @@ -201,4 +201,4 @@ window.onload = () => { window.addEventListener('online', () => { ipcRenderer.send('reload-main'); -}); \ No newline at end of file +}); From 98e73f807c8f3911328966b0fbda2a777d90e61d Mon Sep 17 00:00:00 2001 From: Zhongyi Tong Date: Wed, 21 Jun 2017 20:47:40 +0800 Subject: [PATCH 5/5] Reload the app when users try to resume the connection. --- app/renderer/js/preload.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/renderer/js/preload.js b/app/renderer/js/preload.js index 794a446b..c4027012 100644 --- a/app/renderer/js/preload.js +++ b/app/renderer/js/preload.js @@ -1,4 +1,5 @@ 'use strict'; +const {ipcRenderer} = require('electron'); const {spellChecker} = require('./spellchecker'); const logout = () => { @@ -30,4 +31,9 @@ process.once('loaded', () => { document.addEventListener('DOMContentLoaded', () => { // Init spellchecker spellChecker(); + + // redirect users to network troubleshooting page + document.querySelector('.restart_get_events_button').addEventListener('click', () => { + ipcRenderer.send('reload-main'); + }); });