- getModeratedChannels now follows the `after` cursor so moderators of
more than 100 channels aren't silently truncated at the first page
(mirrors getUserBlockedList's throttled recursion)
- add refreshModeratedChannels() and fire it on channel entry so mod
status reflects grants/revokes made since login
- regenerate user_store.g.dart, which also restores #576's moderation
action wrappers and the _moderatedChannels atom (its generated file
was never regenerated when #576 merged)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a reusable ModerationActions widget shown to channel moderators (and
the broadcaster) from both the message long-press menu and the user
panel. Supports delete message, timeout (10 min), ban, and remove
ban/timeout — the recovery action appears only when the target is
currently banned or timed out (tracked via CLEARCHAT). Surfaces Twitch's
own error reason when an action is rejected, and forces an immediate
chat re-render so a deleted/banned message reflects instantly.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>