dispatch(fetchAnnouncements(done))))));
};
-export const connectUserStream = () => connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification);
-export const connectUserTimelineStream = (accountId) => connectTimelineStream(`account:${accountId}`, 'user');
-export const connectCommunityStream = ({ onlyMedia } = {}) => connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`);
-export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) => connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`);
-export const connectHashtagStream = (id, tag, local, accept) => connectTimelineStream(`hashtag:${id}${local ? ':local' : ''}`, `hashtag${local ? ':local' : ''}&tag=${tag}`, null, accept);
-export const connectDirectStream = () => connectTimelineStream('direct', 'direct');
-export const connectListStream = id => connectTimelineStream(`list:${id}`, `list&list=${id}`);
+export const connectUserStream = () => connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification);
+export const connectCommunityStream = ({ onlyMedia } = {}) => connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`);
+export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) => connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`);
+export const connectHashtagStream = (id, tag, local, accept) => connectTimelineStream(`hashtag:${id}${local ? ':local' : ''}`, `hashtag${local ? ':local' : ''}&tag=${tag}`, null, accept);
+export const connectDirectStream = () => connectTimelineStream('direct', 'direct');
+export const connectListStream = id => connectTimelineStream(`list:${id}`, `list&list=${id}`);
import MissingIndicator from 'mastodon/components/missing_indicator';
import TimelineHint from 'mastodon/components/timeline_hint';
import { me } from 'mastodon/initial_state';
-import { connectUserTimelineStream } from '../../actions/streaming';
+import { connectTimeline, disconnectTimeline } from 'mastodon/actions/timelines';
const emptyList = ImmutableList();
};
componentWillMount () {
- const { params: { accountId }, withReplies } = this.props;
+ const { params: { accountId }, withReplies, dispatch } = this.props;
- this.props.dispatch(fetchAccount(accountId));
- this.props.dispatch(fetchAccountIdentityProofs(accountId));
+ dispatch(fetchAccount(accountId));
+ dispatch(fetchAccountIdentityProofs(accountId));
if (!withReplies) {
- this.props.dispatch(expandAccountFeaturedTimeline(accountId));
+ dispatch(expandAccountFeaturedTimeline(accountId));
}
- this.props.dispatch(expandAccountTimeline(accountId, { withReplies }));
- }
+ dispatch(expandAccountTimeline(accountId, { withReplies }));
- componentDidMount () {
- if (this.props.params.accountId === me) {
- this.disconnect = this.props.dispatch(connectUserTimelineStream(me));
+ if (accountId === me) {
+ dispatch(connectTimeline(`account:${me}`));
}
}
componentWillReceiveProps (nextProps) {
+ const { dispatch } = this.props;
+
if ((nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) || nextProps.withReplies !== this.props.withReplies) {
- this.props.dispatch(fetchAccount(nextProps.params.accountId));
- this.props.dispatch(fetchAccountIdentityProofs(nextProps.params.accountId));
+ dispatch(fetchAccount(nextProps.params.accountId));
+ dispatch(fetchAccountIdentityProofs(nextProps.params.accountId));
if (!nextProps.withReplies) {
- this.props.dispatch(expandAccountFeaturedTimeline(nextProps.params.accountId));
+ dispatch(expandAccountFeaturedTimeline(nextProps.params.accountId));
}
- this.props.dispatch(expandAccountTimeline(nextProps.params.accountId, { withReplies: nextProps.params.withReplies }));
+ dispatch(expandAccountTimeline(nextProps.params.accountId, { withReplies: nextProps.params.withReplies }));
+ }
+
+ if (nextProps.params.accountId === me && this.props.params.accountId !== me) {
+ dispatch(connectTimeline(`account:${me}`));
+ } else if (this.props.params.accountId === me && nextProps.params.accountId !== me) {
+ dispatch(disconnectTimeline(`account:${me}`));
}
}
componentWillUnmount () {
- if (this.disconnect) {
- this.disconnect();
- this.disconnect = null;
+ const { dispatch, params: { accountId } } = this.props;
+
+ if (accountId === me) {
+ dispatch(disconnectTimeline(`account:${me}`));
}
}