Subscribe to leaderboard-exclusion updates and invoke handler for
every new or replaced entry in store.leaderboardExclusions.
Mirrors useOnScheduleTransition: the handler is stashed in a
ref so this hook subscribes exactly once (idempotent across
re-renders). The optional campaignIDs filter is compared each fire
— empty / undefined means "all campaigns".
Fires on the leading edge of a change: exclusion lists already
present on the store at mount time are treated as baseline and do
NOT fire the handler. Every subsequent push does. Reference identity
of the per-campaign array is guaranteed fresh by the mutator (see
_updateLeaderboardExclusionsForCampaign in @playlive/realtime-pipeline)
so !== is enough.
Soft-fails when no <RealtimePipelineProvider> is mounted — lets
consumers wire this into overlay hooks that may render outside a
pipeline provider (tests, demo mode) without a hard throw. Selector
hooks in this module continue to require a provider.
Subscribe to leaderboard-exclusion updates and invoke
handlerfor every new or replaced entry instore.leaderboardExclusions.Mirrors useOnScheduleTransition: the handler is stashed in a ref so this hook subscribes exactly once (idempotent across re-renders). The optional
campaignIDsfilter is compared each fire — empty / undefined means "all campaigns".Fires on the leading edge of a change: exclusion lists already present on the store at mount time are treated as baseline and do NOT fire the handler. Every subsequent push does. Reference identity of the per-campaign array is guaranteed fresh by the mutator (see
_updateLeaderboardExclusionsForCampaignin@playlive/realtime-pipeline) so!==is enough.Soft-fails when no
<RealtimePipelineProvider>is mounted — lets consumers wire this into overlay hooks that may render outside a pipeline provider (tests, demo mode) without a hard throw. Selector hooks in this module continue to require a provider.