Description
Issue details
There a number of events received by the onEventReceived
listener that don't cause the widget to be added to the SE queue, and thus that shouldn't trigger a call to SE_API.resumeQueue()
. These events are referred to as skippable in the documentation/example widgets, and defined with this array:
let skippable=["bot:counter","event:test","event:skip","message","kvstore:update"];
However, this array is missing a critical type: "event"
. "event"
is the production equivalent of the dev/test one "event:test"
: any real event received from the corresponding platform (e.g. Twitch) is first received with listener: event
, which doesn't add widgets to the queue, and then the corresponding underlying event is broadcasted (e.g. subscriber-latest), which does add widgets to the queue. Therefore, by not having "event"
in the skippable list, queueing fails in production environments under certain scenarios, even though everything seems fine in the editor.
Other listeners are also missing in the array: "delete-message","delete-messages","alertService:toggleSound"
. The delete ones are probably the most impactful ones, as moderating chat messages is a frequent task that can unexpectedly interfere with widgets.
How to reproduce (for free!)
- Create a new overlay. Add the Gift Bomb widget of this repo, and a store redemptions widget
- Emulate a community gift to trigger the gift bomb widget, and inmediately emulate an item redemption. The item redemption alert will not be displayed until the gift bomb train has ended, as it's properly queued (the redemption is sent as
"event:test"
). This is the expected behaviour - Create a loyalty store item for testing, of type perk and cost 0 points. Now, emulate a community gift and right after redeem yourself the store item. The item redemption alert will be displayed while the gift bomb alert is still playing, because this widget has been incorrectly removed from the queue when receiving the
"event"
event of the redemption
What is affected by the issue
Documentation(PR [FIX] Include missing events in skippable array #29)- Certain widgets published in this repo and Streamelements itself: Gift Bomb/Season of Subgiving & Wheel of Fortune
- Potentially other widgets shared in the Discord. Since it seems no one has noticed this for a long time, and given it's a potentially breaking issue for some widgets, it might be a good thing to make some announcement for the devs