import React from "react";
import LocalMusicSheet from "@/core/localMusicSheet";
import { ROUTE_PATH, useNavigate } from "@/core/router";
import LocalMusicList from "./localMusicList";
import MusicBar from "@/components/musicBar";
import { localMusicSheetId } from "@/constants/commonConst";
import Toast from "@/utils/toast";
import { showDialog } from "@/components/dialogs/useDialog";
import AppBar from "@/components/base/appBar";
import { useI18N } from "@/core/i18n";
export default function MainPage() {
const navigate = useNavigate();
const { t } = useI18N();
return (
<>
<AppBar
withStatusBar
actions={[
{
icon: "magnifying-glass",
onPress() {
navigate(ROUTE_PATH.SEARCH_MUSIC_LIST, {
musicList: LocalMusicSheet.getMusicList(),
});
},
},
]}
menu={[
{
icon: "magnifying-glass",
title: t("localMusic.scanLocalMusic"),
async onPress() {
navigate(ROUTE_PATH.FILE_SELECTOR, {
fileType: "folder",
multi: true,
actionText: t("localMusic.beginScan"),
async onAction(selectedFiles) {
return new Promise(resolve => {
showDialog("LoadingDialog", {
title: t("localMusic.scanLocalMusic"),
promise:
LocalMusicSheet.importLocal(
selectedFiles.map(
_ => _.path,
),
),
onResolve(data, hideDialog) {
Toast.success(t("toast.importSuccess"));
hideDialog();
resolve(true);
},
onCancel(hideDialog) {
LocalMusicSheet.cancelImportLocal();
hideDialog();
resolve(false);
},
});
});
},
});
},
},
{
icon: "pencil-square",
title: t("common.batchEdit"),
async onPress() {
navigate(ROUTE_PATH.MUSIC_LIST_EDITOR, {
musicList: LocalMusicSheet.getMusicList(),
musicSheet: {
id: localMusicSheetId,
},
});
},
},
{
icon: "arrow-down-tray",
title: t("localMusic.downloadList"),
async onPress() {
navigate(ROUTE_PATH.DOWNLOADING);
},
},
]}>
{t("home.localMusic")}
</AppBar>
<LocalMusicList />
<MusicBar />
</>
);
}