5e796dc6f8
Editing media metadata is not currently possible in edit mode, the button would open the modal but saving the changes would error out.
62 lines
2.6 KiB
JavaScript
62 lines
2.6 KiB
JavaScript
import React from 'react';
|
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
import PropTypes from 'prop-types';
|
|
import Motion from '../../ui/util/optional_motion';
|
|
import spring from 'react-motion/lib/spring';
|
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
|
import { FormattedMessage } from 'react-intl';
|
|
import Icon from 'mastodon/components/icon';
|
|
|
|
export default class Upload extends ImmutablePureComponent {
|
|
|
|
static contextTypes = {
|
|
router: PropTypes.object,
|
|
};
|
|
|
|
static propTypes = {
|
|
media: ImmutablePropTypes.map.isRequired,
|
|
onUndo: PropTypes.func.isRequired,
|
|
onOpenFocalPoint: PropTypes.func.isRequired,
|
|
isEditingStatus: PropTypes.bool.isRequired,
|
|
};
|
|
|
|
handleUndoClick = e => {
|
|
e.stopPropagation();
|
|
this.props.onUndo(this.props.media.get('id'));
|
|
}
|
|
|
|
handleFocalPointClick = e => {
|
|
e.stopPropagation();
|
|
this.props.onOpenFocalPoint(this.props.media.get('id'));
|
|
}
|
|
|
|
render () {
|
|
const { media, isEditingStatus } = this.props;
|
|
const focusX = media.getIn(['meta', 'focus', 'x']);
|
|
const focusY = media.getIn(['meta', 'focus', 'y']);
|
|
const x = ((focusX / 2) + .5) * 100;
|
|
const y = ((focusY / -2) + .5) * 100;
|
|
|
|
return (
|
|
<div className='compose-form__upload' tabIndex='0' role='button'>
|
|
<Motion defaultStyle={{ scale: 0.8 }} style={{ scale: spring(1, { stiffness: 180, damping: 12 }) }}>
|
|
{({ scale }) => (
|
|
<div className='compose-form__upload-thumbnail' style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get('preview_url')})`, backgroundPosition: `${x}% ${y}%` }}>
|
|
<div className='compose-form__upload__actions'>
|
|
<button type='button' className='icon-button' onClick={this.handleUndoClick}><Icon id='times' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button>
|
|
{!isEditingStatus && (<button type='button' className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button>)}
|
|
</div>
|
|
|
|
{(media.get('description') || '').length === 0 && !isEditingStatus && (
|
|
<div className='compose-form__upload__warning'>
|
|
<button type='button' className='icon-button' onClick={this.handleFocalPointClick}><Icon id='info-circle' /> <FormattedMessage id='upload_form.description_missing' defaultMessage='No description added' /></button>
|
|
</div>
|
|
)}
|
|
</div>
|
|
)}
|
|
</Motion>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
}
|