diff --git a/lib/config.js b/lib/config.js index 3828e2d..27e4ed9 100644 --- a/lib/config.js +++ b/lib/config.js @@ -78,11 +78,13 @@ function getserverurl() { } var version = '0.4.2'; +var minimumCompatibleVersion = '0.4.2'; var maintenance = true; var cwd = path.join(__dirname, '..'); module.exports = { version: version, + minimumCompatibleVersion: minimumCompatibleVersion, maintenance: maintenance, debug: debug, urlpath: urlpath, diff --git a/lib/realtime.js b/lib/realtime.js index b7a17d3..8ed5443 100644 --- a/lib/realtime.js +++ b/lib/realtime.js @@ -708,7 +708,10 @@ function connection(socket) { //check version socket.on('version', function () { - socket.emit('version', config.version); + socket.emit('version', { + version: config.version, + minimumCompatibleVersion: config.minimumCompatibleVersion + }); }); //received cursor focus diff --git a/public/js/index.js b/public/js/index.js index 6784684..3ca0517 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -629,15 +629,23 @@ function idleStateChange() { updateTitleReminder(); } -function setNeedRefresh() { +function setRefreshModal(status) { $('#refreshModal').modal('show'); + $('#refreshModal').find('.modal-body > div').hide(); + $('#refreshModal').find('.' + status).show(); +} + +function setNeedRefresh() { needRefresh = true; editor.setOption('readOnly', true); socket.disconnect(); showStatus(statusType.offline); } -loginStateChangeEvent = setNeedRefresh; +loginStateChangeEvent = function () { + setRefreshModal('user-state-changed'); + setNeedRefresh(); +}; //visibility var wasFocus = false; @@ -1978,9 +1986,8 @@ socket.on('error', function (data) { }); var retryOnDisconnect = false; var retryTimer = null; -socket.on('maintenance', function (data) { - if (data == version) - retryOnDisconnect = true; +socket.on('maintenance', function () { + retryOnDisconnect = true; }); socket.on('disconnect', function (data) { showStatus(statusType.offline); @@ -1992,7 +1999,7 @@ socket.on('disconnect', function (data) { editor.setOption('readOnly', true); if (retryOnDisconnect && !retryTimer) { retryTimer = setInterval(function () { - socket.connect(); + if (!needRefresh) socket.connect(); }, 1000); } }); @@ -2013,8 +2020,14 @@ socket.on('connect', function (data) { socket.id = socket.nsp + '#' + socket.id; }); socket.on('version', function (data) { - if (data != version) - setNeedRefresh(); + if (version != data.version) { + if (version < data.minimumCompatibleVersion) { + setRefreshModal('incompatible-version'); + setNeedRefresh(); + } else { + setRefreshModal('new-version'); + } + } }); function updateLastInfo(data) { //console.log(data); diff --git a/public/views/body.ejs b/public/views/body.ejs index 9fe1ca7..8eb0fb8 100644 --- a/public/views/body.ejs +++ b/public/views/body.ejs @@ -56,25 +56,6 @@ - -
+<%- include refresh-modal %> <%- include signin-modal %> <%- include help-modal %> <%- include revision-modal %> \ No newline at end of file diff --git a/public/views/refresh-modal.ejs b/public/views/refresh-modal.ejs new file mode 100644 index 0000000..ce7147d --- /dev/null +++ b/public/views/refresh-modal.ejs @@ -0,0 +1,32 @@ + + \ No newline at end of file