Jump to content

User:Evad37/livenotifications.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Evad37 (talk | contribs) at 10:11, 23 December 2020 (trying to get bubble notifications from echo notifications). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
"use strict";

var _App = _interopRequireDefault(require("./modules/App"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

Promise.all([// Resource loader modules
mw.loader.using(['mediawiki.util', 'mediawiki.api', 'mediawiki.Title']), // Page ready
$.ready]).then(function () {
  (0, _App["default"])();
});

},{"./modules/App":2}],2:[function(require,module,exports){
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = void 0;

var App = function App() {
  var api = new mw.Api(); // Main function for retreiving and displaying notifications

  function mainloop() {
    if (document.hasFocus()) {
      api.get({
        "action": "query",
        "format": "json",
        "formatversion": "2",
        "meta": "notifications",
        "notlimit": "20"
      }).then(function (response) {
        var notifications = (response && response.query && response.query.notifications && response.query.notifications.list || []).filter(function (notification) {
          return notification.id;
        }); // FIXME: Filter based on whether that notification has been shown

        if (notifications.length > 0 && document.hasFocus()) {
          notifications.forEach(function (notification) {
            // TODO: Save notification id so it doesn't get re-shown again
            mw.notify($("<a>").attr({
              "href": mw.util.getUrl(notification.title.full)
            }).css({
              display: "block",
              width: "100%",
              height: "100%"
            }).text("User:".concat(notification.agent.name, " on ").concat(notification.title.text, " at ").concat(notification.timestamp.utciso8601)), {
              title: "".concat(notification.type, " ").concat(notification.section),
              // TODO: get the localised message instead of the code for this
              autoHideSeconds: 30,
              visibleTimeout: true
            });
          });
        }
      }).then(function () {
        window.setTimeout(mainloop, 1000 * 60);
      });
    }
  } // Check for visibility changes
  // https://stackoverflow.com/questions/7389328/detect-if-browser-tab-has-focus


  var hidden, visibilityState, visibilityChange;

  if (typeof document.hidden !== "undefined") {
    hidden = "hidden", visibilityChange = "visibilitychange", visibilityState = "visibilityState";
  } else if (typeof document.msHidden !== "undefined") {
    hidden = "msHidden", visibilityChange = "msvisibilitychange", visibilityState = "msVisibilityState";
  }

  var document_hidden = document[hidden];
  document.addEventListener(visibilityChange, function () {
    if (document_hidden != document[hidden]) {
      if (!document[hidden]) {
        mainloop();
      }

      document_hidden = document[hidden];
    }
  });
};

var _default = App;
exports["default"] = _default;

},{}]},{},[1])
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJsaXZlbm90aWZpY2F0aW9ucy1zcmMvaW5kZXguanMiLCJsaXZlbm90aWZpY2F0aW9ucy1zcmMvbW9kdWxlcy9BcHAuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztBQ0FBOzs7O0FBRUEsT0FBTyxDQUFDLEdBQVIsQ0FBWSxDQUNYO0FBQ0EsRUFBRSxDQUFDLE1BQUgsQ0FBVSxLQUFWLENBQWdCLENBQUMsZ0JBQUQsRUFBbUIsZUFBbkIsRUFBb0MsaUJBQXBDLENBQWhCLENBRlcsRUFHWDtBQUNBLENBQUMsQ0FBQyxLQUpTLENBQVosRUFLRyxJQUxILENBS1EsWUFBVztBQUNsQjtBQUNBLENBUEQ7Ozs7Ozs7Ozs7QUNGQSxJQUFNLEdBQUcsR0FBRyxTQUFOLEdBQU0sR0FBTTtBQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFQLEVBQVosQ0FEaUIsQ0FHakI7O0FBQ0EsV0FBUyxRQUFULEdBQW9CO0FBQ25CLFFBQUssUUFBUSxDQUFDLFFBQVQsRUFBTCxFQUEyQjtBQUMxQixNQUFBLEdBQUcsQ0FBQyxHQUFKLENBQVE7QUFDUCxrQkFBVSxPQURIO0FBRVAsa0JBQVUsTUFGSDtBQUdQLHlCQUFpQixHQUhWO0FBSVAsZ0JBQVEsZUFKRDtBQUtQLG9CQUFZO0FBTEwsT0FBUixFQU9FLElBUEYsQ0FPTyxVQUFBLFFBQVEsRUFBSTtBQUNqQixZQUFNLGFBQWEsR0FBRyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsS0FBckIsSUFBOEIsUUFBUSxDQUFDLEtBQVQsQ0FBZSxhQUE3QyxJQUE4RCxRQUFRLENBQUMsS0FBVCxDQUFlLGFBQWYsQ0FBNkIsSUFBM0YsSUFBbUcsRUFBcEcsRUFDcEIsTUFEb0IsQ0FDYixVQUFBLFlBQVk7QUFBQSxpQkFBSSxZQUFZLENBQUMsRUFBakI7QUFBQSxTQURDLENBQXRCLENBRGlCLENBRTBCOztBQUMzQyxZQUFLLGFBQWEsQ0FBQyxNQUFkLEdBQXVCLENBQXZCLElBQTRCLFFBQVEsQ0FBQyxRQUFULEVBQWpDLEVBQXVEO0FBQ3RELFVBQUEsYUFBYSxDQUFDLE9BQWQsQ0FBc0IsVUFBQSxZQUFZLEVBQUk7QUFDckM7QUFDQSxZQUFBLEVBQUUsQ0FBQyxNQUFILENBQ0MsQ0FBQyxDQUFDLEtBQUQsQ0FBRCxDQUFTLElBQVQsQ0FBYztBQUNiLHNCQUFPLEVBQUUsQ0FBQyxJQUFILENBQVEsTUFBUixDQUFlLFlBQVksQ0FBQyxLQUFiLENBQW1CLElBQWxDO0FBRE0sYUFBZCxFQUVHLEdBRkgsQ0FFTztBQUNOLGNBQUEsT0FBTyxFQUFDLE9BREY7QUFFTixjQUFBLEtBQUssRUFBRSxNQUZEO0FBR04sY0FBQSxNQUFNLEVBQUU7QUFIRixhQUZQLEVBTUcsSUFOSCxnQkFPUyxZQUFZLENBQUMsS0FBYixDQUFtQixJQVA1QixpQkFPdUMsWUFBWSxDQUFDLEtBQWIsQ0FBbUIsSUFQMUQsaUJBT3FFLFlBQVksQ0FBQyxTQUFiLENBQXVCLFVBUDVGLEVBREQsRUFVQztBQUNDLGNBQUEsS0FBSyxZQUFLLFlBQVksQ0FBQyxJQUFsQixjQUEwQixZQUFZLENBQUMsT0FBdkMsQ0FETjtBQUN3RDtBQUN2RCxjQUFBLGVBQWUsRUFBRSxFQUZsQjtBQUdDLGNBQUEsY0FBYyxFQUFFO0FBSGpCLGFBVkQ7QUFlQSxXQWpCRDtBQWtCQTtBQUNELE9BOUJGLEVBK0JFLElBL0JGLENBK0JPLFlBQU07QUFDWCxRQUFBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFFBQWxCLEVBQTRCLE9BQUssRUFBakM7QUFDQSxPQWpDRjtBQWtDQTtBQUNELEdBekNnQixDQTRDakI7QUFDQTs7O0FBQ0EsTUFBSSxNQUFKLEVBQVksZUFBWixFQUE2QixnQkFBN0I7O0FBRUEsTUFBSSxPQUFPLFFBQVEsQ0FBQyxNQUFoQixLQUEyQixXQUEvQixFQUE0QztBQUMxQyxJQUFBLE1BQU0sR0FBRyxRQUFULEVBQW1CLGdCQUFnQixHQUFHLGtCQUF0QyxFQUEwRCxlQUFlLEdBQUcsaUJBQTVFO0FBQ0QsR0FGRCxNQUVPLElBQUksT0FBTyxRQUFRLENBQUMsUUFBaEIsS0FBNkIsV0FBakMsRUFBOEM7QUFDbkQsSUFBQSxNQUFNLEdBQUcsVUFBVCxFQUFxQixnQkFBZ0IsR0FBRyxvQkFBeEMsRUFBOEQsZUFBZSxHQUFHLG1CQUFoRjtBQUNEOztBQUNELE1BQUksZUFBZSxHQUFHLFFBQVEsQ0FBQyxNQUFELENBQTlCO0FBRUEsRUFBQSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsZ0JBQTFCLEVBQTRDLFlBQVc7QUFDckQsUUFBSSxlQUFlLElBQUksUUFBUSxDQUFDLE1BQUQsQ0FBL0IsRUFBeUM7QUFDMUMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFELENBQWIsRUFBdUI7QUFDckIsUUFBQSxRQUFRO0FBQ1Q7O0FBQ0QsTUFBQSxlQUFlLEdBQUcsUUFBUSxDQUFDLE1BQUQsQ0FBMUI7QUFDRTtBQUNGLEdBUEQ7QUFRQSxDQS9ERDs7ZUFpRWUsRyIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSIsImltcG9ydCBBcHAgZnJvbSAnLi9tb2R1bGVzL0FwcCc7XG5cblByb21pc2UuYWxsKFtcblx0Ly8gUmVzb3VyY2UgbG9hZGVyIG1vZHVsZXNcblx0bXcubG9hZGVyLnVzaW5nKFsnbWVkaWF3aWtpLnV0aWwnLCAnbWVkaWF3aWtpLmFwaScsICdtZWRpYXdpa2kuVGl0bGUnXSksXG5cdC8vIFBhZ2UgcmVhZHlcblx0JC5yZWFkeVxuXSkudGhlbihmdW5jdGlvbigpIHtcblx0QXBwKCk7XG59KTtcbiIsImNvbnN0IEFwcCA9ICgpID0+IHtcblx0Y29uc3QgYXBpID0gbmV3IG13LkFwaSgpO1xuXG5cdC8vIE1haW4gZnVuY3Rpb24gZm9yIHJldHJlaXZpbmcgYW5kIGRpc3BsYXlpbmcgbm90aWZpY2F0aW9uc1xuXHRmdW5jdGlvbiBtYWlubG9vcCgpIHtcblx0XHRpZiAoIGRvY3VtZW50Lmhhc0ZvY3VzKCkgKSB7XG5cdFx0XHRhcGkuZ2V0KHtcblx0XHRcdFx0XCJhY3Rpb25cIjogXCJxdWVyeVwiLFxuXHRcdFx0XHRcImZvcm1hdFwiOiBcImpzb25cIixcblx0XHRcdFx0XCJmb3JtYXR2ZXJzaW9uXCI6IFwiMlwiLFxuXHRcdFx0XHRcIm1ldGFcIjogXCJub3RpZmljYXRpb25zXCIsXG5cdFx0XHRcdFwibm90bGltaXRcIjogXCIyMFwiXG5cdFx0XHR9KVxuXHRcdFx0XHQudGhlbihyZXNwb25zZSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgbm90aWZpY2F0aW9ucyA9IChyZXNwb25zZSAmJiByZXNwb25zZS5xdWVyeSAmJiByZXNwb25zZS5xdWVyeS5ub3RpZmljYXRpb25zICYmIHJlc3BvbnNlLnF1ZXJ5Lm5vdGlmaWNhdGlvbnMubGlzdCB8fCBbXSlcblx0XHRcdFx0XHRcdC5maWx0ZXIobm90aWZpY2F0aW9uID0+IG5vdGlmaWNhdGlvbi5pZCk7IC8vIEZJWE1FOiBGaWx0ZXIgYmFzZWQgb24gd2hldGhlciB0aGF0IG5vdGlmaWNhdGlvbiBoYXMgYmVlbiBzaG93blxuXHRcdFx0XHRcdGlmICggbm90aWZpY2F0aW9ucy5sZW5ndGggPiAwICYmIGRvY3VtZW50Lmhhc0ZvY3VzKCkgKSB7XG5cdFx0XHRcdFx0XHRub3RpZmljYXRpb25zLmZvckVhY2gobm90aWZpY2F0aW9uID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogU2F2ZSBub3RpZmljYXRpb24gaWQgc28gaXQgZG9lc24ndCBnZXQgcmUtc2hvd24gYWdhaW5cblx0XHRcdFx0XHRcdFx0bXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHRcdCQoXCI8YT5cIikuYXR0cih7XG5cdFx0XHRcdFx0XHRcdFx0XHRcImhyZWZcIjptdy51dGlsLmdldFVybChub3RpZmljYXRpb24udGl0bGUuZnVsbClcblx0XHRcdFx0XHRcdFx0XHR9KS5jc3Moe1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTpcImJsb2NrXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR3aWR0aDogXCIxMDAlXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IFwiMTAwJVwiXG5cdFx0XHRcdFx0XHRcdFx0fSkudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdGBVc2VyOiR7bm90aWZpY2F0aW9uLmFnZW50Lm5hbWV9IG9uICR7bm90aWZpY2F0aW9uLnRpdGxlLnRleHR9IGF0ICR7bm90aWZpY2F0aW9uLnRpbWVzdGFtcC51dGNpc284NjAxfWBcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBgJHtub3RpZmljYXRpb24udHlwZX0gJHtub3RpZmljYXRpb24uc2VjdGlvbn1gLCAvLyBUT0RPOiBnZXQgdGhlIGxvY2FsaXNlZCBtZXNzYWdlIGluc3RlYWQgb2YgdGhlIGNvZGUgZm9yIHRoaXNcblx0XHRcdFx0XHRcdFx0XHRcdGF1dG9IaWRlU2Vjb25kczogMzAsXG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlVGltZW91dDogdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdH0gKTsgXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KG1haW5sb29wLCAxMDAwKjYwKVxuXHRcdFx0XHR9KVxuXHRcdH1cblx0fVxuXG5cblx0Ly8gQ2hlY2sgZm9yIHZpc2liaWxpdHkgY2hhbmdlc1xuXHQvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83Mzg5MzI4L2RldGVjdC1pZi1icm93c2VyLXRhYi1oYXMtZm9jdXNcblx0dmFyIGhpZGRlbiwgdmlzaWJpbGl0eVN0YXRlLCB2aXNpYmlsaXR5Q2hhbmdlO1xuXG5cdGlmICh0eXBlb2YgZG9jdW1lbnQuaGlkZGVuICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdCAgaGlkZGVuID0gXCJoaWRkZW5cIiwgdmlzaWJpbGl0eUNoYW5nZSA9IFwidmlzaWJpbGl0eWNoYW5nZVwiLCB2aXNpYmlsaXR5U3RhdGUgPSBcInZpc2liaWxpdHlTdGF0ZVwiO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkb2N1bWVudC5tc0hpZGRlbiAhPT0gXCJ1bmRlZmluZWRcIikge1xuXHQgIGhpZGRlbiA9IFwibXNIaWRkZW5cIiwgdmlzaWJpbGl0eUNoYW5nZSA9IFwibXN2aXNpYmlsaXR5Y2hhbmdlXCIsIHZpc2liaWxpdHlTdGF0ZSA9IFwibXNWaXNpYmlsaXR5U3RhdGVcIjtcblx0fVxuXHR2YXIgZG9jdW1lbnRfaGlkZGVuID0gZG9jdW1lbnRbaGlkZGVuXTtcblxuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2UsIGZ1bmN0aW9uKCkge1xuXHQgIGlmIChkb2N1bWVudF9oaWRkZW4gIT0gZG9jdW1lbnRbaGlkZGVuXSkge1xuXHRcdGlmICghZG9jdW1lbnRbaGlkZGVuXSkge1xuXHRcdCAgbWFpbmxvb3AoKTtcblx0XHR9XG5cdFx0ZG9jdW1lbnRfaGlkZGVuID0gZG9jdW1lbnRbaGlkZGVuXTtcblx0ICB9XG5cdH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBBcHA7Il19