Check if push server is available otherwise fallback into polling

This commit is contained in:
Hadi Nategh 2020-07-22 13:17:54 +02:00
parent ea548a90ab
commit d9ff68a422
2 changed files with 18 additions and 4 deletions

View File

@ -87,6 +87,12 @@ class notifications_ajax {
*/ */
private $response; private $response;
/**
*
* @var type
*/
private $isPushServer;
/** /**
* constructor * constructor
* *
@ -101,6 +107,13 @@ class notifications_ajax {
$this->preferences = $prefs->read(); $this->preferences = $prefs->read();
$this->db = $GLOBALS['egw']->db; $this->db = $GLOBALS['egw']->db;
if (empty(($isPushServer = Api\Cache::getCache(Api\Cache::INSTANCE, 'notifications', 'isPushServer'))))
{
$isPushServer = (!((New Api\Json\Push ()) instanceof notifications_push));
Api\Cache::setCache(Api\Cache::INSTANCE, 'notifications','isPushServer', $isPushServer, 86400);
}
$this->isPushServer = $isPushServer;
} }
/** /**
@ -126,7 +139,7 @@ class notifications_ajax {
{ {
$this->response->jquery('#currentusers', 'text', array((string)$GLOBALS['egw']->session->session_count())); $this->response->jquery('#currentusers', 'text', array((string)$GLOBALS['egw']->session->session_count()));
} }
if ($this->isPushServer) $this->response->data(['isPushServer' => true]);
$this->get_egwpopup($browserNotify); $this->get_egwpopup($browserNotify);
} }

View File

@ -95,8 +95,9 @@
notifications.prototype.run_notifications = function () notifications.prototype.run_notifications = function ()
{ {
var self = this; var self = this;
this.get_notifications().then(function(){ this.get_notifications().then(function(_data){
window.clearTimeout(TIMEOUT); window.clearTimeout(TIMEOUT);
if (_data && _data.isPushServer) return;
self.check_browser_notify(); self.check_browser_notify();
TIMEOUT = self.setTimeout(POLL_INTERVAL); TIMEOUT = self.setTimeout(POLL_INTERVAL);
}, },
@ -116,8 +117,8 @@
return new Promise (function(_resolve, _reject){ return new Promise (function(_resolve, _reject){
egw.json( egw.json(
"notifications.notifications_ajax.get_notifications",[], "notifications.notifications_ajax.get_notifications",[],
function(){ function(_data){
_resolve(); _resolve(_data);
self.check_browser_notify() self.check_browser_notify()
}).sendRequest(true,'POST', function(_err){ }).sendRequest(true,'POST', function(_err){
if (_err && _err.statusText) egw.message(_err.statusText); if (_err && _err.statusText) egw.message(_err.statusText);