xref: /MusicFree/src/pages/localMusic/mainPage/index.tsx (revision 8e47be56b0121ae1a9c00382d70902276ffca225)
1import React from 'react';
2import LocalMusicSheet from '@/core/localMusicSheet';
3import {ROUTE_PATH, useNavigate} from '@/entry/router';
4import LocalMusicList from './localMusicList';
5import MusicBar from '@/components/musicBar';
6import {localMusicSheetId} from '@/constants/commonConst';
7import Toast from '@/utils/toast';
8import {showDialog} from '@/components/dialogs/useDialog';
9import AppBar from '@/components/base/appBar';
10
11export default function MainPage() {
12    const navigate = useNavigate();
13    return (
14        <>
15            <AppBar
16                withStatusBar
17                actions={[
18                    {
19                        icon: 'magnify',
20                        onPress() {
21                            navigate(ROUTE_PATH.SEARCH_MUSIC_LIST, {
22                                musicList: LocalMusicSheet.getMusicList(),
23                            });
24                        },
25                    },
26                ]}
27                menu={[
28                    {
29                        icon: 'magnify',
30                        title: '扫描本地音乐',
31                        async onPress() {
32                            navigate(ROUTE_PATH.FILE_SELECTOR, {
33                                fileType: 'folder',
34                                multi: true,
35                                actionText: '开始扫描',
36                                async onAction(selectedFiles) {
37                                    return new Promise(resolve => {
38                                        showDialog('LoadingDialog', {
39                                            title: '扫描本地音乐',
40                                            promise:
41                                                LocalMusicSheet.importLocal(
42                                                    selectedFiles.map(
43                                                        _ => _.path,
44                                                    ),
45                                                ),
46                                            onResolve(data, hideDialog) {
47                                                Toast.success('导入成功~');
48                                                hideDialog();
49                                                resolve(true);
50                                            },
51                                            onCancel(hideDialog) {
52                                                LocalMusicSheet.cancelImportLocal();
53                                                hideDialog();
54                                                resolve(false);
55                                            },
56                                        });
57                                    });
58                                },
59                            });
60                        },
61                    },
62                    {
63                        icon: 'playlist-edit',
64                        title: '批量编辑',
65                        async onPress() {
66                            navigate(ROUTE_PATH.MUSIC_LIST_EDITOR, {
67                                musicList: LocalMusicSheet.getMusicList(),
68                                musicSheet: {
69                                    id: localMusicSheetId,
70                                },
71                            });
72                        },
73                    },
74                    {
75                        icon: 'download',
76                        title: '下载列表',
77                        async onPress() {
78                            navigate(ROUTE_PATH.DOWNLOADING);
79                        },
80                    },
81                ]}>
82                本地音乐
83            </AppBar>
84            <LocalMusicList />
85            <MusicBar />
86        </>
87    );
88}
89