xref: /MusicFree/src/components/base/playAllBar.tsx (revision 5589cdf32b2bb0f641e5ac7bf1f6152cd6b9b70e)
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';
59801b15cS猫头猫import {ROUTE_PATH, useNavigate} from '@/entry/router';
69801b15cS猫头猫import ThemeText from './themeText';
79801b15cS猫头猫import useColors from '@/hooks/useColors';
8c15039e2S猫头猫import {showPanel} from '../panels/usePanel';
9e650bfb3S猫头猫import IconButton from './iconButton';
105500cea7S猫头猫import TrackPlayer from '@/core/trackPlayer';
11bef6dda8S猫头猫import MusicSheet from '@/core/musicSheet';
12bef6dda8S猫头猫import Toast from '@/utils/toast';
13*5589cdf3S猫头猫import Icon from '@/components/base/icon.tsx';
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猫头猫
29bef6dda8S猫头猫    const starred = MusicSheet.useSheetStarred(musicSheet);
30bef6dda8S猫头猫
319801b15cS猫头猫    return (
32277c5280S猫头猫        <View style={style.topWrapper}>
339801b15cS猫头猫            <Pressable
349801b15cS猫头猫                style={style.playAll}
359801b15cS猫头猫                onPress={() => {
369801b15cS猫头猫                    if (musicList) {
375500cea7S猫头猫                        TrackPlayer.playWithReplacePlayList(
389801b15cS猫头猫                            musicList[0],
399801b15cS猫头猫                            musicList,
409801b15cS猫头猫                        );
419801b15cS猫头猫                    }
429801b15cS猫头猫                }}>
439801b15cS猫头猫                <Icon
44*5589cdf3S猫头猫                    name="play-circle"
459801b15cS猫头猫                    style={style.playAllIcon}
469801b15cS猫头猫                    size={iconSizeConst.normal}
479801b15cS猫头猫                    color={colors.text}
489801b15cS猫头猫                />
499801b15cS猫头猫                <ThemeText fontWeight="bold">播放全部</ThemeText>
509801b15cS猫头猫            </Pressable>
51bef6dda8S猫头猫            {canStar && musicSheet ? (
52bef6dda8S猫头猫                <IconButton
53bef6dda8S猫头猫                    name={starred ? 'heart' : 'heart-outline'}
54bef6dda8S猫头猫                    sizeType={'normal'}
55bef6dda8S猫头猫                    color={starred ? '#e31639' : undefined}
56bef6dda8S猫头猫                    style={style.optionButton}
57bef6dda8S猫头猫                    onPress={async () => {
58bef6dda8S猫头猫                        if (!starred) {
59bef6dda8S猫头猫                            MusicSheet.starMusicSheet(musicSheet);
60bef6dda8S猫头猫                            Toast.success('收藏歌单成功');
61bef6dda8S猫头猫                        } else {
62bef6dda8S猫头猫                            MusicSheet.unstarMusicSheet(musicSheet);
63bef6dda8S猫头猫                            Toast.success('已取消收藏歌单');
64bef6dda8S猫头猫                        }
65bef6dda8S猫头猫                    }}
66bef6dda8S猫头猫                />
67bef6dda8S猫头猫            ) : null}
689801b15cS猫头猫            <IconButton
69*5589cdf3S猫头猫                name="folder-plus"
70e650bfb3S猫头猫                sizeType={'normal'}
71e650bfb3S猫头猫                style={style.optionButton}
729801b15cS猫头猫                onPress={async () => {
739801b15cS猫头猫                    showPanel('AddToMusicSheet', {
749801b15cS猫头猫                        musicItem: musicList ?? [],
759801b15cS猫头猫                        newSheetDefaultName: sheetName,
769801b15cS猫头猫                    });
779801b15cS猫头猫                }}
789801b15cS猫头猫            />
799801b15cS猫头猫            <IconButton
80*5589cdf3S猫头猫                name="pencil-square"
81e650bfb3S猫头猫                sizeType={'normal'}
82e650bfb3S猫头猫                style={style.optionButton}
839801b15cS猫头猫                onPress={async () => {
849801b15cS猫头猫                    navigate(ROUTE_PATH.MUSIC_LIST_EDITOR, {
859801b15cS猫头猫                        musicList: musicList,
869801b15cS猫头猫                        musicSheet: {
879801b15cS猫头猫                            title: sheetName,
8832c3c781S猫头猫                            id: sheetId,
899801b15cS猫头猫                        },
909801b15cS猫头猫                    });
919801b15cS猫头猫                }}
929801b15cS猫头猫            />
939801b15cS猫头猫        </View>
949801b15cS猫头猫    );
959801b15cS猫头猫}
969801b15cS猫头猫
979801b15cS猫头猫const style = StyleSheet.create({
989801b15cS猫头猫    /** playall */
999801b15cS猫头猫    topWrapper: {
100e650bfb3S猫头猫        height: rpx(84),
1019801b15cS猫头猫        paddingHorizontal: rpx(24),
1029801b15cS猫头猫        flexDirection: 'row',
1039801b15cS猫头猫        alignItems: 'center',
1049801b15cS猫头猫    },
1059801b15cS猫头猫    playAll: {
1069801b15cS猫头猫        flex: 1,
1079801b15cS猫头猫        flexDirection: 'row',
1089801b15cS猫头猫        alignItems: 'center',
1099801b15cS猫头猫    },
1109801b15cS猫头猫    playAllIcon: {
1119801b15cS猫头猫        marginRight: rpx(12),
1129801b15cS猫头猫    },
113e650bfb3S猫头猫    optionButton: {
114e650bfb3S猫头猫        marginLeft: rpx(36),
115e650bfb3S猫头猫    },
1169801b15cS猫头猫});
117