Port remove song of playlist from tempus ng (#457)

* feat: implement track removal from playlists with real-time UI updates

- Added 'Remove from playlist' option to song bottom sheet (appears only when inside a playlist)
- Implemented immediate UI refresh for track count and duration in playlist header
- Fixed a bug where shuffling for covers scrambled the actual playlist song order
- Improved PlaylistPageViewModel to clear stale data and handle isolated updates correctly
- Added dedicated success/failure messages for track removal in English and Italian
- Unified heart icon size to 14dp across all track list items

* fix: missing code from port process

The cherry-pick was missing the database getter
and the function to remove a song from a playlist

---------

Co-authored-by: beeetfarmer <176325048+beeetfarmer@users.noreply.github.com>
This commit is contained in:
Tom 2026-02-25 16:37:43 -03:00 committed by GitHub
parent b403d69982
commit 4f8212d491
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 256 additions and 20 deletions

View file

@ -164,6 +164,20 @@
android:paddingBottom="12dp"
android:text="@string/song_bottom_sheet_remove" />
<TextView
android:id="@+id/remove_from_playlist_text_view"
style="@style/LabelMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:paddingStart="20dp"
android:paddingTop="12dp"
android:paddingEnd="20dp"
android:paddingBottom="12dp"
android:text="@string/song_bottom_sheet_remove_from_playlist"
android:visibility="gone" />
<TextView
android:id="@+id/add_to_playlist_text_view"
style="@style/LabelMedium"

View file

@ -228,6 +228,8 @@
<string name="playlist_chooser_dialog_title">Aggiungi a una playlist</string>
<string name="playlist_chooser_dialog_toast_add_success">Aggiunta di un brano alla playlist</string>
<string name="playlist_chooser_dialog_toast_add_failure">Impossibile aggiungere un brano alla playlist</string>
<string name="playlist_chooser_dialog_toast_remove_success">Canzone rimossa dalla playlist</string>
<string name="playlist_chooser_dialog_toast_remove_failure">Impossibile rimuovere la canzone dalla playlist</string>
<string name="playlist_chooser_dialog_toast_all_skipped">Tutte le canzoni sono state saltate perché duplicate</string>
<string name="playlist_chooser_dialog_visibility_public">Pubblico</string>
<string name="playlist_chooser_dialog_visibility_private">Privato</string>
@ -448,7 +450,8 @@
<string name="song_bottom_sheet_instant_mix">Mix istantaneo</string>
<string name="song_bottom_sheet_play_next">Riproduci dopo</string>
<string name="song_bottom_sheet_rate">Valuta</string>
<string name="song_bottom_sheet_remove">Rimuovi</string>
<string name="song_bottom_sheet_remove">Rimuovi dal dispositivo</string>
<string name="song_bottom_sheet_remove_from_playlist">Rimuovi dalla playlist</string>
<string name="song_bottom_sheet_share">Condividi</string>
<string name="song_list_page_downloaded">Scaricato</string>
<string name="song_list_page_most_played">Tracce più riprodotte</string>

View file

@ -239,6 +239,8 @@
<string name="playlist_chooser_dialog_title">Add to a playlist</string>
<string name="playlist_chooser_dialog_toast_add_success">Added song(s) to playlist</string>
<string name="playlist_chooser_dialog_toast_add_failure">Failed to add song(s) to playlist</string>
<string name="playlist_chooser_dialog_toast_remove_success">Removed song from playlist</string>
<string name="playlist_chooser_dialog_toast_remove_failure">Failed to remove song from playlist</string>
<string name="playlist_chooser_dialog_toast_all_skipped">All songs were skipped as duplicates</string>
<string name="playlist_chooser_dialog_visibility_public">Public</string>
<string name="playlist_chooser_dialog_visibility_private">Private</string>
@ -472,7 +474,8 @@
<string name="song_bottom_sheet_instant_mix">Instant mix</string>
<string name="song_bottom_sheet_play_next">Play next</string>
<string name="song_bottom_sheet_rate">Rate</string>
<string name="song_bottom_sheet_remove">Remove</string>
<string name="song_bottom_sheet_remove">Remove from device</string>
<string name="song_bottom_sheet_remove_from_playlist">Remove from playlist</string>
<string name="song_bottom_sheet_share">Share</string>
<string name="song_list_page_downloaded">Downloaded</string>
<string name="song_list_page_most_played">Most played tracks</string>