import React, { useState, useEffect } from 'react'; import { SiteContext } from '../../utils/contexts/'; import { useUser, usePopup } from '../../utils/hooks/'; import { PageStore, MediaPageStore } from '../../utils/stores/'; import { PageActions, MediaPageActions } from '../../utils/actions/'; import { formatInnerLink, publishedOnDate } from '../../utils/helpers/'; import { PopupMain } from '../_shared/'; import CommentsList from '../comments/Comments'; import { replaceString } from '../../utils/helpers/'; import { translateString } from '../../utils/helpers/'; function metafield(arr) { let i; let sep; let ret = []; if (arr.length) { i = 0; sep = 1 < arr.length ? ', ' : ''; while (i < arr.length) { ret[i] = (
{arr[i].title} {i < arr.length - 1 ? sep : ''}
); i += 1; } } return ret; } function MediaAuthorBanner(props) { return (
{props.name}
{props.name} {PageStore.get('config-media-item').displayPublishDate && props.published ? ( {translateString("Published on")} {replaceString(publishedOnDate(new Date(props.published)))} ) : null}
); } function MediaMetaField(props) { return (

{props.title}

{props.value}
); } function EditMediaButton(props) { let link = props.link; if (window.MediaCMS.site.devEnv) { link = '/edit-media.html'; } return ( {translateString("EDIT MEDIA")} ); } function EditSubtitleButton(props) { let link = props.link; if (window.MediaCMS.site.devEnv) { link = '#'; } return ( {translateString("EDIT SUBTITLE")} ); } export default function ViewerInfoContent(props) { const { userCan } = useUser(); const description = props.description.trim(); const tagsContent = !PageStore.get('config-enabled').taxonomies.tags || PageStore.get('config-enabled').taxonomies.tags.enabled ? metafield(MediaPageStore.get('media-tags')) : []; const categoriesContent = PageStore.get('config-options').pages.media.categoriesWithTitle ? [] : !PageStore.get('config-enabled').taxonomies.categories || PageStore.get('config-enabled').taxonomies.categories.enabled ? metafield(MediaPageStore.get('media-categories')) : []; let summary = MediaPageStore.get('media-summary'); summary = summary ? summary.trim() : ''; const [popupContentRef, PopupContent, PopupTrigger] = usePopup(); const [hasSummary, setHasSummary] = useState('' !== summary); const [isContentVisible, setIsContentVisible] = useState('' == summary); function proceedMediaRemoval() { MediaPageActions.removeMedia(); popupContentRef.current.toggle(); } function cancelMediaRemoval() { popupContentRef.current.toggle(); } function onMediaDelete(mediaId) { // FIXME: Without delay creates conflict [ Uncaught Error: Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch. ]. setTimeout(function () { PageActions.addNotification('Media removed. Redirecting...', 'mediaDelete'); setTimeout(function () { window.location.href = SiteContext._currentValue.url + '/' + MediaPageStore.get('media-data').author_profile.replace(/^\//g, ''); }, 2000); }, 100); if (void 0 !== mediaId) { console.info("Removed media '" + mediaId + '"'); } } function onMediaDeleteFail(mediaId) { // FIXME: Without delay creates conflict [ Uncaught Error: Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch. ]. setTimeout(function () { PageActions.addNotification('Media removal failed', 'mediaDeleteFail'); }, 100); if (void 0 !== mediaId) { console.info('Media "' + mediaId + '"' + ' removal failed'); } } function onClickLoadMore() { setIsContentVisible(!isContentVisible); } useEffect(() => { MediaPageStore.on('media_delete', onMediaDelete); MediaPageStore.on('media_delete_fail', onMediaDeleteFail); return () => { MediaPageStore.removeListener('media_delete', onMediaDelete); MediaPageStore.removeListener('media_delete_fail', onMediaDeleteFail); }; }, []); const authorLink = formatInnerLink(props.author.url, SiteContext._currentValue.url); const authorThumb = formatInnerLink(props.author.thumb, SiteContext._currentValue.url); return (
{void 0 === PageStore.get('config-media-item').displayAuthor || null === PageStore.get('config-media-item').displayAuthor || !!PageStore.get('config-media-item').displayAuthor ? ( ) : null}
{hasSummary ?
{summary}
: null} {(!hasSummary || isContentVisible) && description ? ( PageStore.get('config-options').pages.media.htmlInDescription ? (
) : (
{description}
) ) : null} {hasSummary ? ( ) : null} {tagsContent.length ? ( ) : null} {categoriesContent.length ? ( ) : null} {userCan.editMedia || userCan.editSubtitle || userCan.deleteMedia ? (
{userCan.editMedia ? : null} {userCan.editSubtitle && 'video' === MediaPageStore.get('media-data').media_type ? ( ) : null}
Media removal You're willing to remove media permanently?

) : null}
); }