feat(eventsub): implement timeout stacking (#6013)
This commit is contained in:
@@ -43,13 +43,21 @@ void handleModerateMessage(
|
||||
|
||||
EventSubMessageBuilder builder(chan, time);
|
||||
builder->loginName = event.moderatorUserLogin.qt();
|
||||
// pretend we're pubsub
|
||||
builder->flags.set(MessageFlag::PubSub);
|
||||
|
||||
QString text;
|
||||
bool isShared = event.isFromSharedChat();
|
||||
|
||||
builder.appendUser(event.moderatorUserName, event.moderatorUserLogin, text);
|
||||
// XXX: We use regular links here instead of appendUser, because stacking
|
||||
// will create those as well. Once everything uses mention elements,
|
||||
// this can use them as well.
|
||||
|
||||
builder.emplaceSystemTextAndUpdate(event.moderatorUserLogin.qt(), text)
|
||||
->setLink({Link::UserInfo, event.moderatorUserLogin.qt()});
|
||||
builder.emplaceSystemTextAndUpdate("timed out", text);
|
||||
builder.appendUser(action.userName, action.userLogin, text);
|
||||
builder.emplaceSystemTextAndUpdate(action.userLogin.qt(), text)
|
||||
->setLink({Link::UserInfo, action.userLogin.qt()});
|
||||
|
||||
builder.emplaceSystemTextAndUpdate("for", text);
|
||||
builder
|
||||
@@ -60,10 +68,18 @@ void handleModerateMessage(
|
||||
if (isShared)
|
||||
{
|
||||
builder.emplaceSystemTextAndUpdate("in", text);
|
||||
builder.appendUser(*event.sourceBroadcasterUserName,
|
||||
*event.sourceBroadcasterUserLogin, text, false);
|
||||
builder
|
||||
.emplaceSystemTextAndUpdate(event.sourceBroadcasterUserLogin->qt(),
|
||||
text)
|
||||
->setLink({Link::UserInfo, event.sourceBroadcasterUserLogin->qt()})
|
||||
->setTrailingSpace(false);
|
||||
builder->flags.set(MessageFlag::SharedMessage);
|
||||
builder->channelName = event.sourceBroadcasterUserLogin->qt();
|
||||
}
|
||||
|
||||
assert(text.endsWith(' '));
|
||||
text.removeLast(); // trailing space
|
||||
|
||||
if (action.reason.view().empty())
|
||||
{
|
||||
builder.emplaceSystemTextAndUpdate(".", text);
|
||||
@@ -79,9 +95,8 @@ void handleModerateMessage(
|
||||
builder->timeoutUser = action.userLogin.qt();
|
||||
|
||||
auto msg = builder.release();
|
||||
runInGuiThread([chan, msg] {
|
||||
// TODO: addOrReplaceTimeout (doesn't work with shared chat yet)
|
||||
chan->addMessage(msg, MessageContext::Original);
|
||||
runInGuiThread([chan, msg, time] {
|
||||
chan->addOrReplaceTimeout(msg, time);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user