mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-11 06:29:29 +01:00
enhancements to SETNAME
Address SETNAME UX problems reported by @KoraggKnightWolf in #oragono: 1. No feedback by default on success or failure 2. Multi-word realnames are not correctly interpreted by some clients
This commit is contained in:
parent
9670d96282
commit
5dcb2bb60c
@ -2730,6 +2730,11 @@ func sceneHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Res
|
|||||||
// SETNAME <realname>
|
// SETNAME <realname>
|
||||||
func setnameHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
|
func setnameHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
|
||||||
realname := msg.Params[0]
|
realname := msg.Params[0]
|
||||||
|
if len(msg.Params) != 0 {
|
||||||
|
// workaround for clients that turn unknown commands into raw IRC lines,
|
||||||
|
// so you can do `/setname Jane Doe` in the client and get the expected result
|
||||||
|
realname = strings.Join(msg.Params, " ")
|
||||||
|
}
|
||||||
if realname == "" {
|
if realname == "" {
|
||||||
rb.Add(nil, server.name, "FAIL", "SETNAME", "INVALID_REALNAME", client.t("Realname is not valid"))
|
rb.Add(nil, server.name, "FAIL", "SETNAME", "INVALID_REALNAME", client.t("Realname is not valid"))
|
||||||
return false
|
return false
|
||||||
@ -2740,10 +2745,13 @@ func setnameHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *R
|
|||||||
|
|
||||||
// alert friends
|
// alert friends
|
||||||
now := time.Now().UTC()
|
now := time.Now().UTC()
|
||||||
for session := range client.Friends(caps.SetName) {
|
friends := client.Friends(caps.SetName)
|
||||||
|
delete(friends, rb.session)
|
||||||
|
for session := range friends {
|
||||||
session.sendFromClientInternal(false, now, "", details.nickMask, details.accountName, nil, "SETNAME", details.realname)
|
session.sendFromClientInternal(false, now, "", details.nickMask, details.accountName, nil, "SETNAME", details.realname)
|
||||||
}
|
}
|
||||||
|
// respond to the user unconditionally, even if they don't have the cap
|
||||||
|
rb.AddFromClient(now, "", details.nickMask, details.accountName, nil, "SETNAME", details.realname)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user