diff options
author | ふぁぼ原 <ko_kurihara@yahoo.co.jp> | 2017-06-06 23:56:10 +0900 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-06-06 16:56:10 +0200 |
commit | 7623766241862d2ede47558639c357d57b769e3b (patch) | |
tree | 3211cfa0d57173b8ced269871a32bf07c4ce36f0 /app/javascript | |
parent | e34c5a350321c6c1997bdcc15fbd85cfb521f51b (diff) |
Add regex filters on the community timeline and the public timeline. (#3564)
* Add regex filter on the community timeline and the public timeline * correcting * Adjust the height of header buttons * Remove trailing spaces * Remove trailing spaces * Solve some code duplication * reset the state of the locale files in app/javascript/mastodon/locales * adjust to upstream * adjust to upstream * change keys of locale settings
Diffstat (limited to 'app/javascript')
-rw-r--r-- | app/javascript/mastodon/components/setting_text.js (renamed from app/javascript/mastodon/features/home_timeline/components/setting_text.js) | 0 | ||||
-rw-r--r-- | app/javascript/mastodon/features/community_timeline/components/column_settings.js | 39 | ||||
-rw-r--r-- | app/javascript/mastodon/features/community_timeline/containers/column_settings_container.js | 21 | ||||
-rw-r--r-- | app/javascript/mastodon/features/community_timeline/index.js | 5 | ||||
-rw-r--r-- | app/javascript/mastodon/features/home_timeline/components/column_settings.js | 2 | ||||
-rw-r--r-- | app/javascript/mastodon/features/public_timeline/containers/column_settings_container.js | 21 | ||||
-rw-r--r-- | app/javascript/mastodon/features/public_timeline/index.js | 5 | ||||
-rw-r--r-- | app/javascript/mastodon/locales/pt-BR.json | 2 | ||||
-rw-r--r-- | app/javascript/mastodon/locales/pt.json | 2 | ||||
-rw-r--r-- | app/javascript/mastodon/reducers/settings.js | 12 | ||||
-rw-r--r-- | app/javascript/styles/components.scss | 1 |
11 files changed, 105 insertions, 5 deletions
diff --git a/app/javascript/mastodon/features/home_timeline/components/setting_text.js b/app/javascript/mastodon/components/setting_text.js index d4f177f8a..d4f177f8a 100644 --- a/app/javascript/mastodon/features/home_timeline/components/setting_text.js +++ b/app/javascript/mastodon/components/setting_text.js diff --git a/app/javascript/mastodon/features/community_timeline/components/column_settings.js b/app/javascript/mastodon/features/community_timeline/components/column_settings.js new file mode 100644 index 000000000..dbbe8ceaa --- /dev/null +++ b/app/javascript/mastodon/features/community_timeline/components/column_settings.js @@ -0,0 +1,39 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import ColumnCollapsable from '../../../components/column_collapsable'; +import SettingToggle from '../../notifications/components/setting_toggle'; +import SettingText from '../../../components/setting_text'; + +const messages = defineMessages({ + filter_regex: { id: 'home.column_settings.filter_regex', defaultMessage: 'Filter out by regular expressions' }, + settings: { id: 'home.settings', defaultMessage: 'Column settings' }, +}); + +class ColumnSettings extends React.PureComponent { + + static propTypes = { + settings: ImmutablePropTypes.map.isRequired, + onChange: PropTypes.func.isRequired, + onSave: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + }; + + render () { + const { settings, onChange, onSave, intl } = this.props; + + return ( + <div> + <span className='column-settings__section'><FormattedMessage id='home.column_settings.advanced' defaultMessage='Advanced' /></span> + + <div className='column-settings__row'> + <SettingText settings={settings} settingKey={['regex', 'body']} onChange={onChange} label={intl.formatMessage(messages.filter_regex)} /> + </div> + </div> + ); + } + +} + +export default injectIntl(ColumnSettings); diff --git a/app/javascript/mastodon/features/community_timeline/containers/column_settings_container.js b/app/javascript/mastodon/features/community_timeline/containers/column_settings_container.js new file mode 100644 index 000000000..1efc2ef33 --- /dev/null +++ b/app/javascript/mastodon/features/community_timeline/containers/column_settings_container.js @@ -0,0 +1,21 @@ +import { connect } from 'react-redux'; +import ColumnSettings from '../components/column_settings'; +import { changeSetting, saveSettings } from '../../../actions/settings'; + +const mapStateToProps = state => ({ + settings: state.getIn(['settings', 'community']), +}); + +const mapDispatchToProps = dispatch => ({ + + onChange (key, checked) { + dispatch(changeSetting(['community', ...key], checked)); + }, + + onSave () { + dispatch(saveSettings()); + }, + +}); + +export default connect(mapStateToProps, mapDispatchToProps)(ColumnSettings); diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js index 1dd8a08ab..44ea4dddd 100644 --- a/app/javascript/mastodon/features/community_timeline/index.js +++ b/app/javascript/mastodon/features/community_timeline/index.js @@ -14,6 +14,7 @@ import { import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ColumnBackButtonSlim from '../../components/column_back_button_slim'; +import ColumnSettingsContainer from './containers/column_settings_container'; import createStream from '../../stream'; const messages = defineMessages({ @@ -120,7 +121,9 @@ class CommunityTimeline extends React.PureComponent { onClick={this.handleHeaderClick} pinned={pinned} multiColumn={multiColumn} - /> + > + <ColumnSettingsContainer /> + </ColumnHeader> <StatusListContainer {...this.props} diff --git a/app/javascript/mastodon/features/home_timeline/components/column_settings.js b/app/javascript/mastodon/features/home_timeline/components/column_settings.js index 902c7a06c..104d8ff37 100644 --- a/app/javascript/mastodon/features/home_timeline/components/column_settings.js +++ b/app/javascript/mastodon/features/home_timeline/components/column_settings.js @@ -4,7 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ColumnCollapsable from '../../../components/column_collapsable'; import SettingToggle from '../../notifications/components/setting_toggle'; -import SettingText from './setting_text'; +import SettingText from '../../../components/setting_text'; const messages = defineMessages({ filter_regex: { id: 'home.column_settings.filter_regex', defaultMessage: 'Filter out by regular expressions' }, diff --git a/app/javascript/mastodon/features/public_timeline/containers/column_settings_container.js b/app/javascript/mastodon/features/public_timeline/containers/column_settings_container.js new file mode 100644 index 000000000..62d4e7e5a --- /dev/null +++ b/app/javascript/mastodon/features/public_timeline/containers/column_settings_container.js @@ -0,0 +1,21 @@ +import { connect } from 'react-redux'; +import ColumnSettings from '../../community_timeline/components/column_settings'; +import { changeSetting, saveSettings } from '../../../actions/settings'; + +const mapStateToProps = state => ({ + settings: state.getIn(['settings', 'public']), +}); + +const mapDispatchToProps = dispatch => ({ + + onChange (key, checked) { + dispatch(changeSetting(['public', ...key], checked)); + }, + + onSave () { + dispatch(saveSettings()); + }, + +}); + +export default connect(mapStateToProps, mapDispatchToProps)(ColumnSettings); diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js index 988e5a059..2e4fd32a4 100644 --- a/app/javascript/mastodon/features/public_timeline/index.js +++ b/app/javascript/mastodon/features/public_timeline/index.js @@ -14,6 +14,7 @@ import { import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ColumnBackButtonSlim from '../../components/column_back_button_slim'; +import ColumnSettingsContainer from './containers/column_settings_container'; import createStream from '../../stream'; const messages = defineMessages({ @@ -120,7 +121,9 @@ class PublicTimeline extends React.PureComponent { onClick={this.handleHeaderClick} pinned={pinned} multiColumn={multiColumn} - /> + > + <ColumnSettingsContainer /> + </ColumnHeader> <StatusListContainer {...this.props} diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index fdfccf17b..5e5834a0e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -79,7 +79,7 @@ "home.column_settings.filter_regex": "Filtrar com uma expressão regular", "home.column_settings.show_reblogs": "Mostrar as partilhas", "home.column_settings.show_replies": "Mostrar as respostas", - "home.settings": "Parâmetros da listagem Home", + "home.settings": "Parâmetros da listagem", "lightbox.close": "Fechar", "loading_indicator.label": "Carregando...", "media_gallery.toggle_visible": "Esconder/Mostrar", diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json index fdfccf17b..5e5834a0e 100644 --- a/app/javascript/mastodon/locales/pt.json +++ b/app/javascript/mastodon/locales/pt.json @@ -79,7 +79,7 @@ "home.column_settings.filter_regex": "Filtrar com uma expressão regular", "home.column_settings.show_reblogs": "Mostrar as partilhas", "home.column_settings.show_replies": "Mostrar as respostas", - "home.settings": "Parâmetros da listagem Home", + "home.settings": "Parâmetros da listagem", "lightbox.close": "Fechar", "loading_indicator.label": "Carregando...", "media_gallery.toggle_visible": "Esconder/Mostrar", diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js index ad70806b1..3dc885fab 100644 --- a/app/javascript/mastodon/reducers/settings.js +++ b/app/javascript/mastodon/reducers/settings.js @@ -46,6 +46,18 @@ const initialState = Immutable.Map({ mention: true, }), }), + + community: Immutable.Map({ + regex: Immutable.Map({ + body: '', + }), + }), + + public: Immutable.Map({ + regex: Immutable.Map({ + body: '', + }), + }), }); const moveColumn = (state, uuid, direction) => { diff --git a/app/javascript/styles/components.scss b/app/javascript/styles/components.scss index 3301e6e47..4ff19e0ef 100644 --- a/app/javascript/styles/components.scss +++ b/app/javascript/styles/components.scss @@ -2052,6 +2052,7 @@ button.icon-button.active i.fa-retweet { top: 0; height: 100%; display: flex; + height: 48px; } .column-header__button { |