From f61449d7064fb4f91e9622123eed93fb38d30022 Mon Sep 17 00:00:00 2001 From: mgabdev <> Date: Wed, 15 Jul 2020 23:00:19 -0500 Subject: [PATCH] Added StatusPromotionPanel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Added: - StatusPromotionPanel • Todo: - Build out functionality for opening media, opening status, etc. --- .../panel/status_promotion_panel.js | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 app/javascript/gabsocial/components/panel/status_promotion_panel.js 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