xref: /MusicFree/src/pages/sheetDetail/components/navBar.tsx (revision 9677305be11b30a8953a6c14fd24375953a2309d)
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