- // jscs:disable
- // ==UserScript==
- // @name Notifications
- // @namespace https://*.waysofhistory.com/
- // @version 0.5
- // @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;
- };
-
- // вырубим "Ты не одинок"
- Appl.prototype.initRefNotif = function () {
- return true;
- };
-
- // Запросим разрешение на выдачу уведомлений
- Notification.requestPermission();
-
- // функция для показа оповещения
- function notif(title, body) {
- var currentdate = new Date();
- var datetime = currentdate.getDate() + " " +
- currentdate.getHours() + ":" +
- currentdate.getMinutes() + ":" +
- currentdate.getSeconds() + ' ';
- var newNotif = new Notification(datetime + title, {
- icon: 'https://lh6.googleusercontent.com/V0Va2fD54HtOr1N7z6Mv_XSZQBBQdxA-7susY75wwd5NbbRxEsI4obfUO71IyMoMMjH85DvH=s50-h50-e365-rw',
- requireInteraction: true,
- body: body
- });
- // скрываем по клику
- newNotif.addEventListener('click', function () {
- newNotif.close();
- });
- }
-
- var initCheck = setInterval(function () {
- if (webSocketMgr.dataInited) {
- clearTimeout(initCheck);
- for (var town in wofh.towns) {
- localStorage.setItem(town, JSON.stringify(wofh.towns[town].build));
- }
- }
- }, 400);
-
- 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) {
- notif('Новое сообщение от ' + message.data.writer[1], message.data.text);
- }
-
- break;
- case 3:
- if ([8, 16, 25, 26, 30, 24].indexOf(message.data.type) == -1) {
- notif('Новый отчет: "' + REPORT_TYPE[message.data.type] + ' "');
- }
- break;
- case 8:
- if (message.data.quests) {
- notif('Выполнили или появился новый квест!');
- }
- break;
- case 14:
-
- if (message.data.clickers && message.data.clickers.add) {
- notif(wofh.towns[message.data.id].name + ' Новые таблички!', JSON.stringify(message.data.clickers));
- }
-
- if (message.data.army) {
- notif(wofh.towns[message.data.id].name + ' Завершили тренировку войск!');
- }
-
- if (message.data.build) {
- var saved = JSON.parse(localStorage.getItem(message.data.id));
-
- for (var itown in message.data.build.state) {
- if ((saved.state[itown] && (message.data.build.state[itown][1] != saved.state[itown][1])) || !saved.state[itown]) {
- localStorage.setItem(message.data.id, JSON.stringify(message.data.build));
- notif(wofh.towns[message.data.id].name + ' Достроили здание:',
- '"' + Build.lib[message.data.build.state[itown][0]].name + ' - ' +
- message.data.build.state[itown][1] + ' уровень. ' + itown + ' квартал"');
- }
- }
-
- }
-
- break;
- }
-
- } catch (e) {
- notif('Возникла ошибка:', e);
- } finally {
- func.apply(this, arguments);
- }
-
- };
- }
-
- try {
- webSocketMgr.ws.onmessage = wsdecorator(webSocketMgr.ws.onmessage);
- } catch (e) {
- notif('Возникла ошибка:', e);
- }
-
- })();