2023-10-02 23:38:03 +03:00
|
|
|
import React, { FC, useCallback } from 'react';
|
|
|
|
import { IconButton } from '@mui/material';
|
|
|
|
import QueueIcon from '@mui/icons-material/Queue';
|
|
|
|
|
|
|
|
import { playbackManager } from 'components/playback/playbackmanager';
|
2024-08-14 13:31:34 -04:00
|
|
|
import globalize from 'lib/globalize';
|
2024-08-21 03:27:03 +03:00
|
|
|
import type { ItemDto } from 'types/base/models/item-dto';
|
2023-10-02 23:38:03 +03:00
|
|
|
|
|
|
|
interface QueueButtonProps {
|
2024-08-21 03:27:03 +03:00
|
|
|
item: ItemDto | undefined
|
|
|
|
items: ItemDto[];
|
2023-10-02 23:38:03 +03:00
|
|
|
hasFilters: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
const QueueButton: FC<QueueButtonProps> = ({ item, items, hasFilters }) => {
|
|
|
|
const queue = useCallback(() => {
|
|
|
|
if (item && !hasFilters) {
|
|
|
|
playbackManager.queue({
|
|
|
|
items: [item]
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
playbackManager.queue({
|
|
|
|
items: items
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}, [hasFilters, item, items]);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<IconButton
|
|
|
|
title={globalize.translate('AddToPlayQueue')}
|
|
|
|
className='paper-icon-button-light btnQueue autoSize'
|
|
|
|
onClick={queue}
|
|
|
|
>
|
|
|
|
<QueueIcon />
|
|
|
|
</IconButton>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default QueueButton;
|