mirror of
https://github.com/zulip/zulip-desktop.git
synced 2025-11-03 13:33:18 +00:00
Fix network disconnectivity issue.
This commit is contained in:
@@ -3,7 +3,6 @@ const path = require('path');
|
|||||||
const electron = require('electron');
|
const electron = require('electron');
|
||||||
const {app} = require('electron');
|
const {app} = require('electron');
|
||||||
const ipc = require('electron').ipcMain;
|
const ipc = require('electron').ipcMain;
|
||||||
const {dialog} = require('electron');
|
|
||||||
const electronLocalshortcut = require('electron-localshortcut');
|
const electronLocalshortcut = require('electron-localshortcut');
|
||||||
const Configstore = require('electron-config');
|
const Configstore = require('electron-config');
|
||||||
const isDev = require('electron-is-dev');
|
const isDev = require('electron-is-dev');
|
||||||
@@ -23,43 +22,6 @@ let mainWindow;
|
|||||||
// Load this url in main window
|
// Load this url in main window
|
||||||
const mainURL = 'file://' + path.join(__dirname, '../renderer', 'main.html');
|
const mainURL = 'file://' + path.join(__dirname, '../renderer', 'main.html');
|
||||||
|
|
||||||
function checkConnectivity() {
|
|
||||||
return dialog.showMessageBox({
|
|
||||||
title: 'Internet connection problem',
|
|
||||||
message: 'No internet available! Try again?',
|
|
||||||
type: 'warning',
|
|
||||||
buttons: ['Try again', 'Close'],
|
|
||||||
defaultId: 0
|
|
||||||
}, index => {
|
|
||||||
if (index === 0) {
|
|
||||||
mainWindow.webContents.reload();
|
|
||||||
mainWindow.webContents.send('destroytray');
|
|
||||||
}
|
|
||||||
if (index === 1) {
|
|
||||||
app.quit();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const connectivityERR = [
|
|
||||||
'ERR_INTERNET_DISCONNECTED',
|
|
||||||
'ERR_PROXY_CONNECTION_FAILED',
|
|
||||||
'ERR_CONNECTION_RESET',
|
|
||||||
'ERR_NOT_CONNECTED',
|
|
||||||
'ERR_NAME_NOT_RESOLVED'
|
|
||||||
];
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
function checkConnection() {
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
|
||||||
mainWindow.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL) => {
|
|
||||||
const hasConnectivityErr = (connectivityERR.indexOf(errorDescription) >= 0);
|
|
||||||
if (hasConnectivityErr) {
|
|
||||||
console.error('error', errorDescription);
|
|
||||||
checkConnectivity();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const isAlreadyRunning = app.makeSingleInstance(() => {
|
const isAlreadyRunning = app.makeSingleInstance(() => {
|
||||||
if (mainWindow) {
|
if (mainWindow) {
|
||||||
if (mainWindow.isMinimized()) {
|
if (mainWindow.isMinimized()) {
|
||||||
@@ -222,7 +184,6 @@ app.on('ready', () => {
|
|||||||
mainWindow.reload();
|
mainWindow.reload();
|
||||||
mainWindow.webContents.send('destroytray');
|
mainWindow.webContents.send('destroytray');
|
||||||
});
|
});
|
||||||
checkConnection();
|
|
||||||
|
|
||||||
ipc.on('reload-main', () => {
|
ipc.on('reload-main', () => {
|
||||||
page.reload();
|
page.reload();
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const DomainUtil = require(__dirname + '/js/utils/domain-util.js');
|
|||||||
const SystemUtil = require(__dirname + '/js/utils/system-util.js');
|
const SystemUtil = require(__dirname + '/js/utils/system-util.js');
|
||||||
const {linkIsInternal, skipImages} = require(__dirname + '/../main/link-helper');
|
const {linkIsInternal, skipImages} = require(__dirname + '/../main/link-helper');
|
||||||
const {shell, ipcRenderer} = require('electron');
|
const {shell, ipcRenderer} = require('electron');
|
||||||
|
const {app, dialog} = require('electron').remote;
|
||||||
|
|
||||||
class ServerManagerView {
|
class ServerManagerView {
|
||||||
constructor() {
|
constructor() {
|
||||||
@@ -185,6 +186,36 @@ class ServerManagerView {
|
|||||||
$webView.addEventListener('dom-ready', () => {
|
$webView.addEventListener('dom-ready', () => {
|
||||||
$webView.focus();
|
$webView.focus();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
$webView.addEventListener('did-fail-load', (event) => {
|
||||||
|
const {errorCode, errorDescription, validatedURL} = event;
|
||||||
|
const hasConnectivityErr = (this.systemUtil.connectivityERR.indexOf(errorDescription) >= 0);
|
||||||
|
if (hasConnectivityErr) {
|
||||||
|
console.error('error', errorDescription);
|
||||||
|
this.checkConnectivity();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
checkConnectivity() {
|
||||||
|
return dialog.showMessageBox({
|
||||||
|
title: 'Internet connection problem',
|
||||||
|
message: 'No internet available! Try again?',
|
||||||
|
type: 'warning',
|
||||||
|
buttons: ['Try again', 'Close'],
|
||||||
|
defaultId: 0
|
||||||
|
}, index => {
|
||||||
|
if (index === 0) {
|
||||||
|
const activeWebview = document.getElementById(`webview-${this.activeTabIndex}`);
|
||||||
|
activeWebview.reload();
|
||||||
|
ipcRenderer.send('reload');
|
||||||
|
ipcRenderer.send('destroytray');
|
||||||
|
}
|
||||||
|
if (index === 1) {
|
||||||
|
app.quit();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
registerIpcs() {
|
registerIpcs() {
|
||||||
|
|||||||
@@ -5,6 +5,17 @@ const {app} = require('electron').remote;
|
|||||||
const os = require('os');
|
const os = require('os');
|
||||||
|
|
||||||
class SystemUtil {
|
class SystemUtil {
|
||||||
|
constructor() {
|
||||||
|
this.connectivityERR = [
|
||||||
|
'ERR_INTERNET_DISCONNECTED',
|
||||||
|
'ERR_PROXY_CONNECTION_FAILED',
|
||||||
|
'ERR_CONNECTION_RESET',
|
||||||
|
'ERR_NOT_CONNECTED',
|
||||||
|
'ERR_NAME_NOT_RESOLVED',
|
||||||
|
'ERR_NETWORK_CHANGED'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
getOS() {
|
getOS() {
|
||||||
if (os.platform() === 'darwin') {
|
if (os.platform() === 'darwin') {
|
||||||
return 'Mac';
|
return 'Mac';
|
||||||
|
|||||||
Reference in New Issue
Block a user