import { type MutableRefObject } from 'react'; import { useTranslation } from 'react-i18next'; import { SONG_TABLE_COLUMNS } from '/@/renderer/components/item-list/item-table-list/default-columns'; import { ItemListHandle } from '/@/renderer/components/item-list/types'; import { usePlayer } from '/@/renderer/features/player/context/player-context'; import { updateSong } from '/@/renderer/features/player/update-remote-song'; import { ListConfigMenu } from '/@/renderer/features/shared/components/list-config-menu'; import { SearchInput } from '/@/renderer/features/shared/components/search-input'; import { usePlayerSong, usePlayerStoreBase } from '/@/renderer/store'; import { ActionIcon } from '/@/shared/components/action-icon/action-icon'; import { Group } from '/@/shared/components/group/group'; import { QueueSong } from '/@/shared/types/domain-types'; import { ItemListKey } from '/@/shared/types/types'; interface PlayQueueListOptionsProps { handleSearch: (value: string) => void; searchTerm?: string; tableRef: MutableRefObject; type: ItemListKey; } export const PlayQueueListControls = ({ handleSearch, searchTerm, tableRef, }: PlayQueueListOptionsProps) => { const { t } = useTranslation(); const player = usePlayer(); const currentSong = usePlayerSong(); const handleMoveToNext = () => { const selectedItems = tableRef?.current?.internalState.getSelected() as | QueueSong[] | undefined; if (!selectedItems || selectedItems.length === 0) return; player.moveSelectedToNext(selectedItems); }; const handleMoveToBottom = () => { const selectedItems = tableRef?.current?.internalState.getSelected() as | QueueSong[] | undefined; if (!selectedItems || selectedItems.length === 0) return; player.moveSelectedToBottom(selectedItems); }; const handleMoveToTop = () => { const selectedItems = tableRef?.current?.internalState.getSelected() as | QueueSong[] | undefined; if (!selectedItems || selectedItems.length === 0) return; player.moveSelectedToTop(selectedItems); }; const handleRemoveSelected = () => { const selectedItems = tableRef?.current?.internalState.getSelected() as | QueueSong[] | undefined; if (!selectedItems || selectedItems.length === 0) return; const selectedUniqueIds = selectedItems.map((item) => item._uniqueId); const isCurrentSongRemoved = currentSong && selectedUniqueIds.includes(currentSong._uniqueId); player.clearSelected(selectedItems); if (isCurrentSongRemoved) { // Get the new current song after removal const newCurrentSong = usePlayerStoreBase.getState().getCurrentSong(); updateSong(newCurrentSong); } }; const handleClearQueue = () => { player.clearQueue(); }; const handleShuffleQueue = () => { player.shuffleAll(); }; return ( handleSearch(e.target.value)} value={searchTerm} /> ); };