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