diff --git a/backend/session.go b/backend/session.go index 84cff6f6..f4c9f73a 100644 --- a/backend/session.go +++ b/backend/session.go @@ -215,8 +215,12 @@ func (s *memSession) handleCommand(cmd *proto.Packet) (interface{}, error) { } return &proto.LogReply{Log: msgs, Before: msg.Before}, nil case *proto.NickCommand: + nick, err := proto.NormalizeNick(msg.Name) + if err != nil { + return nil, err + } formerName := s.identity.Name() - s.identity.name = msg.Name + s.identity.name = nick event, err := s.room.RenameUser(s.ctx, s, formerName) if err != nil { return nil, err diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 00000000..378eac25 --- /dev/null +++ b/client/.gitignore @@ -0,0 +1 @@ +build diff --git a/client/lib/stores/chat.js b/client/lib/stores/chat.js index 9a30edb9..6c8a64ee 100644 --- a/client/lib/stores/chat.js +++ b/client/lib/stores/chat.js @@ -48,6 +48,9 @@ module.exports.store = Reflux.createStore({ } else if (ev.body.type == 'who-reply') { this._handleWhoReply(ev.body.data) } else if (ev.body.type == 'nick-reply' || ev.body.type == 'nick-event') { + if (ev.body.type == 'nick-reply') { + this._handleNickReply(ev.body.data) + } this.state.who = this.state.who .mergeIn([ev.body.data.id], { id: ev.body.data.id, @@ -105,6 +108,12 @@ module.exports.store = Reflux.createStore({ ) }, + _handleNickReply: function(data) { + this.state.nick = data.to + this.state.nickText = data.to + storage.setRoom(this.state.roomName, 'nick', data.to) + }, + storageChange: function(data) { var roomStorage = data.room[this.state.roomName] || {} this.state.nick = roomStorage.nick diff --git a/client/lib/ui/chatentry.js b/client/lib/ui/chatentry.js index 9e5add55..c6d35eff 100644 --- a/client/lib/ui/chatentry.js +++ b/client/lib/ui/chatentry.js @@ -169,7 +169,7 @@ module.exports = React.createClass({