import React from "react"; import { connect } from "react-redux"; import ClickedDiv from "../ClickedDiv"; import { close, setSkinFromUrl, openMediaFileDialog, loadMediaFiles, openSkinFileDialog } from "../../actionCreators"; import { TOGGLE_MAIN_WINDOW, TOGGLE_EQUALIZER_WINDOW, TOGGLE_PLAYLIST_WINDOW, TOGGLE_GEN_WINDOW } from "../../actionTypes"; import { getGenWindows } from "../../selectors"; import { LOAD_STYLE } from "../../constants"; import { ContextMenu, Hr, Node, Parent, LinkNode } from "../ContextMenu"; const MainContextMenu = props => ( } >
{props.filePickers && props.filePickers.map( (picker, i) => (props.networkConnected || !picker.requiresNetwork) && ( { let files; try { files = await picker.filePicker(); } catch (e) { console.error("Error loading from file picker", e); } props.loadMediaFiles(files, LOAD_STYLE.PLAY); }} label={picker.contextMenuName} /> ) )}
{Object.keys(props.genWindows).map(i => ( props.toggleGenWindow(i)} /> ))}
{!!props.availableSkins.length &&
} {props.availableSkins.map(skin => ( props.setSkin(skin.url)} label={skin.name} /> ))}

); const mapStateToProps = state => ({ availableSkins: state.settings.availableSkins, networkConnected: state.network.connected, mainWindowOpen: state.windows.mainWindow, // For now you can't close the main window without closing all of Webamp playlistOpen: state.windows.playlist, equalizerOpen: state.windows.equalizer, genWindows: getGenWindows(state) }); const mapDispatchToProps = { close, openSkinFileDialog, openMediaFileDialog, loadMediaFiles, setSkin: setSkinFromUrl, toggleMainWindow: () => ({ type: TOGGLE_MAIN_WINDOW }), togglePlaylist: () => ({ type: TOGGLE_PLAYLIST_WINDOW }), toggleEqualizer: () => ({ type: TOGGLE_EQUALIZER_WINDOW }), toggleGenWindow: windowId => ({ type: TOGGLE_GEN_WINDOW, windowId }) }; export default connect(mapStateToProps, mapDispatchToProps)(MainContextMenu);