[Glitch] Add option to show only local toots in timeline preview
Port missing changes from 6528c0c101 to glitch-soc
			
			
This commit is contained in:
		
							parent
							
								
									b2a316bc16
								
							
						
					
					
						commit
						89f4e0298c
					
				
					 2 changed files with 84 additions and 2 deletions
				
			
		|  | @ -6,6 +6,7 @@ import { hydrateStore } from 'flavours/glitch/actions/store'; | ||||||
| import { IntlProvider, addLocaleData } from 'react-intl'; | import { IntlProvider, addLocaleData } from 'react-intl'; | ||||||
| import { getLocale } from 'mastodon/locales'; | import { getLocale } from 'mastodon/locales'; | ||||||
| import PublicTimeline from 'flavours/glitch/features/standalone/public_timeline'; | import PublicTimeline from 'flavours/glitch/features/standalone/public_timeline'; | ||||||
|  | import CommunityTimeline from 'flavours/glitch/features/standalone/community_timeline'; | ||||||
| import HashtagTimeline from 'flavours/glitch/features/standalone/hashtag_timeline'; | import HashtagTimeline from 'flavours/glitch/features/standalone/hashtag_timeline'; | ||||||
| import initialState from 'flavours/glitch/util/initial_state'; | import initialState from 'flavours/glitch/util/initial_state'; | ||||||
| 
 | 
 | ||||||
|  | @ -23,17 +24,24 @@ export default class TimelineContainer extends React.PureComponent { | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     locale: PropTypes.string.isRequired, |     locale: PropTypes.string.isRequired, | ||||||
|     hashtag: PropTypes.string, |     hashtag: PropTypes.string, | ||||||
|  |     showPublicTimeline: PropTypes.bool.isRequired, | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   static defaultProps = { | ||||||
|  |     showPublicTimeline: initialState.settings.known_fediverse, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|     const { locale, hashtag } = this.props; |     const { locale, hashtag, showPublicTimeline } = this.props; | ||||||
| 
 | 
 | ||||||
|     let timeline; |     let timeline; | ||||||
| 
 | 
 | ||||||
|     if (hashtag) { |     if (hashtag) { | ||||||
|       timeline = <HashtagTimeline hashtag={hashtag} />; |       timeline = <HashtagTimeline hashtag={hashtag} />; | ||||||
|     } else { |     } else if (showPublicTimeline) { | ||||||
|       timeline = <PublicTimeline />; |       timeline = <PublicTimeline />; | ||||||
|  |     } else { | ||||||
|  |       timeline = <CommunityTimeline />; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|  |  | ||||||
|  | @ -0,0 +1,74 @@ | ||||||
|  | import React from 'react'; | ||||||
|  | import { connect } from 'react-redux'; | ||||||
|  | import PropTypes from 'prop-types'; | ||||||
|  | import StatusListContainer from 'flavours/glitch/features/ui/containers/status_list_container'; | ||||||
|  | import { | ||||||
|  |   refreshCommunityTimeline, | ||||||
|  |   expandCommunityTimeline, | ||||||
|  | } from 'flavours/glitch/actions/timelines'; | ||||||
|  | import Column from 'flavours/glitch/components/column'; | ||||||
|  | import ColumnHeader from 'flavours/glitch/components/column_header'; | ||||||
|  | import { defineMessages, injectIntl } from 'react-intl'; | ||||||
|  | import { connectCommunityStream } from 'flavours/glitch/actions/streaming'; | ||||||
|  | 
 | ||||||
|  | const messages = defineMessages({ | ||||||
|  |   title: { id: 'standalone.public_title', defaultMessage: 'A look inside...' }, | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | @connect() | ||||||
|  | @injectIntl | ||||||
|  | export default class CommunityTimeline extends React.PureComponent { | ||||||
|  | 
 | ||||||
|  |   static propTypes = { | ||||||
|  |     dispatch: PropTypes.func.isRequired, | ||||||
|  |     intl: PropTypes.object.isRequired, | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   handleHeaderClick = () => { | ||||||
|  |     this.column.scrollTop(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   setRef = c => { | ||||||
|  |     this.column = c; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   componentDidMount () { | ||||||
|  |     const { dispatch } = this.props; | ||||||
|  | 
 | ||||||
|  |     dispatch(refreshCommunityTimeline()); | ||||||
|  |     this.disconnect = dispatch(connectCommunityStream()); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   componentWillUnmount () { | ||||||
|  |     if (this.disconnect) { | ||||||
|  |       this.disconnect(); | ||||||
|  |       this.disconnect = null; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   handleLoadMore = () => { | ||||||
|  |     this.props.dispatch(expandCommunityTimeline()); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   render () { | ||||||
|  |     const { intl } = this.props; | ||||||
|  | 
 | ||||||
|  |     return ( | ||||||
|  |       <Column ref={this.setRef}> | ||||||
|  |         <ColumnHeader | ||||||
|  |           icon='users' | ||||||
|  |           title={intl.formatMessage(messages.title)} | ||||||
|  |           onClick={this.handleHeaderClick} | ||||||
|  |         /> | ||||||
|  | 
 | ||||||
|  |         <StatusListContainer | ||||||
|  |           timelineId='community' | ||||||
|  |           loadMore={this.handleLoadMore} | ||||||
|  |           scrollKey='standalone_public_timeline' | ||||||
|  |           trackScroll={false} | ||||||
|  |         /> | ||||||
|  |       </Column> | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Loading…
	
		Reference in a new issue