Notifications

show desktop notifications

Verzia zo dňa 22.08.2016. Pozri najnovšiu verziu.

// jscs:disable
// ==UserScript==
// @name         Notifications
// @namespace    https://*.waysofhistory.com/
// @version      0.1
// @description  show desktop notifications
// @author       menya
// @match        https://*.waysofhistory.com/*
// @exclude      https://ruforum.waysofhistory.com/
// @exclude      https://ru.waysofhistory.com/
// @grant        none
// ==/UserScript==

(function () {

  var REPORT_TYPE = {
    0: 'Научный отчет',
    1: 'Основание нового города',

    2: 'Финансы',
    6: 'Финансы',
    7: 'Финансы',
    17: 'Финансы',
    18: 'Финансы',
    31: 'Финансы',

    3: 'Военный отчет',
    4: 'Дипломатия',
    5: 'Остановка мира',

    8: 'Торговый отчет',
    16: 'Торговый отчет',
    25: 'Торговый отчет',
    26: 'Торговый отчет',
    30: 'Торговый отчет',

    9: 'Платеж',
    10: 'Ветер Удачи',
    11: 'Перечисление Монет Удачи',
    12: 'Торговое предложение',
    13: 'Заселение',
    14: 'Поздравление',
    15: 'Бонус-код',
    19: 'Военный отчет',
    20: 'Военный отчет',
    21: 'Военный отчет',
    22: 'Отчет о подкреплении',
    23: 'Отчет казначейства',
    24: 'Отчет о транспортировке',
    27: 'Голод',
    28: 'Дипломатия',
    29: 'Разведка',
    32: 'Управление городом'
  };

  Account.prototype.isPremium = function () { return true; };

  Notification.requestPermission();

  function wsdecorator(func) {
    return function () {
      try {

        var message = JSON.parse(arguments[0].data);

        switch (message.type) {
          case 10:

            if (message.data.writer[0] !== servodata.account.id) {
              new Notification('Новое сообщение от ' + message.data.writer[1], {body: message.data.text});
            }

            break;
          case 3:
            new Notification('Новый ' + REPORT_TYPE[message.data.type] + ' отчет!');
            break;
          case 14:

            if (message.data.clickers && message.data.clickers.add) {
              new Notification('Новые таблички!', {body: JSON.stringify(message.data.clickers)});
            } else if (message.data.build) {
              new Notification('Что-то достроили', {body: JSON.stringify(message.data.build)});
            }

            break;
        }

      } catch (e) {
        new Notification('Возникла ошибка:', {body: e});
      } finally {
        func.apply(this, arguments);
      }

    };
  }

  try {
    webSocketMgr.ws.onmessage = wsdecorator(webSocketMgr.ws.onmessage);
  } catch (e) {
    new Notification('Возникла ошибка', {body: e});
  }

})();