import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { Button, Comment, Icon, Loader, Visibility } from 'semantic-ui-react'; import { ActionTypes } from '../../../constants/Enums'; import CommentAdd from './CommentAdd'; import Item from './Item'; import styles from './Actions.module.scss'; const Actions = React.memo( ({ items, isFetching, isAllFetched, isDetailsVisible, isDetailsFetching, canEdit, canEditAllComments, onFetch, onDetailsToggle, onCommentCreate, onCommentUpdate, onCommentDelete, }) => { const [t] = useTranslation(); const handleToggleDetailsClick = useCallback(() => { onDetailsToggle(!isDetailsVisible); }, [isDetailsVisible, onDetailsToggle]); const handleCommentUpdate = useCallback( (id, data) => { onCommentUpdate(id, data); }, [onCommentUpdate], ); const handleCommentDelete = useCallback( (id) => { onCommentDelete(id); }, [onCommentDelete], ); return (
{t('common.actions')}
{canEdit && }
{items.map((item) => item.type === ActionTypes.COMMENT_CARD ? ( handleCommentUpdate(item.id, data)} onDelete={() => handleCommentDelete(item.id)} /> ) : ( ), )}
{isFetching || isDetailsFetching ? ( ) : ( !isAllFetched && )}
); }, ); Actions.propTypes = { items: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types isFetching: PropTypes.bool.isRequired, isAllFetched: PropTypes.bool.isRequired, isDetailsVisible: PropTypes.bool.isRequired, isDetailsFetching: PropTypes.bool.isRequired, canEdit: PropTypes.bool.isRequired, canEditAllComments: PropTypes.bool.isRequired, onFetch: PropTypes.func.isRequired, onDetailsToggle: PropTypes.func.isRequired, onCommentCreate: PropTypes.func.isRequired, onCommentUpdate: PropTypes.func.isRequired, onCommentDelete: PropTypes.func.isRequired, }; export default Actions;