diff --git a/app/javascript/gabsocial/components/panel/status_promotion_panel.js b/app/javascript/gabsocial/components/panel/status_promotion_panel.js new file mode 100644 index 00000000..f388164a --- /dev/null +++ b/app/javascript/gabsocial/components/panel/status_promotion_panel.js @@ -0,0 +1,134 @@ +import { NavLink } from 'react-router-dom' +import { injectIntl, defineMessages } from 'react-intl' +import ImmutablePropTypes from 'react-immutable-proptypes' +import ImmutablePureComponent from 'react-immutable-pure-component' +import { fetchStatus } from '../../actions/statuses' +import { makeGetStatus } from '../../selectors' +import { me } from '../../initial_state' +import { + CX, +} from '../../constants' +import PanelLayout from './panel_layout' +import Avatar from '../avatar' +import Button from '../button' +import DisplayName from '../display_name' +import ColumnIndicator from '../column_indicator' +import StatusContent from '../status_content' +import StatusMedia from '../status_media' + +const messages = defineMessages({ + gabs: { id: 'account.posts', defaultMessage: 'Gabs' }, + followers: { id: 'account.followers', defaultMessage: 'Followers' }, + follows: { id: 'account.follows', defaultMessage: 'Following' }, + edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, + headerPhoto: { id: 'header_photo', defaultMessage: 'Header photo' }, +}) + +const mapStateToProps = (state, { statusId }) => ({ + status: makeGetStatus()(state, { id: statusId }), +}) + +const mapDispatchToProps = (dispatch) => ({ + onFetchStatus: (id) => dispatch(fetchStatus(id)), +}) + +export default +@connect(mapStateToProps, mapDispatchToProps) +@injectIntl +class StatusPromotionPanel extends ImmutablePureComponent { + + static propTypes = { + status: ImmutablePropTypes.map.isRequired, + statusId: PropTypes.string.isRequired, + onFetchStatus: PropTypes.func.isRequired, + } + + componentDidMount() { + if (!this.props.status) { + this.props.onFetchStatus(this.props.statusId) + } + } + + render() { + const { status } = this.props + + const containerClasses = CX({ + default: 1, + pb10: !!status ? status.get('media_attachments').size === 0 : false, + }) + + return ( + + { + !status && + } + { + !!status && +
+
+
+ + + + + +
+ +
+ + + + +
+ +
+
+
+ +
+ { }} + onExpandedToggle={() => { }} + /> +
+ + { }} + onToggleVisibility={() => { }} + onOpenVideo={() => { }} + // width={this.props.cachedMediaWidth} + // cacheWidth={this.props.cacheMediaWidth} + // defaultWidth={this.props.cachedMediaWidth} + // visible={this.state.showMedia} + /> + +
+ } +
+ ) + } + +} \ No newline at end of file