feat(eventsub): implement timeout stacking (#6013)

This commit is contained in:
nerix
2025-03-01 23:04:30 +01:00
committed by GitHub
parent 1332743716
commit 7ad3e50a94
12 changed files with 2334 additions and 76 deletions
+12 -7
View File
@@ -52,11 +52,6 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
break;
}
if (s->flags.has(MessageFlag::EventSub))
{
continue; // TODO: implement stacking for eventsub
}
if (timeoutStackStyle == TimeoutStackStyle::DontStackBeyondUserMessage)
{
if (s->loginName == message->timeoutUser &&
@@ -67,6 +62,14 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
}
}
bool newIsShared = message->flags.has(MessageFlag::SharedMessage);
bool oldIsShared = s->flags.has(MessageFlag::SharedMessage);
if (newIsShared != oldIsShared ||
(newIsShared && message->channelName != s->channelName))
{
continue;
}
if (s->flags.has(MessageFlag::Timeout) &&
s->timeoutUser == message->timeoutUser)
{
@@ -88,10 +91,12 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
uint32_t count = s->count + 1;
MessageBuilder replacement(timeoutMessage, message->timeoutUser,
message->loginName, message->searchText,
count, message->serverReceivedTime);
message->loginName, message->channelName,
message->searchText, count,
message->serverReceivedTime);
replacement->timeoutUser = message->timeoutUser;
replacement->channelName = message->channelName;
replacement->count = count;
replacement->flags = message->flags;