Clients without event-playback should receive client-only tags in
replayed PRIVMSG / NOTICE.
This commit is contained in:
Shivaram Lingamneni 2020-11-29 19:06:12 -05:00
parent 0fcaf778e0
commit e18eb1db99
1 changed files with 4 additions and 3 deletions

View File

@ -1050,7 +1050,8 @@ func (client *Client) replayPrivmsgHistory(rb *ResponseBuffer, items []history.I
} }
batchID = rb.StartNestedHistoryBatch(target) batchID = rb.StartNestedHistoryBatch(target)
allowTags := rb.session.capabilities.Has(caps.EventPlayback) hasEventPlayback := rb.session.capabilities.Has(caps.EventPlayback)
hasTags := rb.session.capabilities.Has(caps.MessageTags)
for _, item := range items { for _, item := range items {
var command string var command string
switch item.Type { switch item.Type {
@ -1059,7 +1060,7 @@ func (client *Client) replayPrivmsgHistory(rb *ResponseBuffer, items []history.I
case history.Notice: case history.Notice:
command = "NOTICE" command = "NOTICE"
case history.Tagmsg: case history.Tagmsg:
if allowTags { if hasEventPlayback && hasTags {
command = "TAGMSG" command = "TAGMSG"
} else { } else {
continue continue
@ -1068,7 +1069,7 @@ func (client *Client) replayPrivmsgHistory(rb *ResponseBuffer, items []history.I
continue continue
} }
var tags map[string]string var tags map[string]string
if allowTags { if hasTags {
tags = item.Tags tags = item.Tags
} }
// XXX: Params[0] is the message target. if the source of this message is an in-memory // XXX: Params[0] is the message target. if the source of this message is an in-memory