Skip to content

Conversation

@MiSikora
Copy link
Contributor

Description

This adds bulk add operation to episode lists and up next queue.

Closes PCDROID-413

Testing Instructions

  1. Open any podcast.
  2. Select a couple of episode.
  3. Tap "Add to playlist" toolbar action.
  4. Verify creating a playlist with multiple episode.
  5. Verify adding multiple episodes to a playlist.
  6. Verify removing multiple episodes from a playlist.
  7. Add custom files to Up Next.
  8. Verify that you cannot use bulk add episodes action if a custom file is selected.
  9. Open a podcast like "Stuff you should know" with a lot of episodes.
  10. Select 1000+ episodes.
  11. Try to bulk add them.
  12. Verify that you cannot do it.
  13. Verify that adding to a playlist flow uses multi_select source in analytics.
  14. Verify that adding more than one episode triggers episode_added_to_list_bulk event.
    1. Verify that removing more than one episode triggers episode_removed_from_list_bulk event.

Screenshots or Screencast

A B C D
image image image image

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

@MiSikora MiSikora added this to the 8.5 milestone Jan 29, 2026
Copilot AI review requested due to automatic review settings January 29, 2026 12:32
@MiSikora MiSikora requested a review from a team as a code owner January 29, 2026 12:32
@MiSikora MiSikora requested review from geekygecko and removed request for a team January 29, 2026 12:32
Copy link
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

This PR adds a bulk "Add to playlist" action to episode lists and the Up Next queue, allowing users to select multiple podcast episodes and add them to playlists. The implementation includes validation to prevent adding custom files or exceeding the 1000-episode playlist limit, along with appropriate analytics tracking for bulk operations.

Changes:

  • Added "Add to playlist" toolbar action to multiselect mode for episode lists and Up Next queue
  • Refactored AddToPlaylistFragmentFactory to accept a list of episodes instead of a single episode
  • Implemented validation to block adding user episodes and enforce the 1000-episode limit
  • Added bulk analytics events (EPISODE_ADDED_TO_LIST_BULK and EPISODE_REMOVED_FROM_LIST_BULK)
  • Enhanced UI feedback with appropriate error messages for different limit scenarios

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
menu_multiselect_upnext.xml Added "Add to playlist" menu item for Up Next multiselect toolbar
AddToPlaylistFragmentFactory.kt Refactored interface to support bulk episodes; added MultiSelect source; changed single-episode method to delegate to bulk method
MultiSelectEpisodesHelper.kt Added addToPlaylist function with validation for user episodes and episode count limits
MultiSelectEpisodeAction.kt Added AddToPlaylist action object and included it in the standard actions list
ids.xml Added menu_add_to_playlist ID resource
strings.xml Added error messages for playlist limits and episode type restrictions
AnalyticsEvent.kt Added bulk episode analytics events
AddToPlaylistViewModel.kt Implemented analytics tracking for bulk add/remove operations
AddToPlaylistPage.kt Changed callback signature to return boolean for validation feedback
AddToPlaylistFragment.kt Enhanced limit validation with differentiated error messages for various scenarios
SharingModule.kt Updated factory implementation to use new bulk episodes interface

Copilot AI review requested due to automatic review settings January 29, 2026 13:50
Copy link
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 13 out of 13 changed files in this pull request and generated no new comments.

Copy link
Member

@geekygecko geekygecko left a comment

Choose a reason for hiding this comment

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

That worked great in my testing. There was only a minor issue, when I navigated to Up Next from the full screen player, I didn't see the snackbar warning that playlists can only contain podcast episodes.

Screen.Recording.2026-01-30.at.1.38.02.pm.mov

@MiSikora MiSikora force-pushed the mehow/task/add-episode-multiple-preview-logic branch from c02ad0d to d132d8d Compare January 30, 2026 06:03
Base automatically changed from mehow/task/add-episode-multiple-preview-logic to main January 30, 2026 06:33
@MiSikora MiSikora force-pushed the mehow/task/bulk-add-toolbar-action branch from 97f07dd to c75676c Compare January 30, 2026 06:37
@MiSikora MiSikora merged commit 8d307a0 into main Jan 30, 2026
19 checks passed
@MiSikora MiSikora deleted the mehow/task/bulk-add-toolbar-action branch January 30, 2026 07:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Area] Playlists [Type] Enhancement Improve an existing feature.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants