import React, {useMemo, useState} from 'react'; import {StyleSheet, View} from 'react-native'; import rpx from '@/utils/rpx'; import ThemeText from '@/components/base/themeText'; import useColors from '@/hooks/useColors'; import {TouchableWithoutFeedback} from 'react-native-gesture-handler'; import {FlashList} from '@shopify/flash-list'; import ListItem from '@/components/base/listItem'; import {ROUTE_PATH, useNavigate} from '@/core/router'; import {ImgAsset} from '@/constants/assetsConst'; import {showDialog} from '@/components/dialogs/useDialog'; import Toast from '@/utils/toast'; import Empty from '@/components/base/empty'; import IconButton from '@/components/base/iconButton'; import {showPanel} from '@/components/panels/usePanel'; import {localPluginPlatform} from '@/constants/commonConst'; import MusicSheet from '@/core/musicSheet'; export default function Sheets() { const [index, setIndex] = useState(0); const colors = useColors(); const navigate = useNavigate(); const allSheets = MusicSheet.useSheetsBase(); const staredSheets = MusicSheet.useStarredSheets(); const selectedTabTextStyle = useMemo(() => { return [ styles.selectTabText, { borderBottomColor: colors.primary, }, ]; }, [colors]); return ( <> { setIndex(0); }}> 我的歌单 {' '} ({allSheets.length}) { setIndex(1); }}> 收藏歌单 {' '} ({staredSheets.length}) { showPanel('CreateMusicSheet'); }} /> { showPanel('ImportMusicSheet'); }} /> } data={(index === 0 ? allSheets : staredSheets) ?? []} estimatedItemSize={ListItem.Size.big} renderItem={({item: sheet}) => { const isLocalSheet = !( sheet.platform && sheet.platform !== localPluginPlatform ); return ( { if (isLocalSheet) { navigate(ROUTE_PATH.LOCAL_SHEET_DETAIL, { id: sheet.id, }); } else { navigate(ROUTE_PATH.PLUGIN_SHEET_DETAIL, { sheetInfo: sheet, }); } }}> {sheet.id !== MusicSheet.defaultSheet.id ? ( { showDialog('SimpleDialog', { title: '删除歌单', content: `确定删除歌单「${sheet.title}」吗?`, onOk: async () => { if (isLocalSheet) { await MusicSheet.removeSheet( sheet.id, ); Toast.success('已删除'); } else { await MusicSheet.unstarMusicSheet( sheet, ); Toast.success('已取消收藏'); } }, }); }} /> ) : null} ); }} nestedScrollEnabled /> ); } const styles = StyleSheet.create({ subTitleContainer: { paddingHorizontal: rpx(24), flexDirection: 'row', alignItems: 'flex-start', marginBottom: rpx(12), }, subTitleLeft: { flexDirection: 'row', }, tabContainer: { flexDirection: 'row', marginRight: rpx(32), }, tabText: { lineHeight: rpx(64), }, selectTabText: { borderBottomWidth: rpx(6), fontWeight: 'bold', }, more: { height: rpx(64), marginTop: rpx(3), flexGrow: 1, flexDirection: 'row', justifyContent: 'flex-end', }, newSheetButton: { marginRight: rpx(24), }, });