import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; import { gettext, storages} from '../../utils/constants'; import TransferDialog from '../../components/dialog/transfer-dialog'; import LibHistorySetting from '../../components/dialog/lib-history-setting-dialog'; import Loading from '../../components/loading'; import ModalPortal from '../../components/modal-portal'; import DeleteRepoDialog from '../../components/dialog/delete-repo-dialog'; import TableBody from './table-body'; 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.showTransfer && } {this.state.showHistorySetting && } ); return items.length ? nonEmpty : emptyTip; } } } Content.propTypes = propTypes; export default Content;