import React, {memo, useEffect, useState} from 'react'; import {Keyboard, StyleSheet, View} from 'react-native'; import rpx from '@/utils/rpx'; import {CircularProgressBase} from 'react-native-circular-progress-indicator'; import {useSafeAreaInsets} from 'react-native-safe-area-context'; import {showPanel} from '../panels/usePanel'; import useColors from '@/hooks/useColors'; import IconButton from '../base/iconButton'; import TrackPlayer from '@/core/trackPlayer'; import {musicIsPaused} from '@/utils/trackUtils'; import MusicInfo from './musicInfo'; import Icon from '@/components/base/icon.tsx'; function CircularPlayBtn() { const progress = TrackPlayer.useProgress(); const musicState = TrackPlayer.useMusicState(); const colors = useColors(); const isPaused = musicIsPaused(musicState); return ( { if (isPaused) { await TrackPlayer.play(); } else { await TrackPlayer.pause(); } }} /> ); } function MusicBar() { const musicItem = TrackPlayer.useCurrentMusic(); const [showKeyboard, setKeyboardStatus] = useState(false); const colors = useColors(); const safeAreaInsets = useSafeAreaInsets(); useEffect(() => { const showSubscription = Keyboard.addListener('keyboardDidShow', () => { setKeyboardStatus(true); }); const hideSubscription = Keyboard.addListener('keyboardDidHide', () => { setKeyboardStatus(false); }); return () => { showSubscription.remove(); hideSubscription.remove(); }; }, []); return ( <> {musicItem && !showKeyboard && ( { // navigate(ROUTE_PATH.MUSIC_DETAIL); // }} > { showPanel('PlayList'); }} color={colors.musicBarText} style={[style.actionIcon]} /> )} ); } export default memo(MusicBar, () => true); const style = StyleSheet.create({ wrapper: { width: '100%', height: rpx(132), flexDirection: 'row', alignItems: 'center', paddingRight: rpx(24), }, actionGroup: { width: rpx(200), justifyContent: 'flex-end', flexDirection: 'row', alignItems: 'center', }, actionIcon: { marginLeft: rpx(36), }, });