forked from External/ergo
Implement message-ids draft
This commit is contained in:
parent
79d8636c6d
commit
e741c1476b
6 changed files with 65 additions and 41 deletions
|
|
@ -372,21 +372,21 @@ func (channel *Channel) CanSpeak(client *Client) bool {
|
|||
}
|
||||
|
||||
// TagMsg sends a tag message to everyone in this channel who can accept them.
|
||||
func (channel *Channel) TagMsg(minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client) {
|
||||
channel.sendMessage("TAGMSG", []Capability{MessageTags}, minPrefix, clientOnlyTags, client, nil)
|
||||
func (channel *Channel) TagMsg(msgid string, minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client) {
|
||||
channel.sendMessage(msgid, "TAGMSG", []Capability{MessageTags}, minPrefix, clientOnlyTags, client, nil)
|
||||
}
|
||||
|
||||
// PrivMsg sends a private message to everyone in this channel.
|
||||
func (channel *Channel) PrivMsg(minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message string) {
|
||||
channel.sendMessage("PRIVMSG", nil, minPrefix, clientOnlyTags, client, &message)
|
||||
func (channel *Channel) PrivMsg(msgid string, minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message string) {
|
||||
channel.sendMessage(msgid, "PRIVMSG", nil, minPrefix, clientOnlyTags, client, &message)
|
||||
}
|
||||
|
||||
// Notice sends a private message to everyone in this channel.
|
||||
func (channel *Channel) Notice(minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message string) {
|
||||
channel.sendMessage("NOTICE", nil, minPrefix, clientOnlyTags, client, &message)
|
||||
func (channel *Channel) Notice(msgid string, minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message string) {
|
||||
channel.sendMessage(msgid, "NOTICE", nil, minPrefix, clientOnlyTags, client, &message)
|
||||
}
|
||||
|
||||
func (channel *Channel) sendMessage(cmd string, requiredCaps []Capability, minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message *string) {
|
||||
func (channel *Channel) sendMessage(msgid, cmd string, requiredCaps []Capability, minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message *string) {
|
||||
if !channel.CanSpeak(client) {
|
||||
client.Send(nil, client.server.name, ERR_CANNOTSENDTOCHAN, channel.name, "Cannot send to channel")
|
||||
return
|
||||
|
|
@ -419,33 +419,30 @@ func (channel *Channel) sendMessage(cmd string, requiredCaps []Capability, minPr
|
|||
continue
|
||||
}
|
||||
|
||||
var messageTagsToUse *map[string]ircmsg.TagValue
|
||||
if member.capabilities[MessageTags] {
|
||||
if message == nil {
|
||||
member.SendFromClient(client, clientOnlyTags, client.nickMaskString, cmd, channel.name)
|
||||
} else {
|
||||
member.SendFromClient(client, clientOnlyTags, client.nickMaskString, cmd, channel.name, *message)
|
||||
}
|
||||
messageTagsToUse = clientOnlyTags
|
||||
}
|
||||
|
||||
if message == nil {
|
||||
member.SendFromClient(msgid, client, messageTagsToUse, client.nickMaskString, cmd, channel.name)
|
||||
} else {
|
||||
if message == nil {
|
||||
member.SendFromClient(client, nil, client.nickMaskString, cmd, channel.name)
|
||||
} else {
|
||||
member.SendFromClient(client, nil, client.nickMaskString, cmd, channel.name, *message)
|
||||
}
|
||||
member.SendFromClient(msgid, client, messageTagsToUse, client.nickMaskString, cmd, channel.name, *message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// SplitPrivMsg sends a private message to everyone in this channel.
|
||||
func (channel *Channel) SplitPrivMsg(minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message SplitMessage) {
|
||||
channel.sendSplitMessage("PRIVMSG", minPrefix, clientOnlyTags, client, message)
|
||||
func (channel *Channel) SplitPrivMsg(msgid string, minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message SplitMessage) {
|
||||
channel.sendSplitMessage(msgid, "PRIVMSG", minPrefix, clientOnlyTags, client, message)
|
||||
}
|
||||
|
||||
// SplitNotice sends a private message to everyone in this channel.
|
||||
func (channel *Channel) SplitNotice(minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message SplitMessage) {
|
||||
channel.sendSplitMessage("NOTICE", minPrefix, clientOnlyTags, client, message)
|
||||
func (channel *Channel) SplitNotice(msgid string, minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message SplitMessage) {
|
||||
channel.sendSplitMessage(msgid, "NOTICE", minPrefix, clientOnlyTags, client, message)
|
||||
}
|
||||
|
||||
func (channel *Channel) sendSplitMessage(cmd string, minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message SplitMessage) {
|
||||
func (channel *Channel) sendSplitMessage(msgid, cmd string, minPrefix *ChannelMode, clientOnlyTags *map[string]ircmsg.TagValue, client *Client, message SplitMessage) {
|
||||
if !channel.CanSpeak(client) {
|
||||
client.Send(nil, client.server.name, ERR_CANNOTSENDTOCHAN, channel.name, "Cannot send to channel")
|
||||
return
|
||||
|
|
@ -468,9 +465,9 @@ func (channel *Channel) sendSplitMessage(cmd string, minPrefix *ChannelMode, cli
|
|||
continue
|
||||
}
|
||||
if member.capabilities[MessageTags] {
|
||||
member.SendSplitMsgFromClient(client, clientOnlyTags, cmd, channel.name, message)
|
||||
member.SendSplitMsgFromClient(msgid, client, clientOnlyTags, cmd, channel.name, message)
|
||||
} else {
|
||||
member.SendSplitMsgFromClient(client, nil, cmd, channel.name, message)
|
||||
member.SendSplitMsgFromClient(msgid, client, nil, cmd, channel.name, message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue