import React from 'react'; import PropTypes from 'prop-types'; import moment from 'moment'; import copy from 'copy-to-clipboard'; import toaster from '../toast'; import { isPro, gettext } from '../../utils/constants'; import ShareLinkPermissionEditor from '../../components/select-editor/share-link-permission-editor'; import { Utils } from '../../utils/utils'; const propTypes = { item: PropTypes.object.isRequired, permissionOptions: PropTypes.array, showLinkDetails : PropTypes.func.isRequired }; class LinkItem extends React.Component { constructor(props) { super(props); this.state = { isItemOpVisible: false }; } onMouseOver = () => { this.setState({ isItemOpVisible: true }); } onMouseOut = () => { this.setState({ isItemOpVisible: false }); } cutLink = (link) => { let length = link.length; return link.slice(0, 9) + '...' + link.slice(length-5); } copyLink = (e) => { e.preventDefault(); const { item } = this.props; copy(item.link); toaster.success(gettext('Share link is copied to the clipboard.')); } viewDetails = (e) => { e.preventDefault(); this.props.showLinkDetails(this.props.item); } render() { const { isItemOpVisible } = this.state; const { item, permissionOptions } = this.props; const { permissions, link, expire_date } = item; const currentPermission = Utils.getShareLinkPermissionStr(permissions); return ( {this.cutLink(link)} {(isPro && permissions) && ( {}} /> )} {expire_date ? moment(expire_date).format('YYYY-MM-DD HH:mm') : '--'} ); } } LinkItem.propTypes = propTypes; export default LinkItem;