1import React from 'react'; 2import {useNavigation} from '@react-navigation/native'; 3import MusicSheet from '@/core/musicSheet'; 4import {ROUTE_PATH, useParams} from '@/entry/router'; 5import Toast from '@/utils/toast'; 6import {showDialog} from '@/components/dialogs/useDialog'; 7import AppBar from '@/components/base/appBar'; 8 9export default function () { 10 const navigation = useNavigation<any>(); 11 const {id = 'favorite'} = useParams<'local-sheet-detail'>(); 12 const musicSheet = MusicSheet.useSheets(id); 13 14 return ( 15 <> 16 <AppBar 17 menu={[ 18 { 19 icon: 'trash-can-outline', 20 title: '删除歌单', 21 show: id !== 'favorite', 22 onPress() { 23 showDialog('SimpleDialog', { 24 title: '删除歌单', 25 content: `确定删除歌单「${musicSheet.title}」吗?`, 26 onOk: async () => { 27 await MusicSheet.removeSheet(id); 28 Toast.success('已删除'); 29 navigation.goBack(); 30 }, 31 }); 32 }, 33 }, 34 { 35 icon: 'playlist-edit', 36 title: '批量编辑', 37 onPress() { 38 navigation.navigate(ROUTE_PATH.MUSIC_LIST_EDITOR, { 39 musicList: musicSheet.musicList, 40 musicSheet: musicSheet, 41 }); 42 }, 43 }, 44 { 45 icon: 'square-edit-outline', 46 title: '编辑歌单信息', 47 onPress() { 48 showDialog('EditSheetDetailDialog', { 49 musicSheet: musicSheet, 50 }); 51 }, 52 }, 53 { 54 icon: 'sort', 55 title: '排序', 56 onPress() { 57 showDialog('RadioDialog', { 58 content: [ 59 { 60 value: 'random', 61 key: '随机顺序', 62 }, 63 { 64 value: 'a2z', 65 key: '歌曲名A-Z', 66 }, 67 { 68 value: 'z2a', 69 key: '歌曲名Z-A', 70 }, 71 { 72 value: 'arta2z', 73 key: '作者名A-Z', 74 }, 75 { 76 value: 'artz2a', 77 key: '作者名Z-A', 78 }, 79 { 80 value: 'time', 81 key: '加入歌单时间', 82 }, 83 { 84 value: 'time-rev', 85 key: '加入歌单时间(逆序)', 86 }, 87 ], 88 title: '排序', 89 async onOk(value) { 90 MusicSheet.sortMusicList( 91 value as any, 92 musicSheet, 93 ); 94 }, 95 }); 96 }, 97 }, 98 ]} 99 actions={[ 100 { 101 icon: 'magnify', 102 onPress() { 103 navigation.navigate(ROUTE_PATH.SEARCH_MUSIC_LIST, { 104 musicList: musicSheet?.musicList, 105 musicSheet: musicSheet, 106 }); 107 }, 108 }, 109 ]}> 110 歌单 111 </AppBar> 112 </> 113 ); 114} 115