From 19c154349d3559e6dd5dbf58018ab1a772926f32 Mon Sep 17 00:00:00 2001 From: Darren Date: Mon, 6 Jan 2014 11:28:27 +0000 Subject: [PATCH] Auto updating banlist + UI improvements --- client/src/index.html.tmpl | 21 +++++++++++---------- client/src/models/network.js | 13 +++++++++++-- client/src/views/channelinfo.js | 6 ++++++ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/client/src/index.html.tmpl b/client/src/index.html.tmpl index a9ffcd9..a3f2a5d 100644 --- a/client/src/index.html.tmpl +++ b/client/src/index.html.tmpl @@ -57,11 +57,10 @@ diff --git a/client/src/models/network.js b/client/src/models/network.js index a80445b..3f0fab1 100644 --- a/client/src/models/network.js +++ b/client/src/models/network.js @@ -585,7 +585,8 @@ function onMode(event) { - var channel, i, prefixes, members, member, find_prefix; + var channel, i, prefixes, members, member, find_prefix, + request_updated_banlist = false; // Build a nicely formatted string to be displayed to a regular human function friendlyModeString (event_modes, alt_target) { @@ -645,16 +646,24 @@ member.removeMode(event.modes[i].mode[1]); } members.sort(); - //channel.addMsg('', '== ' + event.nick + ' set mode ' + event.modes[i].mode + ' ' + event.modes[i].param, 'action mode'); } } else { // Channel mode being set // TODO: Store this somewhere? //channel.addMsg('', 'CHANNEL === ' + event.nick + ' set mode ' + event.modes[i].mode + ' on ' + event.target, 'action mode'); } + + // TODO: Be smart, remove this specific ban from the banlist rather than request a whole banlist + if (event.modes[i].mode[1] == 'b') + request_updated_banlist = true; } channel.addMsg('', '== ' + _kiwi.global.i18n.translate('client_models_network_mode').fetch(event.nick, friendlyModeString()), 'action mode', {time: event.time}); + + // TODO: Be smart, remove the specific ban from the banlist rather than request a whole banlist + if (request_updated_banlist) + this.gateway.raw('MODE ' + channel.get('name') + ' +b'); + } else { // This is probably a mode being set on us. if (event.target.toLowerCase() === this.get("nick").toLowerCase()) { diff --git a/client/src/views/channelinfo.js b/client/src/views/channelinfo.js index edf7871..c9928c3 100644 --- a/client/src/views/channelinfo.js +++ b/client/src/views/channelinfo.js @@ -124,6 +124,8 @@ _kiwi.view.ChannelInfo = Backbone.View.extend({ if (banlist && banlist.length) { var $table = this.$el.find('.channel-banlist table tbody'); + this.$el.find('.banlist-status').text(''); + $table.empty(); _.each(banlist, function(ban) { var $tr = $('').data('ban', ban); @@ -137,6 +139,10 @@ _kiwi.view.ChannelInfo = Backbone.View.extend({ }); this.$el.find('.channel-banlist table').slideDown(); + + } else { + this.$el.find('.banlist-status').text('Banlist empty'); + this.$el.find('.channel-banlist table').hide(); } }, -- 2.25.1