mirror of
				https://github.com/zulip/zulip-desktop.git
				synced 2025-11-04 05:53:21 +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