2023-10-30 19:22:45 -07:00
|
|
|
import { useTranslation } from 'react-i18next';
|
2025-05-18 14:03:18 -07:00
|
|
|
|
2025-06-24 00:04:36 -07:00
|
|
|
import { PageHeader } from '/@/renderer/components/page-header/page-header';
|
2023-01-13 13:51:19 -08:00
|
|
|
import { usePlayQueueAdd } from '/@/renderer/features/player';
|
2023-02-07 22:47:23 -08:00
|
|
|
import { LibraryHeaderBar } from '/@/renderer/features/shared';
|
|
|
|
|
import { usePlayButtonBehavior } from '/@/renderer/store/settings.store';
|
2025-06-24 00:04:36 -07:00
|
|
|
import { Badge } from '/@/shared/components/badge/badge';
|
|
|
|
|
import { SpinnerIcon } from '/@/shared/components/spinner/spinner';
|
2025-05-20 19:23:36 -07:00
|
|
|
import { QueueSong } from '/@/shared/types/domain-types';
|
|
|
|
|
import { Play } from '/@/shared/types/types';
|
2023-01-13 13:51:19 -08:00
|
|
|
|
|
|
|
|
interface AlbumArtistDetailTopSongsListHeaderProps {
|
2023-07-01 19:10:05 -07:00
|
|
|
data: QueueSong[];
|
|
|
|
|
itemCount?: number;
|
|
|
|
|
title: string;
|
2023-01-13 13:51:19 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const AlbumArtistDetailTopSongsListHeader = ({
|
2023-07-01 19:10:05 -07:00
|
|
|
data,
|
2025-05-18 14:03:18 -07:00
|
|
|
itemCount,
|
|
|
|
|
title,
|
2023-01-13 13:51:19 -08:00
|
|
|
}: AlbumArtistDetailTopSongsListHeaderProps) => {
|
2023-10-30 19:22:45 -07:00
|
|
|
const { t } = useTranslation();
|
2023-07-01 19:10:05 -07:00
|
|
|
const handlePlayQueueAdd = usePlayQueueAdd();
|
|
|
|
|
const playButtonBehavior = usePlayButtonBehavior();
|
2023-01-13 13:51:19 -08:00
|
|
|
|
2023-07-01 19:10:05 -07:00
|
|
|
const handlePlay = async (playType: Play) => {
|
|
|
|
|
handlePlayQueueAdd?.({
|
|
|
|
|
byData: data,
|
|
|
|
|
playType,
|
|
|
|
|
});
|
|
|
|
|
};
|
2023-01-13 13:51:19 -08:00
|
|
|
|
2023-07-01 19:10:05 -07:00
|
|
|
return (
|
|
|
|
|
<PageHeader p="1rem">
|
|
|
|
|
<LibraryHeaderBar>
|
|
|
|
|
<LibraryHeaderBar.PlayButton onClick={() => handlePlay(playButtonBehavior)} />
|
2024-02-03 15:05:33 -08:00
|
|
|
<LibraryHeaderBar.Title>
|
2025-06-24 00:04:36 -07:00
|
|
|
{t('page.albumArtistDetail.topSongsFrom', {
|
|
|
|
|
postProcess: 'titleCase',
|
|
|
|
|
title,
|
|
|
|
|
})}
|
2024-02-03 15:05:33 -08:00
|
|
|
</LibraryHeaderBar.Title>
|
2025-06-24 00:04:36 -07:00
|
|
|
<Badge>
|
2023-07-01 19:10:05 -07:00
|
|
|
{itemCount === null || itemCount === undefined ? <SpinnerIcon /> : itemCount}
|
2025-06-24 00:04:36 -07:00
|
|
|
</Badge>
|
2023-07-01 19:10:05 -07:00
|
|
|
</LibraryHeaderBar>
|
|
|
|
|
</PageHeader>
|
|
|
|
|
);
|
2023-01-13 13:51:19 -08:00
|
|
|
};
|