Fix unnecessary second connection to user stream from account timeline in web UI (#14387)
Fix regression from #14212
This commit is contained in:
		
					parent
					
						
							
								054f4af603
							
						
					
				
			
			
				commit
				
					
						00448db3c8
					
				
			
		
					 2 changed files with 30 additions and 24 deletions
				
			
		|  | @ -72,7 +72,6 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export const connectUserStream      = () => connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification); | 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 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 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 connectHashtagStream   = (id, tag, local, accept) => connectTimelineStream(`hashtag:${id}${local ? ':local' : ''}`, `hashtag${local ? ':local' : ''}&tag=${tag}`, null, accept); | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ import { fetchAccountIdentityProofs } from '../../actions/identity_proofs'; | ||||||
| import MissingIndicator from 'mastodon/components/missing_indicator'; | import MissingIndicator from 'mastodon/components/missing_indicator'; | ||||||
| import TimelineHint from 'mastodon/components/timeline_hint'; | import TimelineHint from 'mastodon/components/timeline_hint'; | ||||||
| import { me } from 'mastodon/initial_state'; | import { me } from 'mastodon/initial_state'; | ||||||
| import { connectUserTimelineStream } from '../../actions/streaming'; | import { connectTimeline, disconnectTimeline } from 'mastodon/actions/timelines'; | ||||||
| 
 | 
 | ||||||
| const emptyList = ImmutableList(); | const emptyList = ImmutableList(); | ||||||
| 
 | 
 | ||||||
|  | @ -63,41 +63,48 @@ class AccountTimeline extends ImmutablePureComponent { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentWillMount () { |   componentWillMount () { | ||||||
|     const { params: { accountId }, withReplies } = this.props; |     const { params: { accountId }, withReplies, dispatch } = this.props; | ||||||
| 
 | 
 | ||||||
|     this.props.dispatch(fetchAccount(accountId)); |     dispatch(fetchAccount(accountId)); | ||||||
|     this.props.dispatch(fetchAccountIdentityProofs(accountId)); |     dispatch(fetchAccountIdentityProofs(accountId)); | ||||||
| 
 | 
 | ||||||
|     if (!withReplies) { |     if (!withReplies) { | ||||||
|       this.props.dispatch(expandAccountFeaturedTimeline(accountId)); |       dispatch(expandAccountFeaturedTimeline(accountId)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     this.props.dispatch(expandAccountTimeline(accountId, { withReplies })); |     dispatch(expandAccountTimeline(accountId, { withReplies })); | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   componentDidMount () { |     if (accountId === me) { | ||||||
|     if (this.props.params.accountId === me) { |       dispatch(connectTimeline(`account:${me}`)); | ||||||
|       this.disconnect = this.props.dispatch(connectUserTimelineStream(me)); |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   componentWillReceiveProps (nextProps) { |   componentWillReceiveProps (nextProps) { | ||||||
|  |     const { dispatch } = this.props; | ||||||
|  | 
 | ||||||
|     if ((nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) || nextProps.withReplies !== this.props.withReplies) { |     if ((nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) || nextProps.withReplies !== this.props.withReplies) { | ||||||
|       this.props.dispatch(fetchAccount(nextProps.params.accountId)); |       dispatch(fetchAccount(nextProps.params.accountId)); | ||||||
|       this.props.dispatch(fetchAccountIdentityProofs(nextProps.params.accountId)); |       dispatch(fetchAccountIdentityProofs(nextProps.params.accountId)); | ||||||
| 
 | 
 | ||||||
|       if (!nextProps.withReplies) { |       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 () { |   componentWillUnmount () { | ||||||
|     if (this.disconnect) { |     const { dispatch, params: { accountId } } = this.props; | ||||||
|       this.disconnect(); | 
 | ||||||
|       this.disconnect = null; |     if (accountId === me) { | ||||||
|  |       dispatch(disconnectTimeline(`account:${me}`)); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue