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);