const FormattedDate = require('react-intl').FormattedDate; const injectIntl = require('react-intl').injectIntl; const intlShape = require('react-intl').intlShape; const PropTypes = require('prop-types'); const React = require('react'); const Formsy = require('formsy-react').default; const classNames = require('classnames'); const sessionActions = require('../../redux/session.js'); const decorateText = require('../../lib/decorate-text.jsx'); const FlexRow = require('../../components/flex-row/flex-row.jsx'); const Avatar = require('../../components/avatar/avatar.jsx'); const CappedNumber = require('../../components/cappednumber/cappednumber.jsx'); const placeholder = require('./gui-placeholder.png'); const ShareBanner = require('../../components/share-banner/share-banner.jsx'); const ThumbnailColumn = require('../../components/thumbnailcolumn/thumbnailcolumn.jsx'); const InplaceInput = require('../../components/forms/inplace-input.jsx'); require('./preview.scss'); const PreviewPresentation = props => { const { creditInfo, editable, faved, favoriteCount, intl, loved, loveCount, projectInfo, remixes, sessionStatus, studios, user, onFavoriteClicked, onLoveClicked, onUpdate // ...otherProps TBD } = props; const shareDate = (projectInfo.history && projectInfo.history.shared) ? projectInfo.history.shared : ''; return (
This project is not shared — so only you can see it. Click share to let everyone see it! { projectInfo && projectInfo.author && projectInfo.author.id && (
{editable ? :
{projectInfo.title}
} {`${intl.formatMessage({id: 'thumbnail.by'})} `} {projectInfo.author.username}
{sessionStatus === sessionActions.Status.FETCHED && Object.keys(user).length > 0 && user.id !== projectInfo.author.id && }
{shareDate && (
©
{' '} {/* eslint-disable react/jsx-sort-props */} {/* eslint-enable react/jsx-sort-props */}
)} {creditInfo && creditInfo.author && creditInfo.id && (
Thanks to {creditInfo.author.username} for the original project {creditInfo.title} .
) } {editable ? :
{decorateText(projectInfo.description)}
}
{loveCount}
{favoriteCount}
{projectInfo.remix.count}
  • Add to Studio
  • Social
  • Report
  • Comments go here
    Remixes
    {remixes && remixes.length === 0 ? ( No remixes ) : ( )}
    Studios
    {studios && studios.length === 0 ? ( No studios ) : ( )}
    )}
    ); }; PreviewPresentation.propTypes = { creditInfo: PropTypes.shape({ id: PropTypes.number, title: PropTypes.string, description: PropTypes.string, author: PropTypes.shape({id: PropTypes.number}), history: PropTypes.shape({ created: PropTypes.string, modified: PropTypes.string, shared: PropTypes.string }), stats: PropTypes.shape({ views: PropTypes.number, loves: PropTypes.number, favorites: PropTypes.number }), remix: PropTypes.shape({ parent: PropTypes.number, root: PropTypes.number }) }), editable: PropTypes.bool, faved: PropTypes.bool, favoriteCount: PropTypes.number, intl: intlShape, loveCount: PropTypes.number, loved: PropTypes.bool, onFavoriteClicked: PropTypes.func, onLoveClicked: PropTypes.func, onUpdate: PropTypes.func, projectInfo: PropTypes.shape({ id: PropTypes.number, title: PropTypes.string, description: PropTypes.string, author: PropTypes.shape({id: PropTypes.number}), history: PropTypes.shape({ created: PropTypes.string, modified: PropTypes.string, shared: PropTypes.string }), stats: PropTypes.shape({ views: PropTypes.number, loves: PropTypes.number, favorites: PropTypes.number }), remix: PropTypes.shape({ parent: PropTypes.number, root: PropTypes.number }) }), remixes: PropTypes.arrayOf(PropTypes.object), sessionStatus: PropTypes.string.isRequired, studios: PropTypes.arrayOf(PropTypes.object), user: PropTypes.shape({ id: PropTypes.number, banned: PropTypes.bool, username: PropTypes.string, token: PropTypes.string, thumbnailUrl: PropTypes.string, dateJoined: PropTypes.string, email: PropTypes.string, classroomId: PropTypes.string }).isRequired }; module.exports = injectIntl(PreviewPresentation);