From 66c980d34ce72efd2719d08ed9e66a5c36698f92 Mon Sep 17 00:00:00 2001 From: Jack Allnutt Date: Tue, 4 Jun 2013 16:30:48 +0100 Subject: [PATCH] Respond to ERR_ERONEOUSNICKNAME --- client/assets/src/models/network.js | 11 +++++++++++ client/assets/src/views/serverselect.js | 17 ++++++++++++----- server/irc/commands.js | 8 ++++++++ server/irc/server.js | 11 ++++++++++- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/client/assets/src/models/network.js b/client/assets/src/models/network.js index f8e70ee..88cc854 100644 --- a/client/assets/src/models/network.js +++ b/client/assets/src/models/network.js @@ -685,6 +685,17 @@ } break; + case 'erroneus_nickname': + this.panels.server.addMsg(' ', '== The nickname ' + event.nick + ' is not valid for this network. Please select a new nickname', 'status'); + if (this.panels.server !== this.panels.active) { + _kiwi.app.message.text('The nickname "' + event.nick + '" is not valid for this network. Please select a new nickname'); + } + + // Only show the nickchange component if the controlbox is open + if (_kiwi.app.controlbox.$el.css('display') !== 'none') { + (new _kiwi.view.NickChangeBox()).render(); + } + break; case 'password_mismatch': this.panels.server.addMsg(' ', '== Incorrect password given', 'status'); diff --git a/client/assets/src/views/serverselect.js b/client/assets/src/views/serverselect.js index f655212..1fcd278 100644 --- a/client/assets/src/views/serverselect.js +++ b/client/assets/src/views/serverselect.js @@ -201,15 +201,22 @@ _kiwi.view.ServerSelect = function () { onIrcError: function (data) { $('button', this.$el).attr('disabled', null); - if (data.error == 'nickname_in_use') { + switch(data.error) { + case 'nickname_in_use': this.setStatus('Nickname already taken'); this.show('nick_change'); - } - - if (data.error == 'password_mismatch') { + this.$el.find('.nick').select(); + break; + case 'erroneus_nickname': + this.setStatus('Erroneus nickname'); + this.show('nick_change'); + this.$el.find('.nick').select(); + break; + case 'password_mismatch': this.setStatus('Incorrect Password'); this.show('nick_change'); - that.$el.find('.password').select(); + this.$el.find('.password').select(); + break; } }, diff --git a/server/irc/commands.js b/server/irc/commands.js index 1e07ac8..d64934a 100644 --- a/server/irc/commands.js +++ b/server/irc/commands.js @@ -47,6 +47,7 @@ irc_numerics = { '405': 'ERR_TOOMANYCHANNELS', '421': 'ERR_UNKNOWNCOMMAND', '422': 'ERR_NOMOTD', + '432': 'ERR_ERRONEUSNICKNAME', '433': 'ERR_NICKNAMEINUSE', '441': 'ERR_USERNOTINCHANNEL', '442': 'ERR_NOTONCHANNEL', @@ -716,6 +717,13 @@ handlers = { }); }, + ERR_ERRONEUSNICKNAME: function(command) { + this.irc_connection.emit('server ' + this.irc_connection.irc_host.hostname + ' erroneus_nickname', { + nick: command.params[1], + reason: command.trailing + }); + }, + ERR_NOTREGISTERED: function (command) { }, diff --git a/server/irc/server.js b/server/irc/server.js index 49f06d8..e68766f 100755 --- a/server/irc/server.js +++ b/server/irc/server.js @@ -30,7 +30,8 @@ var IrcServer = function (irc_connection) { banned_from_channel: onBannedFromChannel, bad_channel_key: onBadChannelKey, chanop_privs_needed: onChanopPrivsNeeded, - nickname_in_use: onNicknameInUse + nickname_in_use: onNicknameInUse, + erroneus_nickname: onErroneusNickname }; EventBinder.bindIrcEvents('server *', this.irc_events, this, this.irc_connection); @@ -227,3 +228,11 @@ function onNicknameInUse(event) { reason: event.reason }); } + +function onErroneusNickname(event) { + this.irc_connection.clientEvent('irc_error', { + error: 'erroneus_nickname', + nick: event.nick, + reason: event.reason + }); +} -- 2.25.1