mirror of
https://github.com/zulip/zulip-desktop.git
synced 2025-10-24 00:23:36 +00:00
Using `import * as` import syntax causes some problem if the module exports a class or function. Because the whole point of star import is to import every property the module exports. It turns out we have been using it incorrectly in many places which this commit fixes. Then we fix a linting error by adding a eslint disable rule to solve it along with a TODO because the way we currently do it is wrong. Finally, to conclude this cleanup, we merge all the .gitignore paths into once now that we can.
68 lines
1.7 KiB
TypeScript
68 lines
1.7 KiB
TypeScript
import isOnline = require('is-online');
|
|
import Logger = require('./logger-util');
|
|
|
|
const logger = new Logger({
|
|
file: `domain-util.log`,
|
|
timestamp: true
|
|
});
|
|
|
|
class ReconnectUtil {
|
|
// TODO: TypeScript - Figure out how to annotate serverManagerView
|
|
// it should be ServerManagerView; maybe make it a generic so we can
|
|
// pass the class from main.js
|
|
serverManagerView: any;
|
|
alreadyReloaded: boolean;
|
|
|
|
constructor(serverManagerView: any) {
|
|
this.serverManagerView = serverManagerView;
|
|
this.alreadyReloaded = false;
|
|
}
|
|
|
|
clearState(): void {
|
|
this.alreadyReloaded = false;
|
|
}
|
|
|
|
pollInternetAndReload(): void {
|
|
const pollInterval = setInterval(() => {
|
|
this._checkAndReload()
|
|
.then(status => {
|
|
if (status) {
|
|
this.alreadyReloaded = true;
|
|
clearInterval(pollInterval);
|
|
}
|
|
});
|
|
}, 1500);
|
|
}
|
|
|
|
// TODO: Make this a async function
|
|
_checkAndReload(): Promise<boolean> {
|
|
return new Promise(resolve => {
|
|
if (!this.alreadyReloaded) { // eslint-disable-line no-negated-condition
|
|
isOnline()
|
|
.then((online: boolean) => {
|
|
if (online) {
|
|
if (!this.alreadyReloaded) {
|
|
this.serverManagerView.reloadCurrentView();
|
|
}
|
|
logger.log('You\'re back online.');
|
|
return resolve(true);
|
|
}
|
|
|
|
logger.log('There is no internet connection, try checking network cables, modem and router.');
|
|
const errMsgHolder = document.querySelector('#description');
|
|
if (errMsgHolder) {
|
|
errMsgHolder.innerHTML = `
|
|
<div>Your internet connection doesn't seem to work properly!</div>
|
|
<div>Verify that it works and then click try again.</div>`;
|
|
}
|
|
return resolve(false);
|
|
});
|
|
} else {
|
|
return resolve(true);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
export = ReconnectUtil;
|