import React, {Fragment, useEffect, useState} from 'react'; import {Keyboard, Pressable, StyleSheet, Text, View} from 'react-native'; import rpx from '@/utils/rpx'; import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import MusicQueue from '@/core/musicQueue'; import {Avatar, IconButton, useTheme} from 'react-native-paper'; import {CircularProgressBase} from 'react-native-circular-progress-indicator'; import {useNavigation} from '@react-navigation/native'; import {ROUTE_PATH} from '@/entry/router'; import musicIsPaused from '@/utils/musicIsPaused'; import usePanel from '../panels/usePanel'; import Color from 'color'; import ThemeText from '../base/themeText'; import {ImgAsset} from '@/constants/assetsConst'; export default function () { // const currentMusicState = useAtomValue(loadableCurrentMusicStateAtom); const musicItem = MusicQueue.useCurrentMusicItem(); const musicState = MusicQueue.usePlaybackState(); const [showKeyboard, setKeyboardStatus] = useState(false); const {showPanel} = usePanel(); const navigation = useNavigation(); const progress = MusicQueue.useProgress(); const {colors} = useTheme(); useEffect(() => { const showSubscription = Keyboard.addListener('keyboardDidShow', () => { setKeyboardStatus(true); }); const hideSubscription = Keyboard.addListener('keyboardDidHide', () => { setKeyboardStatus(false); }); return () => { showSubscription.remove(); hideSubscription.remove(); }; }, []); return ( {musicItem && !showKeyboard && ( { navigation.navigate(ROUTE_PATH.MUSIC_DETAIL); }}> {musicItem.title} {musicItem?.artist && ( {' '} -{musicItem.artist} )} {musicIsPaused(musicState) ? ( { await MusicQueue.play(); }} /> ) : ( { await MusicQueue.pause(); }} /> )} { showPanel('PlayList'); }} style={[style.actionIcon, {color: colors.text}]} /> )} ); } const style = StyleSheet.create({ wrapper: { width: rpx(750), height: rpx(120), flexDirection: 'row', alignItems: 'center', paddingHorizontal: rpx(24), }, artworkWrapper: { height: rpx(120), width: rpx(120), }, textWrapper: { flexGrow: 1, maxWidth: rpx(382), }, actionGroup: { width: rpx(200), justifyContent: 'flex-end', flexDirection: 'row', alignItems: 'center', }, actionIcon: { marginLeft: rpx(36), }, });