Support changing the nick by clicking it in MessageInput

This commit is contained in:
Ken-Håvard Lieng 2017-06-21 07:23:07 +02:00
parent 4a74463ae8
commit f174d98107
16 changed files with 335 additions and 134 deletions

View file

@ -273,35 +273,42 @@ func (i *ircHandler) motdEnd(msg *irc.Message) {
i.motdBuffer = MOTD{}
}
func (i *ircHandler) badNick(msg *irc.Message) {
i.session.sendJSON("nick_fail", NickFail{
Server: i.client.Host,
})
}
func (i *ircHandler) initHandlers() {
i.handlers = map[string]func(*irc.Message){
irc.Nick: i.nick,
irc.Join: i.join,
irc.Part: i.part,
irc.Mode: i.mode,
irc.Privmsg: i.message,
irc.Notice: i.message,
irc.Quit: i.quit,
irc.Topic: i.topic,
irc.ReplyWelcome: i.info,
irc.ReplyYourHost: i.info,
irc.ReplyCreated: i.info,
irc.ReplyLUserClient: i.info,
irc.ReplyLUserOp: i.info,
irc.ReplyLUserUnknown: i.info,
irc.ReplyLUserChannels: i.info,
irc.ReplyLUserMe: i.info,
irc.ReplyWhoisUser: i.whoisUser,
irc.ReplyWhoisServer: i.whoisServer,
irc.ReplyWhoisChannels: i.whoisChannels,
irc.ReplyEndOfWhois: i.whoisEnd,
irc.ReplyNoTopic: i.noTopic,
irc.ReplyTopic: i.topic,
irc.ReplyNamReply: i.names,
irc.ReplyEndOfNames: i.namesEnd,
irc.ReplyMotdStart: i.motdStart,
irc.ReplyMotd: i.motd,
irc.ReplyEndOfMotd: i.motdEnd,
irc.Nick: i.nick,
irc.Join: i.join,
irc.Part: i.part,
irc.Mode: i.mode,
irc.Privmsg: i.message,
irc.Notice: i.message,
irc.Quit: i.quit,
irc.Topic: i.topic,
irc.ReplyWelcome: i.info,
irc.ReplyYourHost: i.info,
irc.ReplyCreated: i.info,
irc.ReplyLUserClient: i.info,
irc.ReplyLUserOp: i.info,
irc.ReplyLUserUnknown: i.info,
irc.ReplyLUserChannels: i.info,
irc.ReplyLUserMe: i.info,
irc.ReplyWhoisUser: i.whoisUser,
irc.ReplyWhoisServer: i.whoisServer,
irc.ReplyWhoisChannels: i.whoisChannels,
irc.ReplyEndOfWhois: i.whoisEnd,
irc.ReplyNoTopic: i.noTopic,
irc.ReplyTopic: i.topic,
irc.ReplyNamReply: i.names,
irc.ReplyEndOfNames: i.namesEnd,
irc.ReplyMotdStart: i.motdStart,
irc.ReplyMotd: i.motd,
irc.ReplyEndOfMotd: i.motdEnd,
irc.ErrErroneousNickname: i.badNick,
}
}

View file

@ -304,3 +304,21 @@ func TestHandleIRCMotd(t *testing.T) {
Content: []string{"line 1", "line 2"},
}, <-s.broadcast)
}
func TestHandleIRCBadNick(t *testing.T) {
c := irc.NewClient("nick", "user")
c.Host = "host.com"
s := NewSession(nil)
i := newIRCHandler(c, s)
i.dispatchMessage(&irc.Message{
Command: irc.ErrErroneousNickname,
})
// It should print the error message first
<-s.broadcast
checkResponse(t, "nick_fail", NickFail{
Server: "host.com",
}, <-s.broadcast)
}

View file

@ -28,8 +28,12 @@ type Connect struct {
type Nick struct {
Server string `json:"server"`
Old string `json:"old"`
New string `json:"new"`
Old string `json:"oldNick"`
New string `json:"newNick"`
}
type NickFail struct {
Server string `json:"server"`
}
type Join struct {