import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import moment from 'moment';
import { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';
import { Utils } from '../../utils/utils';
import { gettext, siteRoot, isPro, username, folderPermEnabled } from '../../utils/constants';
const propTypes = {
repo: PropTypes.object.isRequired,
isItemFreezed: PropTypes.bool.isRequired,
isShowRepoOwner: PropTypes.bool.isRequired,
currentGroup: PropTypes.object.isRequired
};
class RepoListItem extends React.Component {
constructor(props) {
super(props);
this.state = {
highlight: false,
isOperationShow: false,
isItemMenuShow: false,
};
}
onMouseEnter = () => {
this.setState({
highlight: true,
isOperationShow: true,
});
}
onMouseLeave = () => {
this.setState({
highlight: false,
isOperationShow: false,
});
}
toggleOperationMenu = () => {
this.setState({
isItemMenuShow: !this.state.isItemMenuShow
});
}
getRepoComputeParams = () => {
let repo = this.props.repo;
let currentGroup = this.props.currentGroup; //todo--change to libray
let isReadyOnly = false;
if ( repo.permission === 'r' || repo.permission === 'preview') {
isReadyOnly = true;
}
let iconUrl = Utils.getLibIconUrl({
is_encryted: repo.encrypted,
is_readyonly: isReadyOnly,
size: Utils.isHiDPI() ? 48 : 24
});
let iconTitle = Utils.getLibIconTitle({
'encrypted': repo.encrypted,
'is_admin': repo.is_admin,
'permission': repo.permission
});
//todo change to library; div-view is not compatibility
let libPath = `${siteRoot}#group/${currentGroup.id}/lib/${this.props.repo.repo_id}/`;
return { iconUrl, iconTitle, libPath };
}
generatorOperations = () => {
let { repo, currentGroup } = this.props;
let isStaff = currentGroup.admins.indexOf(username) > -1; //for group repolist;
let isRepoOwner = repo.owner_email === username;
let isAdmin = repo.is_admin;
let iconVisibility = this.state.isOperationShow ? '' : ' invisible';
let shareIconClassName = 'sf2-icon-share sf2-x repo-share-btn op-icon' + iconVisibility;
let unshareIconClassName = 'sf2-icon-x3 sf2-x op-icon' + iconVisibility;
let deleteIconClassName = 'sf2-icon-delete sf2-x op-icon' + iconVisibility;
let operationMenuToggleIconClassName = 'sf2-icon-caret-down item-operation-menu-toggle-icon op-icon';
if (window.innerWidth >= 768) {
operationMenuToggleIconClassName += iconVisibility;
}
const commonToggle = (