Port 4f42238c29
to glitch-soc
master
parent
9fc7ad7b9c
commit
82b01a6c9f
@ -1,59 +0,0 @@ |
|||||||
import PropTypes from 'prop-types'; |
|
||||||
import React, { Component, Fragment } from 'react'; |
|
||||||
import { FormattedMessage } from 'react-intl'; |
|
||||||
import { NavLink } from 'react-router-dom'; |
|
||||||
|
|
||||||
export default class SectionHeadline extends Component { |
|
||||||
|
|
||||||
static propTypes = { |
|
||||||
timelineId: PropTypes.string.isRequired, |
|
||||||
to: PropTypes.string.isRequired, |
|
||||||
pinned: PropTypes.bool.isRequired, |
|
||||||
onlyMedia: PropTypes.bool.isRequired, |
|
||||||
onClick: PropTypes.func, |
|
||||||
}; |
|
||||||
|
|
||||||
shouldComponentUpdate (nextProps) { |
|
||||||
return ( |
|
||||||
this.props.onlyMedia !== nextProps.onlyMedia || |
|
||||||
this.props.pinned !== nextProps.pinned || |
|
||||||
this.props.to !== nextProps.to || |
|
||||||
this.props.timelineId !== nextProps.timelineId |
|
||||||
); |
|
||||||
} |
|
||||||
|
|
||||||
handleClick = e => { |
|
||||||
const { onClick } = this.props; |
|
||||||
|
|
||||||
if (typeof onClick === 'function') { |
|
||||||
e.preventDefault(); |
|
||||||
|
|
||||||
onClick.call(this, e); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
render () { |
|
||||||
const { timelineId, to, pinned, onlyMedia } = this.props; |
|
||||||
|
|
||||||
return ( |
|
||||||
<div className={`${timelineId}-timeline__section-headline`}> |
|
||||||
{pinned ? ( |
|
||||||
<Fragment> |
|
||||||
<a href={to} className={!onlyMedia ? 'active' : undefined} onClick={this.handleClick}> |
|
||||||
<FormattedMessage id='timeline.posts' defaultMessage='Toots' /> |
|
||||||
</a> |
|
||||||
<a href={`${to}/media`} className={onlyMedia ? 'active' : undefined} onClick={this.handleClick}> |
|
||||||
<FormattedMessage id='timeline.media' defaultMessage='Media' /> |
|
||||||
</a> |
|
||||||
</Fragment> |
|
||||||
) : ( |
|
||||||
<Fragment> |
|
||||||
<NavLink exact to={to}><FormattedMessage id='timeline.posts' defaultMessage='Toots' /></NavLink> |
|
||||||
<NavLink exact to={`${to}/media`}><FormattedMessage id='timeline.media' defaultMessage='Media' /></NavLink> |
|
||||||
</Fragment> |
|
||||||
)} |
|
||||||
</div> |
|
||||||
); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -0,0 +1,35 @@ |
|||||||
|
import React from 'react'; |
||||||
|
import PropTypes from 'prop-types'; |
||||||
|
import ImmutablePropTypes from 'react-immutable-proptypes'; |
||||||
|
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; |
||||||
|
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' }, |
||||||
|
}); |
||||||
|
|
||||||
|
@injectIntl |
||||||
|
export default class ColumnSettings extends React.PureComponent { |
||||||
|
|
||||||
|
static propTypes = { |
||||||
|
settings: ImmutablePropTypes.map.isRequired, |
||||||
|
onChange: PropTypes.func.isRequired, |
||||||
|
intl: PropTypes.object.isRequired, |
||||||
|
}; |
||||||
|
|
||||||
|
render () { |
||||||
|
const { settings, onChange, 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> |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -1,17 +1,28 @@ |
|||||||
import { connect } from 'react-redux'; |
import { connect } from 'react-redux'; |
||||||
import ColumnSettings from 'flavours/glitch/features/community_timeline/components/column_settings'; |
import ColumnSettings from 'flavours/glitch/features/community_timeline/components/column_settings'; |
||||||
import { changeSetting } from 'flavours/glitch/actions/settings'; |
import { changeSetting } from 'flavours/glitch/actions/settings'; |
||||||
|
import { changeColumnParams } from 'flavours/glitch/actions/columns'; |
||||||
|
|
||||||
|
const mapStateToProps = (state, { columnId }) => { |
||||||
|
const uuid = columnId; |
||||||
|
const columns = state.getIn(['settings', 'columns']); |
||||||
|
const index = columns.findIndex(c => c.get('uuid') === uuid); |
||||||
|
|
||||||
const mapStateToProps = state => ({ |
return { |
||||||
settings: state.getIn(['settings', 'public']), |
settings: (uuid && index >= 0) ? columns.get(index).get('params') : state.getIn(['settings', 'public']), |
||||||
}); |
}; |
||||||
|
}; |
||||||
|
|
||||||
const mapDispatchToProps = dispatch => ({ |
const mapDispatchToProps = (dispatch, { columnId }) => { |
||||||
|
return { |
||||||
onChange (path, checked) { |
onChange (key, checked) { |
||||||
dispatch(changeSetting(['public', ...path], checked)); |
if (columnId) { |
||||||
}, |
dispatch(changeColumnParams(columnId, key, checked)); |
||||||
|
} else { |
||||||
}); |
dispatch(changeSetting(['public', ...key], checked)); |
||||||
|
} |
||||||
|
}, |
||||||
|
}; |
||||||
|
}; |
||||||
|
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(ColumnSettings); |
export default connect(mapStateToProps, mapDispatchToProps)(ColumnSettings); |
||||||
|
Loading…
Reference in new issue