import React from 'react'; import './PinnedManager.css'; import Box from '../../components/UI/Box/Box'; import Button from '../../components/UI/Button/Button'; import CheckBox from '../../components/UI/CheckBox/CheckBox'; import IPCContainer from '../IPCContainer/IPCContainer'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { connect } from 'react-redux'; import { displayPinnedManager } from '../../redux/actions/pinned_manager_actions'; import { faFolder } from '@fortawesome/free-solid-svg-icons'; import { notifyApplicationBusy } from '../../redux/actions/common_actions'; import { notifyError, notifyInfo } from '../../redux/actions/error_actions'; const Constants = require('../../constants'); const mapStateToProps = (state) => { return { DisplayConfiguration: state.mounts.DisplayConfiguration, DisplayRemoteConfiguration: state.mounts.DisplayRemoteConfiguration, DisplayS3Configuration: state.mounts.DisplayS3Configuration, }; }; const mapDispatchToProps = (dispatch) => { return { displayPinnedManager: (display) => dispatch(displayPinnedManager(display)), notifyApplicationBusy: (busy) => dispatch(notifyApplicationBusy(busy, true)), notifyError: (msg, cb) => dispatch(notifyError(msg, false, cb)), notifyInfo: (title, msg) => dispatch(notifyInfo(title, msg)), }; }; export default connect( mapStateToProps, mapDispatchToProps )( class extends IPCContainer { state = { active_directory: '/', items: [], previous: [], }; componentDidMount() { this.setRequestHandler( Constants.IPC_Get_Directory_Items_Reply, this.onGetDirectoryItemsReply ); this.grabDirectoryItems(); } componentWillUnmount() { super.componentWillUnmount(); } grabDirectoryItems = () => { this.sendRequest(Constants.IPC_Get_Directory_Items, { Provider: this.props.DisplayConfiguration, Remote: this.props.DisplayRemoteConfiguration, S3: this.props.DisplayS3Configuration, Version: this.props.version, Path: this.state.active_directory, }); }; onGetDirectoryItemsReply = (_, { data }) => { if (data.Success) { const items = data.Items.filter( (i) => i.path !== '.' && (this.state.active_directory !== '/' || i.path.substr(0, 1) !== '.') ).map((i) => { return { ...i, name: i.path === '..' ? i.path : i.path.substr(i.path.lastIndexOf('/') + 1), meta: { ...i.meta, pinned: i.meta.pinned === '1', }, }; }); this.setState({ items, }); } else { this.props.notifyError(data.Error, () => { this.props.displayPinnedManager(false); }); } }; createDirectory = (name, path, idx, total, item_idx) => { const style = {}; if (item_idx + 1 !== total) { style.marginBottom = '4px'; } return (