aboutsummaryrefslogtreecommitdiffstats
path: root/view/js/main.js
diff options
context:
space:
mode:
authorMax Kostikov <max@kostikov.co>2020-11-15 11:09:44 +0100
committerMax Kostikov <max@kostikov.co>2020-11-15 11:09:44 +0100
commit38985dc4e2a05e4746e1d0fc7bdb09ec55273e54 (patch)
tree7be5457bcd756985adc7025db9424972f74a4a6c /view/js/main.js
parent7cf9b85a97829dc6e11fef4dcafeebe746084c1f (diff)
parente74c52094f218686c59ddb5f6c186f02158cf89a (diff)
downloadvolse-hubzilla-38985dc4e2a05e4746e1d0fc7bdb09ec55273e54.tar.gz
volse-hubzilla-38985dc4e2a05e4746e1d0fc7bdb09ec55273e54.tar.bz2
volse-hubzilla-38985dc4e2a05e4746e1d0fc7bdb09ec55273e54.zip
Merge branch 'dev' into 'dev'
Dev sync See merge request kostikov/core!1
Diffstat (limited to 'view/js/main.js')
-rw-r--r--view/js/main.js86
1 files changed, 60 insertions, 26 deletions
diff --git a/view/js/main.js b/view/js/main.js
index fb7bcb52f..560868046 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -31,6 +31,7 @@ var sse_offset = 0;
var sse_type;
var sse_partial_result = false;
var sse_rmids = [];
+var sse_fallback_interval;
var page_cache = {};
@@ -94,37 +95,56 @@ $(document).ready(function() {
jQuery.timeago.settings.allowFuture = true;
- if(typeof(window.SharedWorker) === 'undefined') {
- // notifications with multiple tabs open will not work very well in this scenario
- var evtSource = new EventSource('/sse');
- evtSource.addEventListener('notifications', function(e) {
- var obj = JSON.parse(e.data);
- sse_handleNotifications(obj, false, false);
- }, false);
+ if(sse_enabled) {
+ if(typeof(window.SharedWorker) === 'undefined') {
+ // notifications with multiple tabs open will not work very well in this scenario
+ var evtSource = new EventSource('/sse');
- document.addEventListener('visibilitychange', function() {
- if (!document.hidden) {
- sse_offset = 0;
- sse_bs_init();
- }
- }, false);
+ evtSource.addEventListener('notifications', function(e) {
+ var obj = JSON.parse(e.data);
+ sse_handleNotifications(obj, false, false);
+ }, false);
- }
- else {
- var myWorker = new SharedWorker('/view/js/sse_worker.js', localUser);
+ document.addEventListener('visibilitychange', function() {
+ if (!document.hidden) {
+ sse_offset = 0;
+ sse_bs_init();
+ }
+ }, false);
- myWorker.port.onmessage = function(e) {
- obj = e.data;
- console.log(obj);
- sse_handleNotifications(obj, false, false);
}
+ else {
+ var myWorker = new SharedWorker('/view/js/sse_worker.js', localUser);
- myWorker.onerror = function(e) {
- myWorker.port.close();
+ myWorker.port.onmessage = function(e) {
+ obj = e.data;
+ console.log(obj);
+ sse_handleNotifications(obj, false, false);
+ }
+
+ myWorker.onerror = function(e) {
+ myWorker.port.close();
+ }
+
+ myWorker.port.start();
}
+ }
+ else {
+ if (!document.hidden)
+ sse_fallback_interval = setInterval(sse_fallback, updateInterval);
+
+ document.addEventListener('visibilitychange', function() {
+ if (document.hidden) {
+ clearInterval(sse_fallback_interval);
+ }
+ else {
+ sse_offset = 0;
+ sse_bs_init();
+ sse_fallback_interval = setInterval(sse_fallback, updateInterval);
+ }
- myWorker.port.start();
+ }, false);
}
$('.notification-link').on('click', { replace: true, followup: false }, sse_bs_notifications);
@@ -224,6 +244,8 @@ $(document).ready(function() {
cache_next_page();
});
+
+
});
function getConversationSettings() {
@@ -1763,8 +1785,6 @@ function sse_bs_init() {
}
function sse_bs_counts() {
-
-
if(sse_bs_active)
return;
@@ -1868,7 +1888,9 @@ function sse_handleNotifications(obj, replace, followup) {
}
else {
$('.' + type + '-update').html('0');
- $('.' + type + '-button').fadeOut();
+ $('.' + type + '-button').fadeOut(function() {
+ sse_setNotificationsStatus();
+ });
}
if(obj[type].notifications.length)
sse_handleNotificationsItems(type, obj[type].notifications, replace, followup);
@@ -2020,3 +2042,15 @@ function sse_setNotificationsStatus() {
}
}
+
+function sse_fallback() {
+ $.get('/sse', function(obj) {
+ if(! obj)
+ return;
+
+ console.log('sse fallback');
+ console.log(obj);
+
+ sse_handleNotifications(obj, false, false);
+ });
+}