xref: /MusicFree/src/components/mediaItem/musicItem.tsx (revision e14deecfc05b47252a443626415b971c92de6fbc)
1a3b33415S猫头猫import React from 'react';
2a3b33415S猫头猫import {StyleSheet, Text, View} from 'react-native';
3a3b33415S猫头猫import rpx from '@/utils/rpx';
4a3b33415S猫头猫import ListItem, {ILeftProps} from '../base/listItem';
5*e14deecfS猫头猫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猫头猫        <>
30*e14deecfS猫头猫          {Download.isDownloaded(musicItem) && (
31a3b33415S猫头猫            <Icon color="#11659a" name="check-circle" size={rpx(22)}></Icon>
32a3b33415S猫头猫          )}
33a3b33415S猫头猫          <Text>
34a3b33415S猫头猫            {musicItem.artist} - {musicItem.album}
35a3b33415S猫头猫          </Text>
36a3b33415S猫头猫        </>
37a3b33415S猫头猫      }
38a3b33415S猫头猫      tag={musicItem.platform}
39a3b33415S猫头猫      onPress={() => {
40a3b33415S猫头猫        if (onItemPress) {
41a3b33415S猫头猫          onItemPress(musicItem);
42a3b33415S猫头猫        } else {
43a3b33415S猫头猫          MusicQueue.play(musicItem);
44a3b33415S猫头猫        }
45a3b33415S猫头猫      }}
46a3b33415S猫头猫      right={() => (
47a3b33415S猫头猫        <IconButton
48a3b33415S猫头猫          name="dots-vertical"
49a3b33415S猫头猫          size="normal"
50a3b33415S猫头猫          fontColor="normal"
51a3b33415S猫头猫          onPress={() => {
52a3b33415S猫头猫            showPanel('MusicItemOptions', {musicItem, musicSheet});
53a3b33415S猫头猫          }}></IconButton>
54a3b33415S猫头猫      )}></ListItem>
55a3b33415S猫头猫  );
56a3b33415S猫头猫}
57