User:Hynza/chat.js

$(function {   if (mw.config.get('wgCanonicalSpecialPageName') !== 'Chat' || $('#ignore-list').length) return;    if ( localStorage.getItem('chat-blocked') === null ) localStorage.setItem('chat-blocked', '[]');    $('head').append('');    var updateIgnore = function {        var usrs = JSON.parse(localStorage.getItem('chat-blocked'));        var html = 'li[data-user="' + usrs.join('"],li[data-user="') + '"]{height:0 !important;min-height: 0 !important;overflow:hidden !important;display:none !important;padding:0 !important;margin:0 !important;}li[data-user="' + usrs.join('"] .username,li[data-user="') + '"] *{height:0 !important;min-height: 0 !important;overflow:hidden !important;display:none !important;padding:0 !important;margin:0 !important;}';        $('#ignore-list').html(html);    };    if ( localStorage.getItem('chat-blocked') )         updateIgnore; $('[name="message"]').keypress(function (e) {       if (e.which == 13) {            var val = this.value;            if ( /^(!|\/|\\)blocklist/i.test(val) ) {                this.value = ;                mainRoom.viewDiscussion.chatUL.append('Blocked users: ' + JSON.parse(localStorage.getItem('chat-blocked')).join(', ').replace(/, (?!.*, )/, ', and ') + '.');                mainRoom.viewDiscussion.scrollToBottom;            } else if ( /^(!|\/|\\)block/i.test(val) ) {                this.value = ;                var toBlock = val.slice(7).trim;                var arr = JSON.parse(localStorage.getItem('chat-blocked'));                var idx = arr.indexOf(toBlock);                if ( idx === -1) {                    arr.push(toBlock);                    localStorage.setItem('chat-blocked', JSON.stringify(arr));                    updateIgnore; mainRoom.viewDiscussion.chatUL.append('' + toBlock + ' Has been blocked. Blocked users: ' + JSON.parse(localStorage.getItem('chat-blocked')).join(', ').replace(/, (?!.*, )/, ', and ') + '.'); mainRoom.viewDiscussion.scrollToBottom; } else { mainRoom.viewDiscussion.chatUL.append('' + toBlock + ' Is already blocked. Blocked users: ' + JSON.parse(localStorage.getItem('chat-blocked')).join(', ').replace(/, (?!.*, )/, ', and ') + '.'); mainRoom.viewDiscussion.scrollToBottom; }           } else if ( /^(!|\/|\\)unblock/i.test(val) ) { this.value = ''; var toUnblock = val.slice(9).trim; var array = JSON.parse(localStorage.getItem('chat-blocked')); var index = array.indexOf(toUnblock); if (index > -1) { array.splice(index, 1); localStorage.setItem('chat-blocked', JSON.stringify(array)); updateIgnore; mainRoom.viewDiscussion.chatUL.append('' + toUnblock + ' Has been unblocked. Blocked users: ' + JSON.parse(localStorage.getItem('chat-blocked')).join(', ').replace(/, (?!.*, )/, ', and ') + '.'); mainRoom.viewDiscussion.scrollToBottom; } else { mainRoom.viewDiscussion.chatUL.append('' + toUnblock + ' Isn\'t blocked; can\'t unblock.'); mainRoom.viewDiscussion.scrollToBottom; }           }        }    }); });