Add multiple accounts and fix podcasts#21
Merged
Promises merged 1 commit intoJun 1, 2026
Conversation
Fix Audible account login, podcast episode paging/downloads, and SAF cleanup. Podcast downloads use parent podcast title plus release date so external players sort episodes. Refs Promises#19 Refs Promises#20
Owner
|
Thank you!, could i sign you up as a tester for google play? I need 12 to publish, currently at 7. |
Contributor
Author
|
I'd already applied if I'd use play store. 🥹 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context
This PR fixes the Audible flows around account login, multi-account handling,
podcast library handling, podcast episode syncing, and podcast episode
downloads.
The user-facing problem was that Audible podcast parents and episodes were
imported enough to appear in the library, but the Android app still treated
parts of the flow like normal audiobooks. That caused account-screen crashes,
podcast parents with bogus duration/status display, paged podcast episode lists
that could not be opened cleanly, and downloaded podcast episodes being placed
under
Unknown Authorinstead of the podcast title.The download path also needed to be stable for external audiobook players:
podcast episodes should sort in release-date order and should be grouped by the
podcast title, not by an absent author.
Fixes #19
Fixes #20
What changed
Audible account and login hardening
The Android account screens now tolerate partially populated account data from
the Rust storage layer.
Changes include:
absent after Audible login.
This fixes the crash path where the UI attempted to read
namefrom anundefined account value.
Multi-account handling
Audible sync and download flows now preserve account ownership more carefully.
Changes include:
falling back blindly to the primary account;
back to the primary account;
request.
This matters for users with multiple Audible accounts because podcast episodes,
library rows, and download tasks should use the same account context that owns
the content.
Podcast parent library behavior
Podcast parents now behave as library containers instead of downloadable
audiobooks.
Changes include:
0h 0m;download state.
This keeps the main library focused on the podcast as a container while moving
episode-specific duration and download behavior to the episode screen.
Podcast episode paging
The podcast episode screen now syncs and lists episodes in pages.
Changes include:
The implementation stores episode metadata in the same library tables while
keeping
origin_asinlinked to the podcast parent.Podcast episode download support
Podcast episode downloads now use the plain podcast audio path instead of the
audiobook DRM-only path.
Changes include:
This keeps audiobook downloads unchanged while allowing podcast episodes to use
their own content-delivery behavior.
Podcast naming pattern
Podcast episode naming is now separate from audiobook naming.
Settings now includes Podcast Naming Pattern with two options:
Episode Folder:Podcast/2026-05-31 - Episode/2026-05-31 - Episode.mp3Flat Episode Files:Podcast/2026-05-31 - Episode.mp3The default is
Episode Folder.The Rust file-path builder detects podcast episodes from both new
PodcastEpisoderows and older synced rows that were stored asSinglePartBookbut have a podcast parent. It then uses:
.mp3output for podcast episodes.This fixes the
Unknown Authorfolder issue and makes downloaded episodes sortby release date in external players.
Download state cleanup
Marking podcast episodes as not downloaded now updates app state consistently.
Changes include:
DocumentFileand tree-walk fallback;state;
This keeps the database state, episode screen, and on-disk files aligned.
User-visible behavior
After this change:
where available.
sorting.
Review focus
The main review areas are:
SettingsScreen.Validation
Validation run for this branch:
npm run typecheckcargo check --manifest-path native/rust-core/Cargo.toml --libgit diff --check