import React from 'react'; import {Text} from 'react-native'; import rpx from '@/utils/rpx'; import ListItem, {ILeftProps} from '../base/listItem'; import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import MusicQueue from '@/core/musicQueue'; import IconButton from '../base/iconButton'; import usePanel from '../panels/usePanel'; import LocalMusicSheet from '@/core/localMusicSheet'; interface IMusicItemProps { index?: string | number; left?: ILeftProps; right?: () => JSX.Element; musicItem: IMusic.IMusicItem; musicSheet?: IMusic.IMusicSheetItem; onItemPress?: (musicItem: IMusic.IMusicItem) => void; onItemLongPress?: () => void; itemWidth?: number | string; itemBackgroundColor?: string; itemPaddingRight?: number; } const ITEM_HEIGHT = rpx(120); export default function MusicItem(props: IMusicItemProps) { const { musicItem, index, left, right, onItemPress, onItemLongPress, musicSheet, itemWidth, itemPaddingRight, itemBackgroundColor, } = props; const {showPanel} = usePanel(); return ( {LocalMusicSheet.isLocalMusic(musicItem) && ( )} {musicItem.artist} {musicItem.album ? ` - ${musicItem.album}` : ''} } tag={musicItem.platform} onPress={() => { if (onItemPress) { onItemPress(musicItem); } else { MusicQueue.play(musicItem); } }} right={ right ? right : () => ( { showPanel('MusicItemOptions', { musicItem, musicSheet, }); }} /> ) } /> ); }