mirror of
https://github.com/jeffvli/feishin.git
synced 2026-06-16 16:34:24 +02:00
hide favorite / rating from playlist album view items
This commit is contained in:
@@ -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} />;
|
||||||
|
|||||||
Reference in New Issue
Block a user