xref: /MusicFree/src/pages/localMusic/mainPage/index.tsx (revision 2aa881935ca35b8fb1abc4206e0dc35149231456)
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            />
72            <LocalMusicList />
73            <MusicBar />
74        </>
75    );
76}
77