hide favorite / rating from playlist album view items

This commit is contained in:
jeffvli
2026-02-13 17:39:35 -08:00
parent 9e63ee2735
commit 9eb879fc37
2 changed files with 17 additions and 5 deletions
@@ -28,7 +28,13 @@ import {
SongListSort, SongListSort,
SortOrder, SortOrder,
} from '/@/shared/types/domain-types'; } from '/@/shared/types/domain-types';
import { ItemListKey, ListDisplayType, ListPaginationType, Play } from '/@/shared/types/types'; import {
ItemListKey,
ListDisplayType,
ListPaginationType,
Play,
TableColumn,
} from '/@/shared/types/types';
export const PlaylistDetailAlbumView = ({ data }: { data: PlaylistSongListResponse }) => { export const PlaylistDetailAlbumView = ({ data }: { data: PlaylistSongListResponse }) => {
const player = usePlayer(); const player = usePlayer();
@@ -75,6 +81,7 @@ export const PlaylistDetailAlbumView = ({ data }: { data: PlaylistSongListRespon
const albumControlOverrides = useMemo<Partial<ItemControls>>(() => { const albumControlOverrides = useMemo<Partial<ItemControls>>(() => {
return { return {
onFavorite: undefined,
onMore: ({ event, internalState, item }: DefaultItemControlProps) => { onMore: ({ event, internalState, item }: DefaultItemControlProps) => {
if (!event) return; if (!event) return;
@@ -119,6 +126,7 @@ export const PlaylistDetailAlbumView = ({ data }: { data: PlaylistSongListRespon
} }
player.addToQueueByFetch(item._serverId, [item.id], itemType, playType); player.addToQueueByFetch(item._serverId, [item.id], itemType, playType);
}, },
onRating: undefined,
}; };
}, [player]); }, [player]);
@@ -147,6 +155,13 @@ export const PlaylistDetailAlbumView = ({ data }: { data: PlaylistSongListRespon
}); });
const rows = useGridRows(LibraryItem.ALBUM, ItemListKey.PLAYLIST_ALBUM, grid.size); const rows = useGridRows(LibraryItem.ALBUM, ItemListKey.PLAYLIST_ALBUM, grid.size);
const tableColumns = useMemo(() => {
return table.columns.filter(
(column) =>
column.id !== TableColumn.USER_FAVORITE && column.id !== TableColumn.USER_RATING,
);
}, [table.columns]);
const renderAlbumList = () => { const renderAlbumList = () => {
switch (display) { switch (display) {
case ListDisplayType.DETAIL: case ListDisplayType.DETAIL:
@@ -193,7 +208,7 @@ export const PlaylistDetailAlbumView = ({ data }: { data: PlaylistSongListRespon
<ItemTableList <ItemTableList
autoFitColumns={table.autoFitColumns} autoFitColumns={table.autoFitColumns}
CellComponent={ItemTableListColumn} CellComponent={ItemTableListColumn}
columns={table.columns} columns={tableColumns}
data={albumsToRender} data={albumsToRender}
enableAlternateRowColors={table.enableAlternateRowColors} enableAlternateRowColors={table.enableAlternateRowColors}
enableHeader={table.enableHeader} enableHeader={table.enableHeader}
@@ -100,7 +100,6 @@ export type OverridePlaylistSongListQuery = Omit<Partial<PlaylistSongListQuery>,
interface PlaylistDetailSongListViewProps { interface PlaylistDetailSongListViewProps {
data: PlaylistSongListResponse; data: PlaylistSongListResponse;
/** When provided, table/grid use this instead of computing from data (avoids duplicate filter/sort). */
items?: Song[]; items?: Song[];
} }
@@ -283,7 +282,6 @@ export const PlaylistDetailSongListEdit = ({ data }: { data: PlaylistSongListRes
} }
}; };
/** Track view: view mode uses centralized list derivation; edit mode uses local reorder state. */
const PlaylistDetailTrackView = ({ data }: { data: PlaylistSongListResponse }) => { const PlaylistDetailTrackView = ({ data }: { data: PlaylistSongListResponse }) => {
const { isSmartPlaylist, mode } = useListContext(); const { isSmartPlaylist, mode } = useListContext();
@@ -298,7 +296,6 @@ const PlaylistDetailTrackView = ({ data }: { data: PlaylistSongListResponse }) =
return <PlaylistDetailTrackViewContent data={data} />; return <PlaylistDetailTrackViewContent data={data} />;
}; };
/** Uses usePlaylistTrackList once and passes derived items to the list view. */
const PlaylistDetailTrackViewContent = ({ data }: { data: PlaylistSongListResponse }) => { const PlaylistDetailTrackViewContent = ({ data }: { data: PlaylistSongListResponse }) => {
const { sortedAndFilteredSongs } = usePlaylistTrackList(data); const { sortedAndFilteredSongs } = usePlaylistTrackList(data);
return <PlaylistDetailSongListView data={data} items={sortedAndFilteredSongs} />; return <PlaylistDetailSongListView data={data} items={sortedAndFilteredSongs} />;