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