MediaWiki:Gadget-events.js: Difference between revisions

No edit summary
No edit summary
Line 1,823: Line 1,823:
}
}


// Notifications to send
var notifs = [];
// Latest rotations and settings from localStorage
if (rs.hasLocalStorage()) {
var last = {};
try {
last = JSON.parse(localStorage.getItem(localLast));
} catch (err) {
last = {};
console.warn('Error loading latest rotations from localStorage');
}
for (var l in last) {
self.lastRot[l] = last[l];
}
var prefs = {};
try {
prefs = JSON.parse(localStorage.getItem(localKey));
} catch (err) {
prefs = {};
console.warn('Error loading settings (events)');
}
for (var p in prefs) {
self.settings[p] = prefs[p];
}
}
// Exit if notifs turned off
if (!self.settings.notifs) {
mw.log('Exiting notifications, they\'ve been disabled');
return;
}
// Current UTC time
var now = moment.utc();
// Prevent multiple tabs from updating in short period of time
mw.log( now.diff(moment(self.lastRot.time), 'seconds') );
if ( now.diff(moment(self.lastRot.time), 'seconds') <= 255 ) {
return;
} else {
self.lastRot.time = now.format();
}
// VoS
if (now.isBefore( moment(now).startOf('hour').add(10,'minutes') )) {
var vosError = function (jqXHR, status, error) {
console.warn('Error loading VoS:\n' + status + ': ' + error);
};
var vosSucc = function (vosjson, status, jqXHR) {
if (!vosjson.districts) {
vosError({}, 'Missing districts', 'returned json did not contain a districts array');
return;
}
var vostext = vosjson.districts[0] + ',' + vosjson.districts[1];
if (vostext !== self.lastRot.vos) {
self.lastRot.vos = vostext;
var vosnotifs = [];
vosjson.districts.forEach( function (clan) {
if (self.settings.notiftype['vos' + clan] && self.settings.notiftype.vos == 'Some' || self.settings.notiftype.allvos) {
var img = rs.getFileURL(clan + ' Clan.png');
vosnotifs.push( { title:'VoS ' + clan, opts:{
badge: img,
body: 'Voice of Seren is now active in the ' + clan + ' district.',
tag: 'vos-' + clan,
icon: img,
image: img,
vibrate: true,
renotify: true,
requireInteraction: false
} } );
}
});
self.sendNotifs( vosnotifs, true );
// Save the last rotations to localstorage if possible
if (rs.hasLocalStorage()) {
var string = JSON.stringify(self.lastRot);
try {
localStorage.setItem(localLast, string);
} catch (err) {
console.warn('Error saving latest rotations to localStorage');
}
}
}
}
$.ajax({
dataType: 'json',
url: simplevosurl,
error: vosError,
success: vosSucc
});
}
}(jQuery, mediaWiki, gswiki));
}(jQuery, mediaWiki, gswiki));
//</nowiki>
//</nowiki>