19801b15cS猫头猫import React from 'react'; 29801b15cS猫头猫import {Pressable, StyleSheet, View} from 'react-native'; 39801b15cS猫头猫import rpx from '@/utils/rpx'; 49801b15cS猫头猫import {iconSizeConst} from '@/constants/uiConst'; 5*b4c389f4Smaotoumaoimport {ROUTE_PATH, useNavigate} from '@/core/router'; 69801b15cS猫头猫import ThemeText from './themeText'; 79801b15cS猫头猫import useColors from '@/hooks/useColors'; 8c15039e2S猫头猫import {showPanel} from '../panels/usePanel'; 9e650bfb3S猫头猫import IconButton from './iconButton'; 104c222b69S猫头猫import TrackPlayer, {MusicRepeatMode} from '@/core/trackPlayer'; 11bef6dda8S猫头猫import Toast from '@/utils/toast'; 125589cdf3S猫头猫import Icon from '@/components/base/icon.tsx'; 13740e3947S猫头猫import MusicSheet from '@/core/musicSheet'; 149801b15cS猫头猫 159801b15cS猫头猫interface IProps { 169801b15cS猫头猫 musicList: IMusic.IMusicItem[] | null; 17bef6dda8S猫头猫 canStar?: boolean; 18bef6dda8S猫头猫 musicSheet?: IMusic.IMusicSheetItem | null; 199801b15cS猫头猫} 209801b15cS猫头猫export default function (props: IProps) { 21bef6dda8S猫头猫 const {musicList, canStar, musicSheet} = props; 22bef6dda8S猫头猫 23bef6dda8S猫头猫 const sheetName = musicSheet?.title; 24bef6dda8S猫头猫 const sheetId = musicSheet?.id; 25bef6dda8S猫头猫 269801b15cS猫头猫 const colors = useColors(); 279801b15cS猫头猫 const navigate = useNavigate(); 289801b15cS猫头猫 29740e3947S猫头猫 const starred = MusicSheet.useSheetIsStarred(musicSheet); 30bef6dda8S猫头猫 319801b15cS猫头猫 return ( 32277c5280S猫头猫 <View style={style.topWrapper}> 339801b15cS猫头猫 <Pressable 349801b15cS猫头猫 style={style.playAll} 359801b15cS猫头猫 onPress={() => { 369801b15cS猫头猫 if (musicList) { 374c222b69S猫头猫 let defaultPlayMusic = musicList[0]; 384c222b69S猫头猫 if ( 394c222b69S猫头猫 TrackPlayer.getRepeatMode() === 404c222b69S猫头猫 MusicRepeatMode.SHUFFLE 414c222b69S猫头猫 ) { 424c222b69S猫头猫 defaultPlayMusic = 434c222b69S猫头猫 musicList[ 444c222b69S猫头猫 Math.floor(Math.random() * musicList.length) 454c222b69S猫头猫 ]; 464c222b69S猫头猫 } 475500cea7S猫头猫 TrackPlayer.playWithReplacePlayList( 484c222b69S猫头猫 defaultPlayMusic, 499801b15cS猫头猫 musicList, 509801b15cS猫头猫 ); 519801b15cS猫头猫 } 529801b15cS猫头猫 }}> 539801b15cS猫头猫 <Icon 545589cdf3S猫头猫 name="play-circle" 559801b15cS猫头猫 style={style.playAllIcon} 569801b15cS猫头猫 size={iconSizeConst.normal} 579801b15cS猫头猫 color={colors.text} 589801b15cS猫头猫 /> 599801b15cS猫头猫 <ThemeText fontWeight="bold">播放全部</ThemeText> 609801b15cS猫头猫 </Pressable> 61bef6dda8S猫头猫 {canStar && musicSheet ? ( 62bef6dda8S猫头猫 <IconButton 63bef6dda8S猫头猫 name={starred ? 'heart' : 'heart-outline'} 64bef6dda8S猫头猫 sizeType={'normal'} 65bef6dda8S猫头猫 color={starred ? '#e31639' : undefined} 66bef6dda8S猫头猫 style={style.optionButton} 67bef6dda8S猫头猫 onPress={async () => { 68bef6dda8S猫头猫 if (!starred) { 69bef6dda8S猫头猫 MusicSheet.starMusicSheet(musicSheet); 70bef6dda8S猫头猫 Toast.success('收藏歌单成功'); 71bef6dda8S猫头猫 } else { 72bef6dda8S猫头猫 MusicSheet.unstarMusicSheet(musicSheet); 73bef6dda8S猫头猫 Toast.success('已取消收藏歌单'); 74bef6dda8S猫头猫 } 75bef6dda8S猫头猫 }} 76bef6dda8S猫头猫 /> 77bef6dda8S猫头猫 ) : null} 789801b15cS猫头猫 <IconButton 795589cdf3S猫头猫 name="folder-plus" 80e650bfb3S猫头猫 sizeType={'normal'} 81e650bfb3S猫头猫 style={style.optionButton} 829801b15cS猫头猫 onPress={async () => { 839801b15cS猫头猫 showPanel('AddToMusicSheet', { 849801b15cS猫头猫 musicItem: musicList ?? [], 859801b15cS猫头猫 newSheetDefaultName: sheetName, 869801b15cS猫头猫 }); 879801b15cS猫头猫 }} 889801b15cS猫头猫 /> 899801b15cS猫头猫 <IconButton 905589cdf3S猫头猫 name="pencil-square" 91e650bfb3S猫头猫 sizeType={'normal'} 92e650bfb3S猫头猫 style={style.optionButton} 939801b15cS猫头猫 onPress={async () => { 949801b15cS猫头猫 navigate(ROUTE_PATH.MUSIC_LIST_EDITOR, { 959801b15cS猫头猫 musicList: musicList, 969801b15cS猫头猫 musicSheet: { 979801b15cS猫头猫 title: sheetName, 9832c3c781S猫头猫 id: sheetId, 999801b15cS猫头猫 }, 1009801b15cS猫头猫 }); 1019801b15cS猫头猫 }} 1029801b15cS猫头猫 /> 1039801b15cS猫头猫 </View> 1049801b15cS猫头猫 ); 1059801b15cS猫头猫} 1069801b15cS猫头猫 1079801b15cS猫头猫const style = StyleSheet.create({ 1089801b15cS猫头猫 /** playall */ 1099801b15cS猫头猫 topWrapper: { 110e650bfb3S猫头猫 height: rpx(84), 1119801b15cS猫头猫 paddingHorizontal: rpx(24), 1129801b15cS猫头猫 flexDirection: 'row', 1139801b15cS猫头猫 alignItems: 'center', 1149801b15cS猫头猫 }, 1159801b15cS猫头猫 playAll: { 1169801b15cS猫头猫 flex: 1, 1179801b15cS猫头猫 flexDirection: 'row', 1189801b15cS猫头猫 alignItems: 'center', 1199801b15cS猫头猫 }, 1209801b15cS猫头猫 playAllIcon: { 1219801b15cS猫头猫 marginRight: rpx(12), 1229801b15cS猫头猫 }, 123e650bfb3S猫头猫 optionButton: { 124e650bfb3S猫头猫 marginLeft: rpx(36), 125e650bfb3S猫头猫 }, 1269801b15cS猫头猫}); 127