accounts: Add account-tag capability

This commit is contained in:
Daniel Oaks
2016-09-12 11:25:31 +10:00
parent c2aa31001a
commit 754b74c21c
4 changed files with 20 additions and 4 deletions
+2
View File
@@ -14,6 +14,7 @@ import (
type Capability string
const (
AccountTag Capability = "account-tag"
ExtendedJoin Capability = "extended-join"
MultiPrefix Capability = "multi-prefix"
SASL Capability = "sasl"
@@ -23,6 +24,7 @@ const (
var (
SupportedCapabilities = CapabilitySet{
AccountTag: true,
ExtendedJoin: true,
MultiPrefix: true,
SASL: true,
+2 -3
View File
@@ -304,8 +304,7 @@ func (channel *Channel) PrivMsg(client *Client, message string) {
if member == client {
continue
}
//TODO(dan): use nickmask instead of nickString here lel
member.Send(nil, client.nickMaskString, "PRIVMSG", channel.nameString, message)
member.SendFromClient(client, nil, client.nickMaskString, "PRIVMSG", channel.nameString, message)
}
}
@@ -452,7 +451,7 @@ func (channel *Channel) Notice(client *Client, message string) {
if member == client {
continue
}
member.Send(nil, client.nickMaskString, "NOTICE", channel.nameString, message)
member.SendFromClient(client, nil, client.nickMaskString, "NOTICE", channel.nameString, message)
}
}
+15
View File
@@ -349,6 +349,21 @@ func (client *Client) destroy() {
}
}
// SendFromClient sends an IRC line coming from a specific client.
// Adds account-tag to the line as well.
func (client *Client) SendFromClient(from *Client, tags *map[string]ircmsg.TagValue, prefix string, command string, params ...string) error {
// attach account-tag
if client.capabilities[AccountTag] && from.account != &NoAccount {
if tags == nil {
tags = ircmsg.MakeTags("account", from.account.Name)
} else {
(*tags)["account"] = ircmsg.MakeTagValue(from.account.Name)
}
}
return client.Send(tags, prefix, command, params...)
}
// Send sends an IRC line to the client.
func (client *Client) Send(tags *map[string]ircmsg.TagValue, prefix string, command string, params ...string) error {
// attach server-time