Skip to content

Commit 24c529a

Browse files
committed
Check supported server version
1 parent 574bd1c commit 24c529a

File tree

5 files changed

+67
-15
lines changed

5 files changed

+67
-15
lines changed

app.css

+5
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ navbar.dark .control-buttons>*:hover {
4747
color: white;
4848
}
4949

50+
navbar.unsupported {
51+
background-color: #b90000 !important;
52+
color: white;
53+
}
54+
5055
#navbar-container .control-buttons {
5156
display: flex;
5257
}

ipc/consumer.js

+18
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
const {BrowserWindow, shell} = require('electron')
22

33
const { createWindow } = require('../window')
4+
const { getServerUrl } = require('../utils')
5+
6+
const url = require('url')
7+
const fetch = require('node-fetch')
8+
const semver = require('semver')
49

510
module.exports = function (commandId, args = {}) {
611
switch (commandId) {
@@ -22,6 +27,19 @@ module.exports = function (commandId, args = {}) {
2227
case 'configServerUrl':
2328
BrowserWindow.getFocusedWindow().webContents.send('config-serverurl')
2429
break
30+
case 'checkVersion':
31+
return fetch(url.resolve(getServerUrl(), '/status')).then(response => {
32+
var browserWindows = BrowserWindow.getAllWindows()
33+
if (!semver.satisfies(response.headers.get('HackMD-Version'), '>= 0.5.1')) {
34+
browserWindows.forEach(browserWindow => {
35+
browserWindow.send('unsupported-version')
36+
})
37+
} else {
38+
browserWindows.forEach(browserWindow => {
39+
browserWindow.send('supported-version')
40+
})
41+
}
42+
}).catch(err => console.log(err))
2543
default:
2644
break
2745
}

package.json

+2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
"dependencies": {
3838
"electron-config": "^0.2.1",
3939
"jquery": "^3.2.1",
40+
"node-fetch": "^1.6.3",
41+
"semver": "^5.3.0",
4042
"validate.js": "^0.11.1"
4143
}
4244
}

renderer.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ window.onload = () => {
4343

4444
// set dark theme if in home page
4545
if (webview.getURL().split('?')[0].split('#')[0].match(/https?:\/\/hackmd.io\/$/)) {
46-
document.querySelector('navbar').className = 'dark'
46+
$('navbar').addClass('dark')
4747
} else {
48-
document.querySelector('navbar').className = ''
48+
$('navbar').remove('dark')
4949
}
5050

5151
/* bind control buttons event */
@@ -134,6 +134,13 @@ window.onload = () => {
134134
$('#serverurl-config-modal.modal').modal()
135135
})
136136

137+
ipcRenderer.on('unsupported-version', () => {
138+
$('navbar').addClass('unsupported')
139+
})
140+
141+
ipcRenderer.on('supported-version', () => {
142+
$('navbar').removeClass('unsupported')
143+
})
137144
$('#serverurl-config-modal.modal #submit-serverurl').click(function () {
138145
let serverurl = $('#serverurl-config-modal.modal input[type="text"]').val()
139146

@@ -144,6 +151,7 @@ window.onload = () => {
144151
if (!errors) {
145152
config.set('serverurl', serverurl)
146153
webview.loadURL(serverurl)
154+
ipcClient('checkVersion')
147155
$('#serverurl-config-modal.modal').modal('hide')
148156
} else {
149157
// show me some error
@@ -155,4 +163,6 @@ window.onload = () => {
155163
webview.addEventListener('new-window', (event) => {
156164
ipcClient('createWindow', { url: `file://${path.join(__dirname, `index.html?target=${event.url}`)}` })
157165
})
166+
167+
ipcClient('checkVersion')
158168
}

yarn.lock

+30-13
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,12 @@ electron-macos-sign@~1.4.0:
611611
minimist "^1.2.0"
612612
plist "^2.0.1"
613613

614+
encoding@^0.1.11:
615+
version "0.1.12"
616+
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
617+
dependencies:
618+
iconv-lite "~0.4.13"
619+
614620
env-paths@^0.3.0:
615621
version "0.3.1"
616622
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-0.3.1.tgz#c30ccfcbc30c890943dc08a85582517ef00da463"
@@ -1092,6 +1098,10 @@ humanize-plus@^1.8.1:
10921098
version "1.8.2"
10931099
resolved "https://registry.yarnpkg.com/humanize-plus/-/humanize-plus-1.8.2.tgz#a65b34459ad6367adbb3707a82a3c9f916167030"
10941100

1101+
iconv-lite@~0.4.13:
1102+
version "0.4.15"
1103+
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
1104+
10951105
ignore@^3.0.9, ignore@^3.2.0:
10961106
version "3.2.6"
10971107
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c"
@@ -1244,7 +1254,7 @@ is-retry-allowed@^1.0.0:
12441254
version "1.1.0"
12451255
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
12461256

1247-
is-stream@^1.0.0:
1257+
is-stream@^1.0.0, is-stream@^1.0.1:
12481258
version "1.1.0"
12491259
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
12501260

@@ -1505,6 +1515,13 @@ node-emoji@^1.5.1:
15051515
dependencies:
15061516
string.prototype.codepointat "^0.2.0"
15071517

1518+
node-fetch@^1.6.3:
1519+
version "1.6.3"
1520+
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
1521+
dependencies:
1522+
encoding "^0.1.11"
1523+
is-stream "^1.0.1"
1524+
15081525
node-status-codes@^1.0.0:
15091526
version "1.0.0"
15101527
resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f"
@@ -1777,18 +1794,7 @@ read-pkg@^1.0.0:
17771794
normalize-package-data "^2.3.2"
17781795
path-type "^1.0.0"
17791796

1780-
readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@~2.0.0:
1781-
version "2.0.6"
1782-
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
1783-
dependencies:
1784-
core-util-is "~1.0.0"
1785-
inherits "~2.0.1"
1786-
isarray "~1.0.0"
1787-
process-nextick-args "~1.0.6"
1788-
string_decoder "~0.10.x"
1789-
util-deprecate "~1.0.1"
1790-
1791-
readable-stream@^2.2.2:
1797+
readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2:
17921798
version "2.2.6"
17931799
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816"
17941800
dependencies:
@@ -1809,6 +1815,17 @@ readable-stream@~1.1.9:
18091815
isarray "0.0.1"
18101816
string_decoder "~0.10.x"
18111817

1818+
readable-stream@~2.0.0:
1819+
version "2.0.6"
1820+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
1821+
dependencies:
1822+
core-util-is "~1.0.0"
1823+
inherits "~2.0.1"
1824+
isarray "~1.0.0"
1825+
process-nextick-args "~1.0.6"
1826+
string_decoder "~0.10.x"
1827+
util-deprecate "~1.0.1"
1828+
18121829
readline2@^1.0.1:
18131830
version "1.0.1"
18141831
resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"

0 commit comments

Comments
 (0)