xref: /MusicFree/src/pages/musicDetail/components/bottom/playControl.tsx (revision ab5f994a52bee1ac7c89f2ccf9b6ca60d362890a)
14060c00aS猫头猫import React from 'react';
24c222b69S猫头猫import {InteractionManager, StyleSheet, View} from 'react-native';
3bf6e62f2S猫头猫import rpx from '@/utils/rpx';
4bf6e62f2S猫头猫import repeatModeConst from '@/constants/repeatModeConst';
5c15039e2S猫头猫
6c446f2b8S猫头猫import useOrientation from '@/hooks/useOrientation';
7c15039e2S猫头猫import {showPanel} from '@/components/panels/usePanel';
85500cea7S猫头猫import TrackPlayer from '@/core/trackPlayer';
95500cea7S猫头猫import {musicIsPaused} from '@/utils/trackUtils';
105589cdf3S猫头猫import Icon from '@/components/base/icon.tsx';
114c222b69S猫头猫import sleep from '@/utils/sleep.ts';
12bf6e62f2S猫头猫
134060c00aS猫头猫export default function () {
145500cea7S猫头猫    const repeatMode = TrackPlayer.useRepeatMode();
155500cea7S猫头猫    const musicState = TrackPlayer.useMusicState();
16c15039e2S猫头猫
17c446f2b8S猫头猫    const orientation = useOrientation();
18bf6e62f2S猫头猫
19bf6e62f2S猫头猫    return (
20bf6e62f2S猫头猫        <>
21c446f2b8S猫头猫            <View
22c446f2b8S猫头猫                style={[
23c446f2b8S猫头猫                    style.wrapper,
24*ab5f994aSmaotoumao                    orientation === 'horizontal'
25c446f2b8S猫头猫                        ? {
26c446f2b8S猫头猫                              marginTop: 0,
27c446f2b8S猫头猫                          }
28c446f2b8S猫头猫                        : null,
29c446f2b8S猫头猫                ]}>
30bf6e62f2S猫头猫                <Icon
31bf6e62f2S猫头猫                    color={'white'}
32bf6e62f2S猫头猫                    name={repeatModeConst[repeatMode].icon}
33bf6e62f2S猫头猫                    size={rpx(56)}
344c222b69S猫头猫                    onPress={async () => {
354c222b69S猫头猫                        InteractionManager.runAfterInteractions(async () => {
364c222b69S猫头猫                            await sleep(20);
375500cea7S猫头猫                            TrackPlayer.toggleRepeatMode();
384c222b69S猫头猫                        });
394060c00aS猫头猫                    }}
404060c00aS猫头猫                />
41bf6e62f2S猫头猫                <Icon
42bf6e62f2S猫头猫                    color={'white'}
435589cdf3S猫头猫                    name={'skip-left'}
44bf6e62f2S猫头猫                    size={rpx(56)}
45bf6e62f2S猫头猫                    onPress={() => {
465500cea7S猫头猫                        TrackPlayer.skipToPrevious();
474060c00aS猫头猫                    }}
484060c00aS猫头猫                />
49bf6e62f2S猫头猫                <Icon
50bf6e62f2S猫头猫                    color={'white'}
51cdc69842S猫头猫                    name={musicIsPaused(musicState) ? 'play' : 'pause'}
52bf6e62f2S猫头猫                    size={rpx(96)}
53bf6e62f2S猫头猫                    onPress={() => {
54bf6e62f2S猫头猫                        if (musicIsPaused(musicState)) {
555500cea7S猫头猫                            TrackPlayer.play();
56bf6e62f2S猫头猫                        } else {
575500cea7S猫头猫                            TrackPlayer.pause();
58bf6e62f2S猫头猫                        }
594060c00aS猫头猫                    }}
604060c00aS猫头猫                />
61bf6e62f2S猫头猫                <Icon
62bf6e62f2S猫头猫                    color={'white'}
635589cdf3S猫头猫                    name={'skip-right'}
64bf6e62f2S猫头猫                    size={rpx(56)}
65bf6e62f2S猫头猫                    onPress={() => {
665500cea7S猫头猫                        TrackPlayer.skipToNext();
674060c00aS猫头猫                    }}
684060c00aS猫头猫                />
69bf6e62f2S猫头猫                <Icon
70bf6e62f2S猫头猫                    color={'white'}
715589cdf3S猫头猫                    name={'playlist'}
72bf6e62f2S猫头猫                    size={rpx(56)}
73bf6e62f2S猫头猫                    onPress={() => {
74bf6e62f2S猫头猫                        showPanel('PlayList');
754060c00aS猫头猫                    }}
764060c00aS猫头猫                />
77bf6e62f2S猫头猫            </View>
78bf6e62f2S猫头猫        </>
79bf6e62f2S猫头猫    );
80bf6e62f2S猫头猫}
81bf6e62f2S猫头猫
82bf6e62f2S猫头猫const style = StyleSheet.create({
83bf6e62f2S猫头猫    wrapper: {
844245d81aS猫头猫        width: '100%',
85bf6e62f2S猫头猫        marginTop: rpx(36),
86bf6e62f2S猫头猫        height: rpx(100),
87bf6e62f2S猫头猫        flexDirection: 'row',
88bf6e62f2S猫头猫        justifyContent: 'space-around',
89bf6e62f2S猫头猫        alignItems: 'center',
90bf6e62f2S猫头猫    },
91bf6e62f2S猫头猫});
92