|
|
@ -3,6 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
import { FormattedMessage, injectIntl } from 'react-intl';
|
|
|
|
import { FormattedMessage, injectIntl } from 'react-intl';
|
|
|
|
import Permalink from './permalink';
|
|
|
|
import Permalink from './permalink';
|
|
|
|
|
|
|
|
import { connect } from 'react-redux';
|
|
|
|
import classnames from 'classnames';
|
|
|
|
import classnames from 'classnames';
|
|
|
|
import Icon from 'flavours/glitch/components/icon';
|
|
|
|
import Icon from 'flavours/glitch/components/icon';
|
|
|
|
import { autoPlayGif, languages as preloadedLanguages } from 'flavours/glitch/initial_state';
|
|
|
|
import { autoPlayGif, languages as preloadedLanguages } from 'flavours/glitch/initial_state';
|
|
|
@ -99,7 +100,12 @@ class TranslateButton extends React.PureComponent {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default @injectIntl
|
|
|
|
const mapStateToProps = state => ({
|
|
|
|
|
|
|
|
languages: state.getIn(['server', 'translationLanguages', 'items']),
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export default @connect(mapStateToProps)
|
|
|
|
|
|
|
|
@injectIntl
|
|
|
|
class StatusContent extends React.PureComponent {
|
|
|
|
class StatusContent extends React.PureComponent {
|
|
|
|
|
|
|
|
|
|
|
|
static contextTypes = {
|
|
|
|
static contextTypes = {
|
|
|
@ -120,6 +126,7 @@ class StatusContent extends React.PureComponent {
|
|
|
|
onUpdate: PropTypes.func,
|
|
|
|
onUpdate: PropTypes.func,
|
|
|
|
tagLinks: PropTypes.bool,
|
|
|
|
tagLinks: PropTypes.bool,
|
|
|
|
rewriteMentions: PropTypes.string,
|
|
|
|
rewriteMentions: PropTypes.string,
|
|
|
|
|
|
|
|
languages: ImmutablePropTypes.map,
|
|
|
|
intl: PropTypes.object,
|
|
|
|
intl: PropTypes.object,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
@ -315,7 +322,9 @@ class StatusContent extends React.PureComponent {
|
|
|
|
} = this.props;
|
|
|
|
} = this.props;
|
|
|
|
|
|
|
|
|
|
|
|
const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
|
|
|
|
const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
|
|
|
|
const renderTranslate = this.props.onTranslate && status.get('translatable');
|
|
|
|
const contentLocale = intl.locale.replace(/[_-].*/, '');
|
|
|
|
|
|
|
|
const targetLanguages = this.props.languages?.get(status.get('language') || 'und');
|
|
|
|
|
|
|
|
const renderTranslate = this.props.onTranslate && this.context.identity.signedIn && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && targetLanguages?.includes(contentLocale);
|
|
|
|
|
|
|
|
|
|
|
|
const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') };
|
|
|
|
const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') };
|
|
|
|
const spoilerContent = { __html: status.get('spoilerHtml') };
|
|
|
|
const spoilerContent = { __html: status.get('spoilerHtml') };
|
|
|
|