From dfe8ef370ae8cf2474752c97c1443e39f6471a3d Mon Sep 17 00:00:00 2001 From: Darren Date: Sat, 25 Aug 2012 20:33:08 +0100 Subject: [PATCH] Updating user modes on change --- client_backbone/model.js | 16 ++++++++++++---- client_backbone/model_application.js | 22 ++++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/client_backbone/model.js b/client_backbone/model.js index 40d0e9d..4009cd0 100644 --- a/client_backbone/model.js +++ b/client_backbone/model.js @@ -96,18 +96,26 @@ kiwi.model.Member = Backbone.Model.extend({ this.set({"nick": nick, "modes": modes, "prefix": this.getPrefix(modes)}, {silent: true}); }, addMode: function (mode) { - var modes, prefix; + var modes_to_add = mode.split(''), + modes, prefix; + modes = this.get("modes"); - modes.push(mode); + $.each(modes_to_add, function (index, item) { + modes.push(item); + }); + modes = this.sortModes(modes); this.set({"prefix": this.getPrefix(modes), "modes": modes}); }, removeMode: function (mode) { - var modes, prefix; + var modes_to_remove = mode.split(''), + modes, prefix; + modes = this.get("modes"); modes = _.reject(modes, function (m) { - return m === mode; + return (modes_to_remove.indexOf(m) !== -1); }); + this.set({"prefix": this.getPrefix(modes), "modes": modes}); }, getPrefix: function (modes) { diff --git a/client_backbone/model_application.js b/client_backbone/model_application.js index 2ae0dd1..74c6a51 100644 --- a/client_backbone/model_application.js +++ b/client_backbone/model_application.js @@ -171,6 +171,28 @@ kiwi.model.Application = Backbone.Model.extend(new (function () { // Clear the temporary userlist delete channel.temp_userlist; }); + + + gw.on('onmode', function (event) { + var channel, members, member; + + if (!event.channel) return; + channel = that.panels.getByName(event.channel); + if (!channel) return; + + members = channel.get('members'); + if (!members) return; + + member = members.getByNick(event.effected_nick); + if (!member) return; + + if (event.mode[0] === '+') { + member.addMode(event.mode.substr(1)); + } else if (event.mode[0] === '-') { + member.removeMode(event.mode.substr(1)); + } + + }); }; -- 2.25.1