You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(web): add duplicate playlist flow under the New nav button (#14319)
## Summary
Adds a **Duplicate Playlist** secondary action to the sidebar's `+`
(New) popup menu. Users paste any public Audius playlist URL, see a
preview of the source (title, description, cover art), and toggle
per-field switches to choose what to customize in the copy. The
duplicated playlist is created as private by default.
Stacks on top of #14318 (Create Playlist modal) — review/merge that
first.
**Scope:**
- Metadata-only duplication for v1: title, description, artwork. Tracks
are **not** copied in this PR — a follow-up will support full duplicate
including track contents. The modal surfaces this with a helper line so
users know to add tracks themselves.
- When the user keeps the source artwork, we pass the source's
`cover_art_sizes` CID through to the existing `createPlaylist` saga so
it reuses the cover instead of treating it as a new upload. No content
node re-upload required.
## Implementation
- New `DuplicatePlaylistModal` Redux modal slice (via existing
`createModal` helper) registered in modals types/reducers/parent state.
- New `DuplicatePlaylistModal` component using Harmony `Modal` +
`TextInput` + `Switch` + `TextArea` + `Artwork` + the existing
`UploadArtwork`.
- URL paste resolves through `getPathFromPlaylistUrl` →
`useCollectionByPermalink` to load the source collection.
- Wires "Duplicate Playlist" into `CreatePlaylistLibraryItemButton`
between Create Playlist and Create Folder.
## Test plan
- [ ] Sign in to the web app
- [ ] Left nav → `+` → **Duplicate Playlist**
- [ ] Paste a malformed URL → see inline "Enter a valid Audius playlist
URL"
- [ ] Paste a valid Audius playlist URL → preview card appears with the
source title, description, and artwork
- [ ] Submit with all three switches off → new playlist created with
`<Source Title> (Copy)`, the source description, and the source cover
art reused (no re-upload)
- [ ] Toggle "Customize title" → enter a custom name → that name wins
- [ ] Toggle "Customize description" → enter a custom description → that
description wins
- [ ] Toggle "Customize artwork" → upload a new image → custom image
wins
- [ ] Resulting playlist is private (Hidden) and the user is routed to
its edit page
- [ ] The "tracks not copied" note is visible in the modal
## Follow-ups
- Copy tracks from source to the duplicated playlist (probably via a new
`duplicatePlaylist` action + saga that chains `createPlaylist` then
`addTrackToPlaylist` per track).
- Paste-tracks-by-URL on the edit page (separate PR), which pairs
naturally with this once track copy lands.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments