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