From f548a0ae53eeec1e4449f4e3ae000e840c02b9fe Mon Sep 17 00:00:00 2001 From: Zhongyi Tong Date: Fri, 16 Jun 2017 23:09:07 +0800 Subject: [PATCH] Change the way utils load. --- app/renderer/js/components/webview.js | 15 ++++++--------- app/renderer/js/main.js | 3 +-- app/renderer/js/preference.js | 9 ++++----- app/renderer/js/utils/domain-util.js | 12 +++++++++++- app/renderer/js/utils/link-util.js | 2 +- app/renderer/js/utils/system-util.js | 2 +- 6 files changed, 24 insertions(+), 19 deletions(-) diff --git a/app/renderer/js/components/webview.js b/app/renderer/js/components/webview.js index 2181e114..595fa7fb 100644 --- a/app/renderer/js/components/webview.js +++ b/app/renderer/js/components/webview.js @@ -23,9 +23,6 @@ class WebView extends BaseComponent { this.zoomFactor = 1.0; this.loading = false; this.isActive = isActive; - this.domainUtil = new DomainUtil(); - this.systemUtil = new SystemUtil(); - this.linkUtil = new LinkUtil(); this.badgeCount = 0; } @@ -51,9 +48,9 @@ class WebView extends BaseComponent { registerListeners() { this.$el.addEventListener('new-window', event => { const {url} = event; - const domainPrefix = this.domainUtil.getDomain(this.index).url; + const domainPrefix = DomainUtil.getDomain(this.index).url; - if (this.linkUtil.isInternal(domainPrefix, url)) { + if (LinkUtil.isInternal(domainPrefix, url)) { event.preventDefault(); this.$el.loadURL(url); } else { @@ -72,7 +69,7 @@ class WebView extends BaseComponent { this.$el.addEventListener('did-fail-load', event => { const {errorDescription} = event; - const hasConnectivityErr = (this.systemUtil.connectivityERR.indexOf(errorDescription) >= 0); + const hasConnectivityErr = (SystemUtil.connectivityERR.indexOf(errorDescription) >= 0); if (hasConnectivityErr) { console.error('error', errorDescription); this.checkConnectivity(); @@ -80,10 +77,10 @@ class WebView extends BaseComponent { }); this.$el.addEventListener('did-start-loading', () => { - let userAgent = this.systemUtil.getUserAgent(); + let userAgent = SystemUtil.getUserAgent(); if (!userAgent) { - this.systemUtil.setUserAgent(this.$el.getUserAgent()); - userAgent = this.systemUtil.getUserAgent(); + SystemUtil.setUserAgent(this.$el.getUserAgent()); + userAgent = SystemUtil.getUserAgent(); } this.$el.setUserAgent(userAgent); }); diff --git a/app/renderer/js/main.js b/app/renderer/js/main.js index 3b852a93..c05c610c 100644 --- a/app/renderer/js/main.js +++ b/app/renderer/js/main.js @@ -24,14 +24,13 @@ class ServerManagerView { } init() { - this.domainUtil = new DomainUtil(); this.initTabs(); this.initActions(); this.registerIpcs(); } initTabs() { - const servers = this.domainUtil.getDomains(); + const servers = DomainUtil.getDomains(); if (servers.length > 0) { for (let i = 0; i < servers.length; i++) { this.initServer(servers[i], i); diff --git a/app/renderer/js/preference.js b/app/renderer/js/preference.js index b4073850..f758b3ae 100644 --- a/app/renderer/js/preference.js +++ b/app/renderer/js/preference.js @@ -13,13 +13,12 @@ class PreferenceView { } init() { - this.domainUtil = new DomainUtil(); this.initServers(); this.initActions(); } initServers() { - const servers = this.domainUtil.getDomains(); + const servers = DomainUtil.getDomains(); this.$serverInfoContainer.innerHTML = servers.length ? '' : 'Add your first server to get started!'; this.initNewServerForm(); @@ -64,7 +63,7 @@ class PreferenceView { `; this.$serverInfoContainer.appendChild(this.insertNode(serverInfoTemplate)); document.getElementById(`delete-server-action-${index}`).addEventListener('click', () => { - this.domainUtil.removeDomain(index); + DomainUtil.removeDomain(index); this.initServers(); // alert('Success. Reload to apply changes.'); ipcRenderer.send('reload-main'); @@ -109,13 +108,13 @@ class PreferenceView { this.$newServerButton.classList.add('hidden'); }); this.$saveServerButton.addEventListener('click', () => { - this.domainUtil.checkDomain(this.$newServerUrl.value).then(domain => { + DomainUtil.checkDomain(this.$newServerUrl.value).then(domain => { const server = { alias: this.$newServerAlias.value, url: domain, icon: this.$newServerIcon.value }; - this.domainUtil.addDomain(server); + DomainUtil.addDomain(server); this.$saveServerButton.classList.add('hidden'); this.$newServerButton.classList.remove('hidden'); this.$newServerForm.classList.add('hidden'); diff --git a/app/renderer/js/utils/domain-util.js b/app/renderer/js/utils/domain-util.js index a6ca4592..1b0e74ac 100644 --- a/app/renderer/js/utils/domain-util.js +++ b/app/renderer/js/utils/domain-util.js @@ -4,9 +4,17 @@ const {app} = require('electron').remote; const JsonDB = require('node-json-db'); const request = require('request'); +let instance = null; + const defaultIconUrl = 'https://chat.zulip.org/static/images/logo/zulip-icon-128x128.271d0f6a0ca2.png'; class DomainUtil { constructor() { + if (instance) { + return instance; + } else { + instance = this; + } + this.db = new JsonDB(app.getPath('userData') + '/domain.json', true, true); // Migrate from old schema if (this.db.getData('/').domain) { @@ -16,6 +24,8 @@ class DomainUtil { }); this.db.delete('/domain'); } + + return instance; } getDomains() { @@ -69,4 +79,4 @@ class DomainUtil { } } -module.exports = DomainUtil; +module.exports = new DomainUtil(); diff --git a/app/renderer/js/utils/link-util.js b/app/renderer/js/utils/link-util.js index c647a831..0916f05c 100644 --- a/app/renderer/js/utils/link-util.js +++ b/app/renderer/js/utils/link-util.js @@ -26,4 +26,4 @@ class LinkUtil { } } -module.exports = LinkUtil; +module.exports = new LinkUtil(); diff --git a/app/renderer/js/utils/system-util.js b/app/renderer/js/utils/system-util.js index 57869e8d..e2b97bc7 100644 --- a/app/renderer/js/utils/system-util.js +++ b/app/renderer/js/utils/system-util.js @@ -52,4 +52,4 @@ class SystemUtil { } } -module.exports = SystemUtil; +module.exports = new SystemUtil();