|
|
|
|
@ -16,15 +16,21 @@ import { expandHashtagTimeline, clearTimeline } from 'mastodon/actions/timelines
|
|
|
|
|
import Column from 'mastodon/components/column';
|
|
|
|
|
import ColumnHeader from 'mastodon/components/column_header';
|
|
|
|
|
import { identityContextPropShape, withIdentity } from 'mastodon/identity_context';
|
|
|
|
|
import { remoteTopicFeedAccess, me } from 'mastodon/initial_state';
|
|
|
|
|
|
|
|
|
|
import StatusListContainer from '../ui/containers/status_list_container';
|
|
|
|
|
|
|
|
|
|
import { HashtagHeader } from './components/hashtag_header';
|
|
|
|
|
import ColumnSettingsContainer from './containers/column_settings_container';
|
|
|
|
|
|
|
|
|
|
const mapStateToProps = (state, props) => ({
|
|
|
|
|
hasUnread: state.getIn(['timelines', `hashtag:${props.params.id}${props.params.local ? ':local' : ''}`, 'unread']) > 0,
|
|
|
|
|
});
|
|
|
|
|
const mapStateToProps = (state, props) => {
|
|
|
|
|
const local = props.params.local || (!me && remoteTopicFeedAccess !== 'public');
|
|
|
|
|
|
|
|
|
|
return ({
|
|
|
|
|
local,
|
|
|
|
|
hasUnread: state.getIn(['timelines', `hashtag:${props.params.id}${local ? ':local' : ''}`, 'unread']) > 0,
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class HashtagTimeline extends PureComponent {
|
|
|
|
|
disconnects = [];
|
|
|
|
|
@ -113,16 +119,16 @@ class HashtagTimeline extends PureComponent {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_unload () {
|
|
|
|
|
const { dispatch } = this.props;
|
|
|
|
|
const { id, local } = this.props.params;
|
|
|
|
|
const { dispatch, local } = this.props;
|
|
|
|
|
const { id } = this.props.params;
|
|
|
|
|
|
|
|
|
|
this._unsubscribe();
|
|
|
|
|
dispatch(clearTimeline(`hashtag:${id}${local ? ':local' : ''}`));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_load() {
|
|
|
|
|
const { dispatch } = this.props;
|
|
|
|
|
const { id, tags, local } = this.props.params;
|
|
|
|
|
const { dispatch, local } = this.props;
|
|
|
|
|
const { id, tags } = this.props.params;
|
|
|
|
|
|
|
|
|
|
this._subscribe(dispatch, id, tags, local);
|
|
|
|
|
dispatch(expandHashtagTimeline(id, { tags, local }));
|
|
|
|
|
@ -133,8 +139,8 @@ class HashtagTimeline extends PureComponent {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
componentDidUpdate (prevProps) {
|
|
|
|
|
const { params } = this.props;
|
|
|
|
|
const { id, tags, local } = prevProps.params;
|
|
|
|
|
const { params, local } = this.props;
|
|
|
|
|
const { id, tags } = prevProps.params;
|
|
|
|
|
|
|
|
|
|
if (id !== params.id || !isEqual(tags, params.tags) || !isEqual(local, params.local)) {
|
|
|
|
|
this._unload();
|
|
|
|
|
@ -151,15 +157,15 @@ class HashtagTimeline extends PureComponent {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
handleLoadMore = maxId => {
|
|
|
|
|
const { dispatch, params } = this.props;
|
|
|
|
|
const { id, tags, local } = params;
|
|
|
|
|
const { dispatch, params, local } = this.props;
|
|
|
|
|
const { id, tags } = params;
|
|
|
|
|
|
|
|
|
|
dispatch(expandHashtagTimeline(id, { maxId, tags, local }));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
render () {
|
|
|
|
|
const { hasUnread, columnId, multiColumn } = this.props;
|
|
|
|
|
const { id, local } = this.props.params;
|
|
|
|
|
const { hasUnread, columnId, multiColumn, local } = this.props;
|
|
|
|
|
const { id } = this.props.params;
|
|
|
|
|
const pinned = !!columnId;
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
|