xref: /MusicFree/src/components/mediaItem/musicItem.tsx (revision 950202e4d0ef3d640de02a51eedfa777a253f285)
1a3b33415S猫头猫import React from 'react';
24060c00aS猫头猫import {Text} from 'react-native';
3a3b33415S猫头猫import rpx from '@/utils/rpx';
4a3b33415S猫头猫import ListItem, {ILeftProps} from '../base/listItem';
5a3b33415S猫头猫import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
6242960d3S猫头猫import MusicQueue from '@/core/musicQueue';
7a3b33415S猫头猫import IconButton from '../base/iconButton';
8a3b33415S猫头猫import usePanel from '../panels/usePanel';
90e4173cdS猫头猫import LocalMusicSheet from '@/core/localMusicSheet';
10a3b33415S猫头猫
11a3b33415S猫头猫interface IMusicItemProps {
12a3b33415S猫头猫    index?: string | number;
13a3b33415S猫头猫    left?: ILeftProps;
1494824d29S猫头猫    right?: () => JSX.Element;
15a3b33415S猫头猫    musicItem: IMusic.IMusicItem;
16a3b33415S猫头猫    musicSheet?: IMusic.IMusicSheetItem;
17a3b33415S猫头猫    onItemPress?: (musicItem: IMusic.IMusicItem) => void;
1894824d29S猫头猫    onItemLongPress?: () => void;
19aeaa4fceS猫头猫    itemWidth?: number;
2094824d29S猫头猫    itemBackgroundColor?: string;
21a3b33415S猫头猫}
22a3b33415S猫头猫const ITEM_HEIGHT = rpx(120);
23a3b33415S猫头猫export default function MusicItem(props: IMusicItemProps) {
2494824d29S猫头猫    const {
2594824d29S猫头猫        musicItem,
2694824d29S猫头猫        index,
2794824d29S猫头猫        left,
2894824d29S猫头猫        right,
2994824d29S猫头猫        onItemPress,
3094824d29S猫头猫        onItemLongPress,
3194824d29S猫头猫        musicSheet,
32aeaa4fceS猫头猫        itemWidth,
3394824d29S猫头猫        itemBackgroundColor,
3494824d29S猫头猫    } = props;
35a3b33415S猫头猫    const {showPanel} = usePanel();
36a3b33415S猫头猫
37a3b33415S猫头猫    return (
38a3b33415S猫头猫        <ListItem
39aeaa4fceS猫头猫            itemWidth={itemWidth}
40a3b33415S猫头猫            itemHeight={ITEM_HEIGHT}
41*950202e4S猫头猫            itemPaddingLeft={index !== undefined ? 0 : undefined}
4294824d29S猫头猫            itemBackgroundColor={itemBackgroundColor}
4394824d29S猫头猫            onLongPress={onItemLongPress}
44*950202e4S猫头猫            left={index !== undefined ? {index: index, width: rpx(96)} : left}
45a3b33415S猫头猫            title={musicItem.title}
46a3b33415S猫头猫            desc={
47a3b33415S猫头猫                <>
480e4173cdS猫头猫                    {LocalMusicSheet.isLocalMusic(musicItem) && (
494060c00aS猫头猫                        <Icon
504060c00aS猫头猫                            color="#11659a"
514060c00aS猫头猫                            name="check-circle"
524060c00aS猫头猫                            size={rpx(22)}
534060c00aS猫头猫                        />
54a3b33415S猫头猫                    )}
55a3b33415S猫头猫                    <Text>
56a3b33415S猫头猫                        {musicItem.artist} - {musicItem.album}
57a3b33415S猫头猫                    </Text>
58a3b33415S猫头猫                </>
59a3b33415S猫头猫            }
60a3b33415S猫头猫            tag={musicItem.platform}
61a3b33415S猫头猫            onPress={() => {
62a3b33415S猫头猫                if (onItemPress) {
63a3b33415S猫头猫                    onItemPress(musicItem);
64a3b33415S猫头猫                } else {
65a3b33415S猫头猫                    MusicQueue.play(musicItem);
66a3b33415S猫头猫                }
67a3b33415S猫头猫            }}
6894824d29S猫头猫            right={
6994824d29S猫头猫                right
7094824d29S猫头猫                    ? right
7194824d29S猫头猫                    : () => (
72a3b33415S猫头猫                          <IconButton
7394824d29S猫头猫                              name={'dots-vertical'}
74a3b33415S猫头猫                              size="normal"
75a3b33415S猫头猫                              fontColor="normal"
76a3b33415S猫头猫                              onPress={() => {
7794824d29S猫头猫                                  showPanel('MusicItemOptions', {
7894824d29S猫头猫                                      musicItem,
7994824d29S猫头猫                                      musicSheet,
8094824d29S猫头猫                                  });
814060c00aS猫头猫                              }}
824060c00aS猫头猫                          />
8394824d29S猫头猫                      )
8494824d29S猫头猫            }
854060c00aS猫头猫        />
86a3b33415S猫头猫    );
87a3b33415S猫头猫}
88