import React from 'react'; import { connect } from 'react-redux'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { changeSetting } from 'soapbox/actions/settings'; import Column from '../ui/components/column'; import { SimpleForm, FieldsGroup, RadioGroup, RadioItem, SelectDropdown, } from 'soapbox/features/forms'; import SettingsCheckbox from 'soapbox/components/settings_checkbox'; const languages = { en: 'English', ar: 'العربية', ast: 'Asturianu', bg: 'Български', bn: 'বাংলা', ca: 'Català', co: 'Corsu', cs: 'Čeština', cy: 'Cymraeg', da: 'Dansk', de: 'Deutsch', el: 'Ελληνικά', eo: 'Esperanto', es: 'Español', eu: 'Euskara', fa: 'فارسی', fi: 'Suomi', fr: 'Français', ga: 'Gaeilge', gl: 'Galego', he: 'עברית', hi: 'हिन्दी', hr: 'Hrvatski', hu: 'Magyar', hy: 'Հայերեն', id: 'Bahasa Indonesia', io: 'Ido', it: 'Italiano', ja: '日本語', ka: 'ქართული', kk: 'Қазақша', ko: '한국어', lt: 'Lietuvių', lv: 'Latviešu', ml: 'മലയാളം', ms: 'Bahasa Melayu', nl: 'Nederlands', no: 'Norsk', oc: 'Occitan', pl: 'Polski', pt: 'Português', 'pt-BR': 'Português do Brasil', ro: 'Română', ru: 'Русский', sk: 'Slovenčina', sl: 'Slovenščina', sq: 'Shqip', sr: 'Српски', 'sr-Latn': 'Srpski (latinica)', sv: 'Svenska', ta: 'தமிழ்', te: 'తెలుగు', th: 'ไทย', tr: 'Türkçe', uk: 'Українська', zh: '中文', 'zh-CN': '简体中文', 'zh-HK': '繁體中文(香港)', 'zh-TW': '繁體中文(臺灣)', }; const messages = defineMessages({ heading: { id: 'column.preferences', defaultMessage: 'Preferences' }, display_media_default: { id: 'preferences.fields.display_media.default', defaultMessage: 'Hide media marked as sensitive' }, display_media_hide_all: { id: 'preferences.fields.display_media.hide_all', defaultMessage: 'Always hide media' }, display_media_show_all: { id: 'preferences.fields.display_media.show_all', defaultMessage: 'Always show media' }, }); const mapStateToProps = state => ({ settings: state.get('settings'), }); export default @connect(mapStateToProps) @injectIntl class Preferences extends ImmutablePureComponent { static propTypes = { dispatch: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, settings: ImmutablePropTypes.map, }; onSelectChange = path => { return e => { this.props.dispatch(changeSetting(path, e.target.value)); }; }; onDefaultPrivacyChange = e => { const { dispatch } = this.props; dispatch(changeSetting(['defaultPrivacy'], e.target.value)); } render() { const { settings, intl } = this.props; const displayMediaOptions = { default: intl.formatMessage(messages.display_media_default), hide_all: intl.formatMessage(messages.display_media_hide_all), show_all: intl.formatMessage(messages.display_media_show_all), }; return ( } items={languages} defaultValue={settings.get('locale')} onChange={this.onSelectChange(['locale'])} /> } items={displayMediaOptions} defaultValue={settings.get('displayMedia')} onChange={this.onSelectChange(['displayMedia'])} /> } onChange={this.onDefaultPrivacyChange} > } hint={} checked={settings.get('defaultPrivacy') === 'public'} value='public' /> } hint={} checked={settings.get('defaultPrivacy') === 'unlisted'} value='unlisted' /> } hint={} checked={settings.get('defaultPrivacy') === 'private'} value='private' /> } path={['unfollowModal']} /> } path={['boostModal']} /> } path={['deleteModal']} /> } path={['autoPlayGif']} /> } path={['expandSpoilers']} /> } path={['reduceMotion']} /> } path={['systemFont']} />
} path={['dyslexicFont']} />
} hint={} path={['halloween']} /> } hint={} path={['demetricator']} />
); } }