diff --git a/src/locales/de.ts b/src/locales/de.ts index 7de4bd56..2f373e27 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -1282,6 +1282,7 @@ export const deTranslation = { deleteSuccess: '{{count}} Playlists gelöscht', deleteFailed: 'Fehler beim Löschen von {{name}}', deleteSelected: 'Ausgewählte löschen', + deleteSelectedPartial: 'Nur {{n}} von {{total}} ausgewählten Playlists können gelöscht werden (die anderen gehören jemand anderem).', mergeSuccess: '{{count}} Songs in {{playlist}} zusammengeführt', mergeNoNewSongs: 'Keine neuen Songs zum Hinzufügen', mergeError: 'Fehler beim Zusammenführen von Playlists', diff --git a/src/locales/en.ts b/src/locales/en.ts index 4336a810..57e49a47 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -1285,6 +1285,7 @@ export const enTranslation = { deleteSuccess: '{{count}} playlists deleted', deleteFailed: 'Error deleting {{name}}', deleteSelected: 'Delete selected', + deleteSelectedPartial: 'Only {{n}} of {{total}} selected playlists can be deleted (the others belong to someone else).', mergeSuccess: '{{count}} songs merged into {{playlist}}', mergeNoNewSongs: 'No new songs to add', mergeError: 'Error merging playlists', diff --git a/src/locales/es.ts b/src/locales/es.ts index 2a525823..f14d62e5 100644 --- a/src/locales/es.ts +++ b/src/locales/es.ts @@ -1275,6 +1275,7 @@ export const esTranslation = { deleteSuccess: '{{count}} listas eliminadas', deleteFailed: 'Error al eliminar {{name}}', deleteSelected: 'Eliminar seleccionadas', + deleteSelectedPartial: 'Solo {{n}} de {{total}} listas seleccionadas pueden eliminarse (las demás pertenecen a otro usuario).', mergeSuccess: '{{count}} canciones unificadas en {{playlist}}', mergeNoNewSongs: 'No hay canciones nuevas para agregar', mergeError: 'Error al unificar listas', diff --git a/src/locales/fr.ts b/src/locales/fr.ts index 0e651e88..4a2ee265 100644 --- a/src/locales/fr.ts +++ b/src/locales/fr.ts @@ -1270,6 +1270,7 @@ export const frTranslation = { deleteSuccess: '{{count}} playlists supprimées', deleteFailed: 'Erreur lors de la suppression de {{name}}', deleteSelected: 'Supprimer la sélection', + deleteSelectedPartial: 'Seulement {{n}} des {{total}} playlists sélectionnées peuvent être supprimées (les autres appartiennent à quelqu\'un d\'autre).', mergeSuccess: '{{count}} morceaux fusionnés dans {{playlist}}', mergeNoNewSongs: 'Aucun nouveau morceau à ajouter', mergeError: 'Erreur lors de la fusion des playlists', diff --git a/src/locales/nb.ts b/src/locales/nb.ts index 863b6a88..d4b0831f 100644 --- a/src/locales/nb.ts +++ b/src/locales/nb.ts @@ -1269,6 +1269,7 @@ export const nbTranslation = { deleteSuccess: '{{count}} spillelister slettet', deleteFailed: 'Feil ved sletting av {{name}}', deleteSelected: 'Slett valgte', + deleteSelectedPartial: 'Bare {{n}} av {{total}} valgte spillelister kan slettes (de andre tilhører noen andre).', mergeSuccess: '{{count}} sanger slått sammen i {{playlist}}', mergeNoNewSongs: 'Ingen nye sanger å legge til', mergeError: 'Feil ved sammenslåing av spillelister', diff --git a/src/locales/nl.ts b/src/locales/nl.ts index a732adec..b6383b79 100644 --- a/src/locales/nl.ts +++ b/src/locales/nl.ts @@ -1269,6 +1269,7 @@ export const nlTranslation = { deleteSuccess: '{{count}} playlists verwijderd', deleteFailed: 'Fout bij verwijderen van {{name}}', deleteSelected: 'Geselecteerde verwijderen', + deleteSelectedPartial: 'Slechts {{n}} van de {{total}} geselecteerde playlists kunnen worden verwijderd (de andere zijn van iemand anders).', mergeSuccess: '{{count}} nummers samengevoegd in {{playlist}}', mergeNoNewSongs: 'Geen nieuwe nummers om toe te voegen', mergeError: 'Fout bij samenvoegen van playlists', diff --git a/src/locales/ru.ts b/src/locales/ru.ts index 1ca30e29..834e7d12 100644 --- a/src/locales/ru.ts +++ b/src/locales/ru.ts @@ -1349,6 +1349,7 @@ export const ruTranslation = { deleteSuccess: '{{count}} плейлистов удалено', deleteFailed: 'Ошибка при удалении {{name}}', deleteSelected: 'Удалить выбранные', + deleteSelectedPartial: 'Можно удалить только {{n}} из {{total}} выбранных плейлистов (остальные принадлежат другим пользователям).', mergeSuccess: '{{count}} треков объединено в {{playlist}}', mergeNoNewSongs: 'Нет новых треков для добавления', mergeError: 'Ошибка при объединении плейлистов', diff --git a/src/locales/zh.ts b/src/locales/zh.ts index c55f0360..7ad1bf1d 100644 --- a/src/locales/zh.ts +++ b/src/locales/zh.ts @@ -1264,6 +1264,7 @@ export const zhTranslation = { deleteSuccess: '{{count}} 个播放列表已删除', deleteFailed: '删除 {{name}} 时出错', deleteSelected: '删除所选', + deleteSelectedPartial: '所选 {{total}} 个播放列表中只有 {{n}} 个可删除(其余属于他人)。', mergeSuccess: '{{count}} 首歌曲已合并到 {{playlist}}', mergeNoNewSongs: '没有新歌曲可添加', mergeError: '合并播放列表时出错', diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index e7a4137b..86a72937 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -16,6 +16,7 @@ const HOME_DISCOVER_SLICE = 20; export default function Home() { const homeSections = useHomeStore(s => s.sections); + const activeServerId = useAuthStore(s => s.activeServerId); const musicLibraryFilterVersion = useAuthStore(s => s.musicLibraryFilterVersion); const mixMinRatingFilterEnabled = useAuthStore(s => s.mixMinRatingFilterEnabled); const mixMinRatingAlbum = useAuthStore(s => s.mixMinRatingAlbum); @@ -70,6 +71,7 @@ export default function Home() { })(); return () => { cancelled = true; }; }, [ + activeServerId, musicLibraryFilterVersion, homeSections, mixMinRatingFilterEnabled, diff --git a/src/pages/Playlists.tsx b/src/pages/Playlists.tsx index 164fda9a..b14f7109 100644 --- a/src/pages/Playlists.tsx +++ b/src/pages/Playlists.tsx @@ -734,6 +734,23 @@ export default function Playlists() { )} )} + {selectionMode && selectedIds.size > 0 && (() => { + const deletableCount = selectedPlaylists.filter(isPlaylistDeletable).length; + return ( + + ); + })()}