import { Box, Button, Menu, MenuItem, Typography } from '@mui/material'; import React from 'react'; import { messageChannelContext } from '../../provider/MessageChannel'; import useStore from '../../hooks/useStore'; import { StoreState } from '../../provider/Store' const MenuBar: React.FC = () => { const [ openMenu, setMenuOpen ] = React.useState<'settings'|'help'|undefined>(); const [anchorEl, setAnchorEl] = React.useState(null); const [store, dispatch] = useStore(); const messageChannel = React.useContext(messageChannelContext); const getVersion = async() => { dispatch({ type: 'version', payload: await messageChannel?.version() }); } getVersion(); const transformService = (service: StoreState['service']) => { switch(service) { case 'crunchy': return "Crunchyroll" case 'funi': return "Funimation" case "hidive": return "Hidive" } } const msg = React.useContext(messageChannelContext); const handleClick = (event: React.MouseEvent, n: 'settings'|'help') => { setAnchorEl(event.currentTarget); setMenuOpen(n); }; const handleClose = () => { setAnchorEl(null); setMenuOpen(undefined); }; if (!msg) return <>; return { msg.openFolder('config'); handleClose(); }}> Open settings folder { msg.openFile(['config', 'bin-path.yml']); handleClose(); }}> Open FFmpeg/Mkvmerge file { msg.openFile(['config', 'cli-defaults.yml']); handleClose(); }}> Open advanced options { msg.openFolder('content'); handleClose(); }}> Open output path { msg.openURL('https://github.com/anidl/multi-downloader-nx'); handleClose(); }}> GitHub { msg.openURL('https://github.com/anidl/multi-downloader-nx/issues/new?assignees=AnimeDL,AnidlSupport&labels=bug&template=bug.yml&title=BUG'); handleClose(); }}> Report a bug { msg.openURL('https://github.com/anidl/multi-downloader-nx/graphs/contributors'); handleClose(); }}> Contributors { msg.openURL('https://discord.gg/qEpbWen5vq'); handleClose(); }}> Discord { handleClose(); }}> Version: {store.version} {transformService(store.service)} ; }; export default MenuBar;