fix: resolve gated status server-side, show lock icon, guard queue adds (#640)
* fix: resolve gated status server-side, show lock icon for inaccessible content
- add `gated: bool` field to TrackResponse that resolves access at serialization
- backend checks if viewer is owner or supporter before returning tracks
- add `get_supported_artists()` helper for batch atprotofans API checks
- change frontend icon from heart to lock for gated content
- lock only shows when content is actually inaccessible to the viewer
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs: add R2_PRIVATE_BUCKET to configuration docs
* fix: update portal page to use lock icon for gated tracks
* feat: show toast when non-supporter tries to queue gated track
adds sync guard function that uses server-resolved gated status
to show toast without network call when adding to queue.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
authored by
zzstoatzz.io
Claude Opus 4.5
and committed by
GitHub
058cede3
44d2260b