80 lines
2.3 KiB
JavaScript
Executable File
80 lines
2.3 KiB
JavaScript
Executable File
var paperboy;
|
|
var paperboyInterval;
|
|
var last_paper_delivered = Date.now();
|
|
$(document).ready(function() {
|
|
paperboyStart();
|
|
});
|
|
|
|
function paperboyStart() {
|
|
var timestamp = Date.now();
|
|
var browser_tab_id = sessionStorage.getItem('browser_tab_id') || bti;
|
|
var browser_tab = localStorage.getItem('browser_tab') || bt;
|
|
paperboy = new WebSocket(paperboy_url + '?timestamp=' + timestamp + '&browser_tab=' + browser_tab + '&browser_tab_id=' + browser_tab_id);
|
|
paperboy.onopen = function (event) {
|
|
clearInterval(paperboyInterval);
|
|
console.log('Paperboy started');
|
|
paperboyInterval = setInterval(function() {
|
|
if (paperboy.readyState != 1) {
|
|
paperboyStop();
|
|
}
|
|
else {
|
|
var sender = JSON.stringify({ 'type': 'heartbeat' });
|
|
paperboy.send(sender);
|
|
}
|
|
},2000);
|
|
var sender = JSON.stringify({ type: 'refresher', 'last_paper_delivered': last_paper_delivered });
|
|
paperboy.send(sender);
|
|
}
|
|
paperboy.onmessage = function (event) {
|
|
|
|
var data = JSON.parse(event.data);
|
|
paperPoster(data);
|
|
|
|
}
|
|
paperboy.onclose = function(event) {
|
|
console.log('Paperboy stopped');
|
|
paperboyStart();
|
|
}
|
|
}
|
|
|
|
function paperPoster(data) {
|
|
if (data.uuid) {
|
|
var art = $('.article[uuid="' + data.uuid + '"]');
|
|
if (data.remove == 'yes') {
|
|
art.remove();
|
|
}
|
|
if (art.is(':visible')) {
|
|
|
|
art.find('.article_content').html(data.content);
|
|
art.find('.article_timestamp').attr('timestamp', data.timestamp);
|
|
art.find('.article_warranty').attr('timestamp', data.warranty);
|
|
art.find('.manager_file').val(data.manager_file);
|
|
art.attr('uuid', data.uuid);
|
|
art.attr('timestamp', data.timestamp);
|
|
art.attr('warranty', data.warranty)
|
|
}
|
|
if ($('#category_selected').attr('category') == data.category || $('#category_selected').attr('category') == 'promo') {
|
|
$('#content_area').prepend(data.art);
|
|
var art = $('.article[uuid="' + data.uuid + '"]');
|
|
art.find('.article_content').html(data.content);
|
|
art.find('.article_timestamp').attr('timestamp', data.timestamp);
|
|
art.find('.article_warranty').attr('timestamp', data.warranty);
|
|
art.find('.manager_file').val(data.manager_file);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
function paperboyStop() {
|
|
|
|
if ( paperboy ) { paperboy.close(); paperboy = undefined; delete paperboy; };
|
|
|
|
|
|
}
|
|
|
|
|
|
document.addEventListener("visibilitychange", function(e) {
|
|
if (e.returnValue == true) {
|
|
paperboyStart();
|
|
}
|
|
}); |