M app/javascript/flavours/glitch/actions/server.js => app/javascript/flavours/glitch/actions/server.js +0 -27
@@ 6,10 6,6 @@ export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST';
export const SERVER_FETCH_SUCCESS = 'Server_FETCH_SUCCESS';
export const SERVER_FETCH_FAIL = 'Server_FETCH_FAIL';
-export const SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST = 'SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST';
-export const SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS = 'SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS';
-export const SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL = 'SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL';
-
export const EXTENDED_DESCRIPTION_REQUEST = 'EXTENDED_DESCRIPTION_REQUEST';
export const EXTENDED_DESCRIPTION_SUCCESS = 'EXTENDED_DESCRIPTION_SUCCESS';
export const EXTENDED_DESCRIPTION_FAIL = 'EXTENDED_DESCRIPTION_FAIL';
@@ 46,29 42,6 @@ const fetchServerFail = error => ({
error,
});
-export const fetchServerTranslationLanguages = () => (dispatch, getState) => {
- dispatch(fetchServerTranslationLanguagesRequest());
-
- api(getState)
- .get('/api/v1/instance/translation_languages').then(({ data }) => {
- dispatch(fetchServerTranslationLanguagesSuccess(data));
- }).catch(err => dispatch(fetchServerTranslationLanguagesFail(err)));
-};
-
-const fetchServerTranslationLanguagesRequest = () => ({
- type: SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST,
-});
-
-const fetchServerTranslationLanguagesSuccess = translationLanguages => ({
- type: SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS,
- translationLanguages,
-});
-
-const fetchServerTranslationLanguagesFail = error => ({
- type: SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL,
- error,
-});
-
export const fetchDomainBlocks = () => (dispatch, getState) => {
if (getState().getIn(['server', 'domainBlocks', 'isLoading'])) {
return;
M app/javascript/flavours/glitch/components/status_content.jsx => app/javascript/flavours/glitch/components/status_content.jsx +2 -54
@@ 9,7 9,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import { connect } from 'react-redux';
import { Icon } from 'flavours/glitch/components/icon';
-import { autoPlayGif, languages as preloadedLanguages } from 'flavours/glitch/initial_state';
+import { autoPlayGif } from 'flavours/glitch/initial_state';
import { decode as decodeIDNA } from 'flavours/glitch/utils/idna';
import Permalink from './permalink';
@@ 68,46 68,6 @@ const isLinkMisleading = (link) => {
return !(textMatchesTarget(text, origin, host) || textMatchesTarget(text.toLowerCase(), origin, host));
};
-class TranslateButton extends PureComponent {
-
- static propTypes = {
- translation: ImmutablePropTypes.map,
- onClick: PropTypes.func,
- };
-
- render () {
- const { translation, onClick } = this.props;
-
- if (translation) {
- const language = preloadedLanguages.find(lang => lang[0] === translation.get('detected_source_language'));
- const languageName = language ? language[2] : translation.get('detected_source_language');
- const provider = translation.get('provider');
-
- return (
- <div className='translate-button'>
- <div className='translate-button__meta'>
- <FormattedMessage id='status.translated_from_with' defaultMessage='Translated from {lang} using {provider}' values={{ lang: languageName, provider }} />
- </div>
-
- <button className='link-button' onClick={onClick}>
- <FormattedMessage id='status.show_original' defaultMessage='Show original' />
- </button>
- </div>
- );
- }
-
- return (
- <button className='status__content__translate-button' onClick={onClick}>
- <FormattedMessage id='status.translate' defaultMessage='Translate' />
- </button>
- );
- }
-
-}
-
-const mapStateToProps = state => ({
- languages: state.getIn(['server', 'translationLanguages', 'items']),
-});
class StatusContent extends PureComponent {
@@ 129,8 89,6 @@ class StatusContent extends PureComponent {
onUpdate: PropTypes.func,
tagLinks: PropTypes.bool,
rewriteMentions: PropTypes.string,
- languages: ImmutablePropTypes.map,
- intl: PropTypes.object,
};
static defaultProps = {
@@ 321,13 279,9 @@ class StatusContent extends PureComponent {
disabled,
tagLinks,
rewriteMentions,
- intl,
} = this.props;
const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
- 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('search_index').trim().length > 0 && targetLanguages?.includes(contentLocale);
const content = { __html: status.getIn(['translation', 'contentHtml']) || status.get('contentHtml') };
const spoilerContent = { __html: status.getIn(['translation', 'spoilerHtml']) || status.get('spoilerHtml') };
@@ 337,9 291,6 @@ class StatusContent extends PureComponent {
'status__content--with-spoiler': status.get('spoiler_text').length > 0,
});
- const translateButton = renderTranslate && (
- <TranslateButton onClick={this.handleTranslate} translation={status.get('translation')} />
- );
if (status.get('spoiler_text').length > 0) {
let mentionsPlaceholder = '';
@@ 416,7 367,6 @@ class StatusContent extends PureComponent {
onMouseLeave={this.handleMouseLeave}
lang={language}
/>
- {!hidden && translateButton}
{media}
</div>
@@ 441,7 391,6 @@ class StatusContent extends PureComponent {
onMouseLeave={this.handleMouseLeave}
lang={language}
/>
- {translateButton}
{media}
{extraMedia}
</div>
@@ 462,7 411,6 @@ class StatusContent extends PureComponent {
onMouseLeave={this.handleMouseLeave}
lang={language}
/>
- {translateButton}
{media}
{extraMedia}
</div>
@@ 472,4 420,4 @@ class StatusContent extends PureComponent {
}
-export default connect(mapStateToProps)(injectIntl(StatusContent));
+export default connect()(injectIntl(StatusContent));
M app/javascript/flavours/glitch/features/ui/index.jsx => app/javascript/flavours/glitch/features/ui/index.jsx +1 -2
@@ 17,7 17,7 @@ import { uploadCompose, resetCompose, changeComposeSpoilerness } from 'flavours/
import { clearHeight } from 'flavours/glitch/actions/height_cache';
import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'flavours/glitch/actions/markers';
import { expandNotifications, notificationsSetVisibility } from 'flavours/glitch/actions/notifications';
-import { fetchServer, fetchServerTranslationLanguages } from 'flavours/glitch/actions/server';
+import { fetchServer } from 'flavours/glitch/actions/server';
import { expandHomeTimeline } from 'flavours/glitch/actions/timelines';
import PermaLink from 'flavours/glitch/components/permalink';
import PictureInPicture from 'flavours/glitch/features/picture_in_picture';
@@ 423,7 423,6 @@ class UI extends Component {
this.props.dispatch(fetchMarkers());
this.props.dispatch(expandHomeTimeline());
this.props.dispatch(expandNotifications());
- this.props.dispatch(fetchServerTranslationLanguages());
setTimeout(() => this.props.dispatch(fetchServer()), 3000);
}
M app/javascript/flavours/glitch/reducers/server.js => app/javascript/flavours/glitch/reducers/server.js +0 -9
@@ 4,9 4,6 @@ import {
SERVER_FETCH_REQUEST,
SERVER_FETCH_SUCCESS,
SERVER_FETCH_FAIL,
- SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST,
- SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS,
- SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL,
SERVER_DOMAIN_BLOCKS_FETCH_REQUEST,
SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS,
SERVER_DOMAIN_BLOCKS_FETCH_FAIL,
@@ 32,12 29,6 @@ export default function server(state = initialState, action) {
return state.set('server', fromJS(action.server)).setIn(['server', 'isLoading'], false);
case SERVER_FETCH_FAIL:
return state.setIn(['server', 'isLoading'], false);
- case SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST:
- return state.setIn(['translationLanguages', 'isLoading'], true);
- case SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS:
- return state.setIn(['translationLanguages', 'items'], fromJS(action.translationLanguages)).setIn(['translationLanguages', 'isLoading'], false);
- case SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL:
- return state.setIn(['translationLanguages', 'isLoading'], false);
case SERVER_DOMAIN_BLOCKS_FETCH_REQUEST:
return state.setIn(['domainBlocks', 'isLoading'], true);
case SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS:
M app/javascript/mastodon/actions/server.js => app/javascript/mastodon/actions/server.js +0 -27
@@ 6,10 6,6 @@ export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST';
export const SERVER_FETCH_SUCCESS = 'Server_FETCH_SUCCESS';
export const SERVER_FETCH_FAIL = 'Server_FETCH_FAIL';
-export const SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST = 'SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST';
-export const SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS = 'SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS';
-export const SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL = 'SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL';
-
export const SERVER_DOMAIN_BLOCKS_FETCH_REQUEST = 'SERVER_DOMAIN_BLOCKS_FETCH_REQUEST';
export const SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS = 'SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS';
export const SERVER_DOMAIN_BLOCKS_FETCH_FAIL = 'SERVER_DOMAIN_BLOCKS_FETCH_FAIL';
@@ 42,29 38,6 @@ const fetchServerFail = error => ({
error,
});
-export const fetchServerTranslationLanguages = () => (dispatch, getState) => {
- dispatch(fetchServerTranslationLanguagesRequest());
-
- api(getState)
- .get('/api/v1/instance/translation_languages').then(({ data }) => {
- dispatch(fetchServerTranslationLanguagesSuccess(data));
- }).catch(err => dispatch(fetchServerTranslationLanguagesFail(err)));
-};
-
-const fetchServerTranslationLanguagesRequest = () => ({
- type: SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST,
-});
-
-const fetchServerTranslationLanguagesSuccess = translationLanguages => ({
- type: SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS,
- translationLanguages,
-});
-
-const fetchServerTranslationLanguagesFail = error => ({
- type: SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL,
- error,
-});
-
export const fetchDomainBlocks = () => (dispatch, getState) => {
if (getState().getIn(['server', 'domainBlocks', 'isLoading'])) {
return;
M app/javascript/mastodon/components/status_content.jsx => app/javascript/mastodon/components/status_content.jsx +3 -56
@@ 11,7 11,7 @@ import { connect } from 'react-redux';
import { Icon } from 'mastodon/components/icon';
import PollContainer from 'mastodon/containers/poll_container';
-import { autoPlayGif, languages as preloadedLanguages } from 'mastodon/initial_state';
+import { autoPlayGif } from 'mastodon/initial_state';
const MAX_HEIGHT = 706; // 22px * 32 (+ 2px padding at the top)
@@ 24,47 24,6 @@ export function getStatusContent(status) {
return status.getIn(['translation', 'contentHtml']) || status.get('contentHtml');
}
-class TranslateButton extends PureComponent {
-
- static propTypes = {
- translation: ImmutablePropTypes.map,
- onClick: PropTypes.func,
- };
-
- render () {
- const { translation, onClick } = this.props;
-
- if (translation) {
- const language = preloadedLanguages.find(lang => lang[0] === translation.get('detected_source_language'));
- const languageName = language ? language[2] : translation.get('detected_source_language');
- const provider = translation.get('provider');
-
- return (
- <div className='translate-button'>
- <div className='translate-button__meta'>
- <FormattedMessage id='status.translated_from_with' defaultMessage='Translated from {lang} using {provider}' values={{ lang: languageName, provider }} />
- </div>
-
- <button className='link-button' onClick={onClick}>
- <FormattedMessage id='status.show_original' defaultMessage='Show original' />
- </button>
- </div>
- );
- }
-
- return (
- <button className='status__content__translate-button' onClick={onClick}>
- <FormattedMessage id='status.translate' defaultMessage='Translate' />
- </button>
- );
- }
-
-}
-
-const mapStateToProps = state => ({
- languages: state.getIn(['server', 'translationLanguages', 'items']),
-});
-
class StatusContent extends PureComponent {
static contextTypes = {
@@ 81,8 40,6 @@ class StatusContent extends PureComponent {
onClick: PropTypes.func,
collapsible: PropTypes.bool,
onCollapsedToggle: PropTypes.func,
- languages: ImmutablePropTypes.map,
- intl: PropTypes.object,
};
state = {
@@ 235,13 192,10 @@ class StatusContent extends PureComponent {
};
render () {
- const { status, intl, statusContent } = this.props;
+ const { status, statusContent } = this.props;
const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
const renderReadMore = this.props.onClick && status.get('collapsed');
- 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('search_index').trim().length > 0 && targetLanguages?.includes(contentLocale);
const content = { __html: statusContent ?? getStatusContent(status) };
const spoilerContent = { __html: status.getIn(['translation', 'spoilerHtml']) || status.get('spoilerHtml') };
@@ 258,10 212,6 @@ class StatusContent extends PureComponent {
</button>
);
- const translateButton = renderTranslate && (
- <TranslateButton onClick={this.handleTranslate} translation={status.get('translation')} />
- );
-
const poll = !!status.get('poll') && (
<PollContainer pollId={status.get('poll')} lang={language} />
);
@@ 294,7 244,6 @@ class StatusContent extends PureComponent {
<div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''} translate`} lang={language} dangerouslySetInnerHTML={content} />
{!hidden && poll}
- {translateButton}
</div>
);
} else if (this.props.onClick) {
@@ 304,7 253,6 @@ class StatusContent extends PureComponent {
<div className='status__content__text status__content__text--visible translate' lang={language} dangerouslySetInnerHTML={content} />
{poll}
- {translateButton}
</div>
{readMoreButton}
@@ 316,7 264,6 @@ class StatusContent extends PureComponent {
<div className='status__content__text status__content__text--visible translate' lang={language} dangerouslySetInnerHTML={content} />
{poll}
- {translateButton}
</div>
);
}
@@ 324,4 271,4 @@ class StatusContent extends PureComponent {
}
-export default connect(mapStateToProps)(injectIntl(StatusContent));
+export default connect()(injectIntl(StatusContent));
M app/javascript/mastodon/features/ui/index.jsx => app/javascript/mastodon/features/ui/index.jsx +1 -2
@@ 20,7 20,7 @@ import { layoutFromWindow } from 'mastodon/is_mobile';
import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose';
import { clearHeight } from '../../actions/height_cache';
import { expandNotifications } from '../../actions/notifications';
-import { fetchServer, fetchServerTranslationLanguages } from '../../actions/server';
+import { fetchServer } from '../../actions/server';
import { expandHomeTimeline } from '../../actions/timelines';
import initialState, { me, owner, singleUserMode, trendsEnabled, trendsAsLanding } from '../../initial_state';
@@ 404,7 404,6 @@ class UI extends PureComponent {
this.props.dispatch(fetchMarkers());
this.props.dispatch(expandHomeTimeline());
this.props.dispatch(expandNotifications());
- this.props.dispatch(fetchServerTranslationLanguages());
setTimeout(() => this.props.dispatch(fetchServer()), 3000);
}
M app/javascript/mastodon/reducers/server.js => app/javascript/mastodon/reducers/server.js +0 -9
@@ 4,9 4,6 @@ import {
SERVER_FETCH_REQUEST,
SERVER_FETCH_SUCCESS,
SERVER_FETCH_FAIL,
- SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST,
- SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS,
- SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL,
SERVER_DOMAIN_BLOCKS_FETCH_REQUEST,
SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS,
SERVER_DOMAIN_BLOCKS_FETCH_FAIL,
@@ 32,12 29,6 @@ export default function server(state = initialState, action) {
return state.set('server', fromJS(action.server)).setIn(['server', 'isLoading'], false);
case SERVER_FETCH_FAIL:
return state.setIn(['server', 'isLoading'], false);
- case SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST:
- return state.setIn(['translationLanguages', 'isLoading'], true);
- case SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS:
- return state.setIn(['translationLanguages', 'items'], fromJS(action.translationLanguages)).setIn(['translationLanguages', 'isLoading'], false);
- case SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL:
- return state.setIn(['translationLanguages', 'isLoading'], false);
case SERVER_DOMAIN_BLOCKS_FETCH_REQUEST:
return state.setIn(['domainBlocks', 'isLoading'], true);
case SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS: