Rev 3694 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from 'react';import { useDispatch, useSelector } from 'react-redux';import { Box, Button, styled, Typography } from '@mui/material';import ChatOutlined from '@mui/icons-material/ChatOutlined';import SendOutlined from '@mui/icons-material/SendOutlined';import ShareOutlined from '@mui/icons-material/ShareOutlined';import { withReactions } from '@hocs';import { feedTypes } from '@store/feed/feed.types';import { shareModalTypes } from '@store/share-modal/shareModal.types';import { openShareModal } from '@store/share-modal/shareModal.actions';import Widget from '@components/UI/Widget';import Comments from '../linkedin/comments/comments';import Reactions from '../reactions/reactions';import withExternalShare from '../linkedin/withExternalShare';const Row = styled(Box)(({ theme }) => ({display: 'flex',padding: theme.spacing(0.5),justifyContent: 'space-between',alignItems: 'center',gap: theme.spacing(0.5)}));export default function FeedActions({ id }) {const {comments,comment_add_url: commentAddUrl,owner_comments: ownerComments,feed_reactions_url: reactionsUrl,feed_content_type: contentType,owner_shared: totalShared,feed_share_external_url: shareExternalUrl,feed_save_reaction_url: saveReactionUrl,feed_delete_reaction_url: deleteReactionUrl,feed_increment_external_counter_url: incrementExternalCounterUrl,feed_my_reaction: feedMyReaction,feed_reactions: feedReactions,owner_external_shared: ownerExternalShared,feed_share_url: feedShareUrl,feed_unique: feedUnique} = useSelector(({ feed }) => feed.feeds.byId[id]);const labels = useSelector(({ intl }) => intl.labels);const dispatch = useDispatch();const [totalComments, setTotalComments] = useState(ownerComments);const [reaction, setReaction] = useState(feedMyReaction);const [ownerReactions, setOwnerReactions] = useState(feedReactions);const [externalShare, setExternalShare] = useState(ownerExternalShared);const [showComments, setShowComments] = useState(false);const setTotalShares = (value) => setExternalShare(value);const toggleComments = () => setShowComments((prev) => !prev);const updateReactions = ({ reactions }, currentReaction) => {setOwnerReactions(reactions);setReaction(currentReaction);};const shareFeed = () => {dispatch(openShareModal(feedShareUrl, shareModalTypes.SHARE, feedTypes.DASHBOARD, feedUnique));};const ExternalShareButton = withExternalShare(Button, shareExternalUrl);const ReactionButton = withReactions(Button);return (<><Row><Reactions reactions={ownerReactions} reactionsUrl={reactionsUrl} /><Row>{totalComments ? (<Typography variant='overline'>{`${totalComments} ${labels.comments?.toLowerCase()}`}</Typography>) : null}{totalShared ? (<Typography variant='overline'>{`${totalShared} ${labels.shared?.toLowerCase()}`}</Typography>) : null}{externalShare ? (<Typography variant='overline'>{`${externalShare} ${labels.sends?.toLowerCase()}`}</Typography>) : null}</Row></Row><Widget.Actions styles={{ display: contentType === 'fast-survey' ? 'none' : 'flex' }}><ReactionButtoncurrentReactionType={reaction}saveUrl={saveReactionUrl}deleteUrl={deleteReactionUrl}onReaction={updateReactions}/><Button onClick={toggleComments}><ChatOutlined /><Typography sx={{ display: { xs: 'none', md: 'inline-flex' } }} variant='overline'>{labels.comment}</Typography></Button><Button onClick={shareFeed}><ShareOutlined /><Typography sx={{ display: { xs: 'none', md: 'inline-flex' } }} variant='overline'>{labels.share}</Typography></Button><ExternalShareButton shorterUrl={incrementExternalCounterUrl} setValue={setTotalShares}><SendOutlined /><Typography sx={{ display: { xs: 'none', md: 'inline-flex' } }} variant='overline'>{labels.send}</Typography></ExternalShareButton></Widget.Actions><Boxsx={{display: showComments ? 'block' : 'none',padding: 0.5}}><Commentscomments={comments}addUrl={commentAddUrl}onAdd={({ totalComments }) => setTotalComments(totalComments)}/></Box></>);}