import classNames from 'classnames'; import React from 'react'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { injectIntl } from 'react-intl'; import { connect } from 'react-redux'; import StatusContent from 'soapbox/components/status_content'; import StatusReplyMentions from 'soapbox/components/status_reply_mentions'; import { HStack } from 'soapbox/components/ui'; import AccountContainer from 'soapbox/containers/account_container'; import PlaceholderCard from 'soapbox/features/placeholder/components/placeholder_card'; import PlaceholderMediaGallery from 'soapbox/features/placeholder/components/placeholder_media_gallery'; import QuotedStatus from 'soapbox/features/status/containers/quoted_status_container'; import { buildStatus } from '../util/pending_status_builder'; import PollPreview from './poll_preview'; const shouldHaveCard = pendingStatus => { return Boolean(pendingStatus.get('content').match(/https?:\/\/\S*/)); }; const mapStateToProps = (state, props) => { const { idempotencyKey } = props; const pendingStatus = state.getIn(['pending_statuses', idempotencyKey]); return { status: pendingStatus ? buildStatus(state, pendingStatus, idempotencyKey) : null, }; }; export default @connect(mapStateToProps) @injectIntl class PendingStatus extends ImmutablePureComponent { renderMedia = () => { const { status } = this.props; if (status.get('media_attachments') && !status.get('media_attachments').isEmpty()) { return ( ); } else if (!status.get('quote') && shouldHaveCard(status)) { return ; } else { return null; } } render() { const { status, className } = this.props; if (!status) return null; if (!status.get('account')) return null; return (
{this.renderMedia()} {status.get('poll') && } {status.get('quote') && }
{/* TODO */} {/* */}
); } }