3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-12-23 03:02:48 +01:00

Merge pull request #469 from slingamn/issue468

fix #468
This commit is contained in:
Daniel Oaks 2019-04-29 05:01:43 +10:00 committed by GitHub
commit e387b7b328
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -469,29 +469,15 @@ func awayHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Resp
client.SetMode(modes.Away, isAway)
client.SetAwayMessage(awayMessage)
var op modes.ModeOp
if isAway {
op = modes.Add
rb.Add(nil, server.name, RPL_NOWAWAY, client.nick, client.t("You have been marked as being away"))
} else {
op = modes.Remove
rb.Add(nil, server.name, RPL_UNAWAY, client.nick, client.t("You are no longer marked as being away"))
}
//TODO(dan): Should this be sent automagically as part of setting the flag/mode?
modech := modes.ModeChanges{modes.ModeChange{
Mode: modes.Away,
Op: op,
}}
details := client.Details()
modeString := modech.String()
rb.Add(nil, server.name, "MODE", details.nick, modeString)
// dispatch away-notify
details := client.Details()
for session := range client.Friends(caps.AwayNotify) {
if session != rb.session && rb.session.client == client {
session.Send(nil, server.name, "MODE", details.nick, modeString)
}
if isAway {
session.sendFromClientInternal(false, time.Time{}, "", details.nickMask, details.account, nil, "AWAY", awayMessage)
} else {