- FIXED: API Gateway route matching: Now handles both
/api/v1/channelsand/api/v1/channels/*(same for podcasts)
- Replaced mocked subscribed channel data with real subscription data from the channel APIs.
- Removed the mock channel registry from the public channel page flow and converted it to a typed view-model file only.
- Updated the public podcast detail page to try the real podcast API first, with mock fallback only where backend support is still missing.
- NEW: Replaced mocked feed data with real podcasts from the new public API, with graceful mock fallback.
GET /v1/channels/subscriptionsPOST /v1/channels/unsubscribe/:channelIdGET /v1/channels/mePOST /v1/channelsGET /v1/channels/:channelIdGET /v1/channels/isSubscribed/:channelIdPOST /v1/channels/subscribe/:channelIdGET /v1/podcasts/channel/:channelIdGET /v1/podcasts/:podcastIdPOST /v1/auth/refresh- NEW:
GET /v1/podcasts(public, no auth required)
- NEW: Added
findAll()method toPodcastRepositorythat returns all public podcasts with channel and speaker data - NEW: Added
getAllPodcasts()service function - NEW: Added
handleGetAllPodcasts()controller - NEW: Added public GET route
/to podcast service routes - NEW: Updated api-gateway to expose public
GET /api/v1/podcastsendpoint without authentication
SubscribedChannelsnow loads real subscribed channels, supports search/sort, and unsubscribes through the backend.Studiochannel creation now uses the shared channel API client and refreshes query state instead of reloading the page.- Public channel
[slug]now resolves accessible real channels, fetches real podcasts, and supports subscribe/unsubscribe. - Public podcast
[slug]now resolves real podcasts by id when available. - NEW:
FeedGridnow loads real public podcasts, maps backend data to UI format, and has graceful fallback to mock data.
- Updated the shared axios interceptor so 401s retry through refresh for non-login/register/logout requests, including authenticated profile checks.
- Added auth-store cleanup when refresh fails so stale authenticated UI state is cleared.
- Fixed the
isSubscribedchannel API typing to match the backend response shape.
- There is no public backend route to resolve a channel directly by slug, so the public channel page can only resolve channels available through owned/subscribed channel APIs.
- Public podcast detail still uses fallback/mock data for unsupported sections like related conversations and comments.
- Rich public channel metadata such as verification/category is still derived from UI fallback values because the backend does not expose those fields.
- NEW: Feed does not yet support pagination/filtering on the backend.
- NEW: Podcast detail route now uses numeric podcast IDs instead of slugs for routing, to match the backend identifiers.