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