xref: /MusicFree/src/pages/sheetDetail/components/navBar.tsx (revision e5a0c4d718dd8de014c792b182a6f4128092b88f)
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                                title: '排序',
81                                async onOk(value) {
82                                    MusicSheet.sortMusicList(
83                                        value as any,
84                                        musicSheet,
85                                    );
86                                },
87                            });
88                        },
89                    },
90                ]}
91                actions={[
92                    {
93                        icon: 'magnify',
94                        onPress() {
95                            navigation.navigate(ROUTE_PATH.SEARCH_MUSIC_LIST, {
96                                musicList: musicSheet?.musicList,
97                                musicSheet: musicSheet,
98                            });
99                        },
100                    },
101                ]}>
102                歌单
103            </AppBar>
104        </>
105    );
106}
107