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); React.useEffect(() => { (async () => { if (!messageChannel || store.version !== '') return; dispatch({ type: 'version', payload: await messageChannel.version() }); })(); }, [messageChannel]); const transformService = (service: StoreState['service']) => { switch (service) { case 'crunchy': return 'Crunchyroll'; case 'hidive': return 'Hidive'; case 'ao': return 'AnimeOnegai'; case 'adn': return 'AnimationDigitalNetwork'; } }; 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;