Skip to content

Latest commit

 

History

History
49 lines (42 loc) · 3.09 KB

File metadata and controls

49 lines (42 loc) · 3.09 KB

UI integration update

Bug fixes applied

  • FIXED: API Gateway route matching: Now handles both /api/v1/channels and /api/v1/channels/* (same for podcasts)

Dummy data removed or reduced

  • 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.

APIs integrated

  • GET /v1/channels/subscriptions
  • POST /v1/channels/unsubscribe/:channelId
  • GET /v1/channels/me
  • POST /v1/channels
  • GET /v1/channels/:channelId
  • GET /v1/channels/isSubscribed/:channelId
  • POST /v1/channels/subscribe/:channelId
  • GET /v1/podcasts/channel/:channelId
  • GET /v1/podcasts/:podcastId
  • POST /v1/auth/refresh
  • NEW: GET /v1/podcasts (public, no auth required)

Backend extensions added

  • NEW: Added findAll() method to PodcastRepository that 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/podcasts endpoint without authentication

Pages and components completed

  • SubscribedChannels now loads real subscribed channels, supports search/sort, and unsubscribes through the backend.
  • Studio channel 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: FeedGrid now loads real public podcasts, maps backend data to UI format, and has graceful fallback to mock data.

Auth refresh handling changes

  • 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 isSubscribed channel API typing to match the backend response shape.

Remaining backend gaps / UI limitations

  • 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.