import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; import { gettext, storages} from '../../utils/constants'; import Loading from '../../components/loading'; import TableBody from './table-body'; import ModalPortal from '../../components/modal-portal'; import LibHistorySetting from '../../components/dialog/lib-history-setting-dialog'; import TransferDialog from '../../components/dialog/transfer-dialog'; import DeleteRepoDialog from '../../components/dialog/delete-repo-dialog'; const propTypes = { loading: PropTypes.bool.isRequired, errorMsg: PropTypes.string.isRequired, items: PropTypes.array.isRequired, onRenameRepo: PropTypes.func.isRequired, onDeleteRepo: PropTypes.func.isRequired, onTransferRepo: PropTypes.func.isRequired, onRepoDetails: PropTypes.func.isRequired, }; class Content extends Component { constructor(props) { super(props); this.state = { deleteItemPopupOpen: false, showTransfer: false, itemName: '', showHistorySetting: false, showDetails: false, libID: '', libSize: '', libUpdateTime: '' }; } toggleDeleteItemPopup = () => { this.setState({ deleteItemPopupOpen: !this.state.deleteItemPopupOpen }); } showDeleteItemPopup = (data) => { this.toggleDeleteItemPopup(); this.setState({ deleteItemPopupData: data }); } onTransfer = (itemName, itemID) => { this.setState({ showTransfer: !this.state.showTransfer, itemName: itemName, libID: itemID }); } onHistorySetting = (itemName, itemID) => { this.setState({ showHistorySetting: !this.state.showHistorySetting, itemName: itemName, libID: itemID }); } render() { const { loading, errorMsg, items } = this.props; if (loading) { return ; } else if (errorMsg) { return

{errorMsg}

; } else { const emptyTip = (

{gettext('You have not created any libraries')}

{gettext('You can create a library to organize your files. For example, you can create one for each of your projects. Each library can be synchronized and shared separately.')}

); // TODO: test 'storage backend' const showStorageBackend = storages.length > 0; // only for desktop const desktopThead = ( {gettext('Library Type')} {gettext('Name')}{/*TODO: sort*/} {gettext('Actions')} {gettext('Size')} {showStorageBackend ? {gettext('Storage backend')} : null} {gettext('Last Update')}{/*TODO: sort*/} ); const mobileThead = ( {gettext('Library Type')} {gettext("Sort:")} {/* TODO: sort */} {gettext("name")} {gettext("last update")} {gettext('Actions')} ); const table = ( {window.innerWidth >= 768 ? desktopThead : mobileThead}
); const nonEmpty = ( {table} {this.state.deleteItemPopupOpen && ( )} {this.state.showTransfer && } {this.state.showHistorySetting && } ); return items.length ? nonEmpty : emptyTip; } } } Content.propTypes = propTypes; export default Content;