xref: /MusicFree/src/components/mediaItem/musicItem.tsx (revision 4060c00a75883036bbd315fb25c90065209312b3)
1a3b33415S猫头猫import React from 'react';
2*4060c00aS猫头猫import {Text} from 'react-native';
3a3b33415S猫头猫import rpx from '@/utils/rpx';
4a3b33415S猫头猫import ListItem, {ILeftProps} from '../base/listItem';
5e14deecfS猫头猫import Download from '@/core/download';
6a3b33415S猫头猫import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
7242960d3S猫头猫import MusicQueue from '@/core/musicQueue';
8a3b33415S猫头猫import IconButton from '../base/iconButton';
9a3b33415S猫头猫import usePanel from '../panels/usePanel';
10a3b33415S猫头猫
11a3b33415S猫头猫interface IMusicItemProps {
12a3b33415S猫头猫    index?: string | number;
13a3b33415S猫头猫    left?: ILeftProps;
14a3b33415S猫头猫    musicItem: IMusic.IMusicItem;
15a3b33415S猫头猫    musicSheet?: IMusic.IMusicSheetItem;
16a3b33415S猫头猫    onItemPress?: (musicItem: IMusic.IMusicItem) => void;
17a3b33415S猫头猫}
18a3b33415S猫头猫const ITEM_HEIGHT = rpx(120);
19a3b33415S猫头猫export default function MusicItem(props: IMusicItemProps) {
20a3b33415S猫头猫    const {musicItem, index, left, onItemPress, musicSheet} = props;
21a3b33415S猫头猫    const {showPanel} = usePanel();
22a3b33415S猫头猫
23a3b33415S猫头猫    return (
24a3b33415S猫头猫        <ListItem
25a3b33415S猫头猫            itemHeight={ITEM_HEIGHT}
26a3b33415S猫头猫            left={index !== undefined ? {index: index, width: rpx(56)} : left}
27a3b33415S猫头猫            title={musicItem.title}
28a3b33415S猫头猫            desc={
29a3b33415S猫头猫                <>
30e14deecfS猫头猫                    {Download.isDownloaded(musicItem) && (
31*4060c00aS猫头猫                        <Icon
32*4060c00aS猫头猫                            color="#11659a"
33*4060c00aS猫头猫                            name="check-circle"
34*4060c00aS猫头猫                            size={rpx(22)}
35*4060c00aS猫头猫                        />
36a3b33415S猫头猫                    )}
37a3b33415S猫头猫                    <Text>
38a3b33415S猫头猫                        {musicItem.artist} - {musicItem.album}
39a3b33415S猫头猫                    </Text>
40a3b33415S猫头猫                </>
41a3b33415S猫头猫            }
42a3b33415S猫头猫            tag={musicItem.platform}
43a3b33415S猫头猫            onPress={() => {
44a3b33415S猫头猫                if (onItemPress) {
45a3b33415S猫头猫                    onItemPress(musicItem);
46a3b33415S猫头猫                } else {
47a3b33415S猫头猫                    MusicQueue.play(musicItem);
48a3b33415S猫头猫                }
49a3b33415S猫头猫            }}
50a3b33415S猫头猫            right={() => (
51a3b33415S猫头猫                <IconButton
52a3b33415S猫头猫                    name="dots-vertical"
53a3b33415S猫头猫                    size="normal"
54a3b33415S猫头猫                    fontColor="normal"
55a3b33415S猫头猫                    onPress={() => {
56a3b33415S猫头猫                        showPanel('MusicItemOptions', {musicItem, musicSheet});
57*4060c00aS猫头猫                    }}
58*4060c00aS猫头猫                />
59*4060c00aS猫头猫            )}
60*4060c00aS猫头猫        />
61a3b33415S猫头猫    );
62a3b33415S猫头猫}
63