User:Lience/chat.js

// Уведомления // Дополнение к чатхакам. Выкидывает уведомление, когда вас пингает. // Аффтар: Сиба // Идея: Grozny_Dude // Уведомления function sendNotification(title, options) {if (Notification.permission === "granted") {var notification = new Notification(title, options);} else if (Notification.permission !== 'denied') {Notification.requestPermission(function (permission) {if (permission === "granted") {var notification = new Notification(title, options);}});}} var waitMainRoom = setInterval(function {   if (typeof mainRoom !== 'undefined') {        mainRoom.socket.on("chat:add", function { if($('.Chat:first li:last-child').has('.ping').length && !$('.Chat:first li:last-child').hasClass('notified')) { // часть регекспов стырено с ChatLogger.js, часть велосипедил сам // update от KockaAdmiralac: прокачали регекспы. Те, которые из ChatLogger sendNotification($('.Chat:first li:last-child .username').text, {                   body: $('.Chat:first li:last-child .ping').html                            .replace(/( |   ){2,}/g, ' ')                            .replace(/]*>/g, '$1')                            .replace(new RegExp('([^<]*)','g'), function(match,page,title) {return '[' + '['+page.replace(/_/g,' ')+'|'+title+']]'})                            .replace(/\[\[([^\]]*?) {2,}/g, '[' + '[$1 ')                            .replace(/\[\[([^|]*)\|\1]]/g, '[' + '[$1]]')                            .replace(/[^<]*<\/a>/g, '$1')                            .replace('[' + '['+wgServer+'/wiki/]]', wgServer+'/wiki/')                            .replace(/<\/?(span|sub|sup)(\s[a-zA-Z]*\=\".*\")*?>/g, '')                            .replace(//g, 'img:$1') .replace(/]*src="https:\/\/www\.youtube\.com\/embed\/([a-zA-Z0-9]*)"[^>]*><\/iframe>/g, 'yt:$1'), icon: $('.Chat:first li:last-child > img').attr('src').replace(/scale\-to\-width\-down\/28/, 'scale-to-width-down/150'), dir: 'auto' });               $('.Chat:first li:last-child').addClass('notified');            }        }); clearInterval(waitMainRoom); } }, 250);