Skip to content

Add a Blog post loading page#5316

Open
geekygecko wants to merge 2 commits into
mainfrom
philip/blogs-loading-2
Open

Add a Blog post loading page#5316
geekygecko wants to merge 2 commits into
mainfrom
philip/blogs-loading-2

Conversation

@geekygecko
Copy link
Copy Markdown
Member

@geekygecko geekygecko commented May 18, 2026

Description

This change adds a loading state while the blog is having the post text converted to audio.

Fixes https://linear.app/a8c/issue/POC-621/android-add-a-loading-state-on-the-podcast-page

Testing Instructions

  1. Run the debug variant
  2. Go to the Profile tab, tap Blogs
  3. Enter a new blog such as from https://wordpress.com/discover/latest
  4. ✅ Verify the loading page is shown
  5. ✅ Verify the podcast page loads with an episode (The generation may take awhile but if you are lucky it will load in a minute or two)
  6. Repeat the process with an exiting blog such as https://android-developers.googleblog.com/
  7. ✅ Verify you aren't shown the loading an instead just the "Go to podcast" button

Screenshots / Video

Light Dark
Screenshot_20260518_141928 Screenshot_20260518_142005
Screen.Recording.2026-05-18.at.10.39.54.pm.mov

Checklist

  • If this is a user-facing change, I have added an entry in CHANGELOG.md
  • Ensure the linter passes (./gradlew spotlessApply to automatically apply formatting/linting)
  • I have considered whether it makes sense to add tests for my changes
  • All strings that need to be localized are in modules/services/localization/src/main/res/values/strings.xml
  • Any jetpack compose components I added or changed are covered by compose previews
  • I have updated (or requested that someone edit) the spreadsheet to reflect any new or changed analytics.

I have tested any UI changes...

  • with different themes
  • with a landscape orientation
  • with the device set to have a large display and font size
  • for accessibility with TalkBack

Copilot AI review requested due to automatic review settings May 18, 2026 12:43
@geekygecko geekygecko added this to the 8.13 milestone May 18, 2026
@dangermattic
Copy link
Copy Markdown
Collaborator

dangermattic commented May 18, 2026

1 Warning
⚠️ This PR is larger than 500 lines of changes. Please consider splitting it into smaller PRs for easier and faster reviews.

Generated by 🚫 Danger

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an intermediate “feed found / loading first episode” experience for blog-to-podcast creation, so users can see the followed feed and navigate once the podcast is ready.

Changes:

  • Adds localized strings and Compose UI for the new Found state.
  • Updates AddBlogViewModel to emit navigation events, wait for podcast creation, and poll for the first episode.
  • Updates fragment wiring and ViewModel tests for the new flow.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
modules/services/localization/src/main/res/values/strings.xml Adds user-facing strings for the new found/loading page.
modules/features/profile/src/test/kotlin/au/com/shiftyjelly/pocketcasts/profile/blogs/AddBlogViewModelTest.kt Updates existing tests and adds coverage for episode count and podcast wait behavior.
modules/features/profile/src/main/java/au/com/shiftyjelly/pocketcasts/profile/blogs/BlogsFragment.kt Collects podcast navigation events and passes new callbacks into the add-blog page.
modules/features/profile/src/main/java/au/com/shiftyjelly/pocketcasts/profile/blogs/AddBlogViewModel.kt Adds Found state, navigation event flow, subscription waiting, and episode polling.
modules/features/profile/src/main/java/au/com/shiftyjelly/pocketcasts/profile/blogs/AddBlogPage.kt Renders the new feed-found card, loading message, go-to-podcast button, and previews.
Comments suppressed due to low confidence (1)

modules/features/profile/src/main/java/au/com/shiftyjelly/pocketcasts/profile/blogs/AddBlogViewModel.kt:174

  • This polling path ignores the Boolean returned by refreshPodcastFeed. In PodcastManagerImpl, a true result means the refresh API reported EpisodeFound, but the actual podcast refresh is started asynchronously, so countEpisodesByPodcast can still be 0 immediately afterward. That can leave users on the loading page and trigger another 20-second poll even after the first episode is ready.
                    podcastManager.refreshPodcastFeed(podcast)
                    val count = podcastManager.countEpisodesByPodcast(podcast.uuid)
                    if (count > 0) {

@geekygecko geekygecko marked this pull request as ready for review May 19, 2026 12:11
@geekygecko geekygecko requested a review from a team as a code owner May 19, 2026 12:11
@geekygecko geekygecko requested review from Copilot and sztomek and removed request for a team May 19, 2026 12:11
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Comment thread modules/services/localization/src/main/res/values/strings.xml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants