[Glitch] Add local only to hashtag timeline
Port front-end changes from 2c7128c7f0 to glitch-soc
Signed-off-by: Thibaut Girka <thib@sitedethib.com>
			
			
This commit is contained in:
		
							parent
							
								
									63dc7cfa90
								
							
						
					
					
						commit
						7ceeb97f3d
					
				
					 5 changed files with 27 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -128,8 +128,7 @@ export const expandAccountTimeline         = (accountId, { maxId, withReplies }
 | 
			
		|||
export const expandAccountFeaturedTimeline = accountId => expandTimeline(`account:${accountId}:pinned`, `/api/v1/accounts/${accountId}/statuses`, { pinned: true });
 | 
			
		||||
export const expandAccountMediaTimeline    = (accountId, { maxId } = {}) => expandTimeline(`account:${accountId}:media`, `/api/v1/accounts/${accountId}/statuses`, { max_id: maxId, only_media: true, limit: 40 });
 | 
			
		||||
export const expandListTimeline            = (id, { maxId } = {}, done = noOp) => expandTimeline(`list:${id}`, `/api/v1/timelines/list/${id}`, { max_id: maxId }, done);
 | 
			
		||||
 | 
			
		||||
export const expandHashtagTimeline       = (hashtag, { maxId, tags } = {}, done = noOp) => {
 | 
			
		||||
export const expandHashtagTimeline         = (hashtag, { maxId, tags, local } = {}, done = noOp) => {
 | 
			
		||||
  return expandTimeline(`hashtag:${hashtag}`, `/api/v1/timelines/tag/${hashtag}`, {
 | 
			
		||||
    max_id: maxId,
 | 
			
		||||
    any: parseTags(tags, 'any'),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,7 @@ export default class TimelineContainer extends React.PureComponent {
 | 
			
		|||
    let timeline;
 | 
			
		||||
 | 
			
		||||
    if (hashtag) {
 | 
			
		||||
      timeline = <HashtagTimeline hashtag={hashtag} />;
 | 
			
		||||
      timeline = <HashtagTimeline hashtag={hashtag} local={local} />;
 | 
			
		||||
    } else {
 | 
			
		||||
      timeline = <PublicTimeline local={local} />;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 | 
			
		|||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
 | 
			
		||||
import Toggle from 'react-toggle';
 | 
			
		||||
import AsyncSelect from 'react-select/async';
 | 
			
		||||
import SettingToggle from '../../notifications/components/setting_toggle';
 | 
			
		||||
 | 
			
		||||
const messages = defineMessages({
 | 
			
		||||
  placeholder: { id: 'hashtag.column_settings.select.placeholder', defaultMessage: 'Enter hashtags…' },
 | 
			
		||||
| 
						 | 
				
			
			@ -87,6 +88,8 @@ class ColumnSettings extends React.PureComponent {
 | 
			
		|||
  };
 | 
			
		||||
 | 
			
		||||
  render () {
 | 
			
		||||
    const { settings, onChange } = this.props;
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <div>
 | 
			
		||||
        <div className='column-settings__row'>
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +109,10 @@ class ColumnSettings extends React.PureComponent {
 | 
			
		|||
            {this.modeSelect('none')}
 | 
			
		||||
          </div>
 | 
			
		||||
        )}
 | 
			
		||||
 | 
			
		||||
        <div className='column-settings__row'>
 | 
			
		||||
          <SettingToggle settings={settings} settingPath={['local']} onChange={onChange} label={<FormattedMessage id='community.column_settings.local_only' defaultMessage='Local only' />} />
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -97,21 +97,21 @@ class HashtagTimeline extends React.PureComponent {
 | 
			
		|||
 | 
			
		||||
  componentDidMount () {
 | 
			
		||||
    const { dispatch } = this.props;
 | 
			
		||||
    const { id, tags } = this.props.params;
 | 
			
		||||
    const { id, tags, local } = this.props.params;
 | 
			
		||||
 | 
			
		||||
    this._subscribe(dispatch, id, tags);
 | 
			
		||||
    dispatch(expandHashtagTimeline(id, { tags }));
 | 
			
		||||
    dispatch(expandHashtagTimeline(id, { tags, local }));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  componentWillReceiveProps (nextProps) {
 | 
			
		||||
    const { dispatch, params } = this.props;
 | 
			
		||||
    const { id, tags } = nextProps.params;
 | 
			
		||||
    const { id, tags, local } = nextProps.params;
 | 
			
		||||
 | 
			
		||||
    if (id !== params.id || !isEqual(tags, params.tags)) {
 | 
			
		||||
    if (id !== params.id || !isEqual(tags, params.tags) || !isEqual(local, params.local)) {
 | 
			
		||||
      this._unsubscribe();
 | 
			
		||||
      this._subscribe(dispatch, id, tags);
 | 
			
		||||
      this.props.dispatch(clearTimeline(`hashtag:${id}`));
 | 
			
		||||
      this.props.dispatch(expandHashtagTimeline(id, { tags }));
 | 
			
		||||
      dispatch(clearTimeline(`hashtag:${id}`));
 | 
			
		||||
      dispatch(expandHashtagTimeline(id, { tags, local }));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -124,8 +124,8 @@ class HashtagTimeline extends React.PureComponent {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  handleLoadMore = maxId => {
 | 
			
		||||
    const { id, tags } = this.props.params;
 | 
			
		||||
    this.props.dispatch(expandHashtagTimeline(id, { maxId, tags }));
 | 
			
		||||
    const { id, tags, local } = this.props.params;
 | 
			
		||||
    this.props.dispatch(expandHashtagTimeline(id, { maxId, tags, local }));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  render () {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,19 +24,25 @@ class HashtagTimeline extends React.PureComponent {
 | 
			
		|||
    isLoading: PropTypes.bool.isRequired,
 | 
			
		||||
    hasMore: PropTypes.bool.isRequired,
 | 
			
		||||
    hashtag: PropTypes.string.isRequired,
 | 
			
		||||
    local: PropTypes.bool.isRequired,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  static defaultProps = {
 | 
			
		||||
    local: false,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  componentDidMount () {
 | 
			
		||||
    const { dispatch, hashtag } = this.props;
 | 
			
		||||
    const { dispatch, hashtag, local } = this.props;
 | 
			
		||||
 | 
			
		||||
    dispatch(expandHashtagTimeline(hashtag));
 | 
			
		||||
    dispatch(expandHashtagTimeline(hashtag, { local }));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleLoadMore = () => {
 | 
			
		||||
    const maxId = this.props.statusIds.last();
 | 
			
		||||
    const { dispatch, hashtag, local, statusIds } = this.props;
 | 
			
		||||
    const maxId = statusIds.last();
 | 
			
		||||
 | 
			
		||||
    if (maxId) {
 | 
			
		||||
      this.props.dispatch(expandHashtagTimeline(this.props.hashtag, { maxId }));
 | 
			
		||||
      dispatch(expandHashtagTimeline(hashtag, { maxId, local }));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue