Merge pull request #3371 from m3ntalsp00n/reload_countdown

showUpdate funciton allows updated messages
This commit is contained in:
blizzz 2017-02-10 14:47:33 +01:00 committed by GitHub
commit 354bbd50a7
2 changed files with 40 additions and 4 deletions

View File

@ -780,8 +780,18 @@ var OCP = {},
// sometimes "beforeunload" happens later, so need to defer the reload a bit // sometimes "beforeunload" happens later, so need to defer the reload a bit
setTimeout(function() { setTimeout(function() {
if (!self._userIsNavigatingAway && !self._reloadCalled) { if (!self._userIsNavigatingAway && !self._reloadCalled) {
OC.Notification.show(t('core', 'Problem loading page, reloading in 5 seconds')); var timer = 0;
setTimeout(OC.reload, 5000); var seconds = 5;
var interval = setInterval( function() {
OC.Notification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer));
if (timer >= seconds) {
clearInterval(interval);
OC.reload();
}
timer++;
}, 1000 // 1 second interval
);
// only call reload once // only call reload once
self._reloadCalled = true; self._reloadCalled = true;
} }
@ -1173,6 +1183,30 @@ OC.Notification={
return this.showHtml($('<div/>').text(text).html(), options); return this.showHtml($('<div/>').text(text).html(), options);
}, },
/**
* Updates (replaces) a sanitized notification.
*
* @param {string} text Message to display
* @return {jQuery} JQuery element for notificaiton row
*/
showUpdate: function(text) {
var $notification = $('#notification');
// sanitise
var $html = $('<div/>').text(text).html();
// new notification
if (text && $notification.find('.row').length == 0) {
return this.showHtml($html);
}
var $row = $('<div class="row"></div>').prepend($html);
// just update html in notification
$notification.html($row);
return $row;
},
/** /**
* Shows a notification that disappears after x seconds, default is * Shows a notification that disappears after x seconds, default is
* 7 seconds * 7 seconds

View File

@ -1000,7 +1000,7 @@ describe('Core base tests', function() {
describe('global ajax errors', function() { describe('global ajax errors', function() {
var reloadStub, ajaxErrorStub, clock; var reloadStub, ajaxErrorStub, clock;
var notificationStub; var notificationStub;
var waitTimeMs = 6000; var waitTimeMs = 6500;
var oldCurrentUser; var oldCurrentUser;
beforeEach(function() { beforeEach(function() {
@ -1075,10 +1075,12 @@ describe('Core base tests', function() {
it('displays notification', function() { it('displays notification', function() {
var xhr = { status: 401 }; var xhr = { status: 401 };
notificationUpdateStub = sinon.stub(OC.Notification, 'showUpdate');
$(document).trigger(new $.Event('ajaxError'), xhr); $(document).trigger(new $.Event('ajaxError'), xhr);
clock.tick(waitTimeMs); clock.tick(waitTimeMs);
expect(notificationStub.calledOnce).toEqual(true); expect(notificationUpdateStub.notCalled).toEqual(false);
}); });
it('shows a temporary notification if the connection is lost', function() { it('shows a temporary notification if the connection is lost', function() {
var xhr = { status: 0 }; var xhr = { status: 0 };