Prevent pinned columns from scroll to top on URL changing (#3586)
This commit is contained in:
		| @ -15,6 +15,7 @@ class StatusList extends ImmutablePureComponent { | ||||
|     onScrollToBottom: PropTypes.func, | ||||
|     onScrollToTop: PropTypes.func, | ||||
|     onScroll: PropTypes.func, | ||||
|     trackScroll: PropTypes.bool, | ||||
|     shouldUpdateScroll: PropTypes.func, | ||||
|     isLoading: PropTypes.bool, | ||||
|     isUnread: PropTypes.bool, | ||||
| @ -88,7 +89,7 @@ class StatusList extends ImmutablePureComponent { | ||||
|   } | ||||
|  | ||||
|   render () { | ||||
|     const { statusIds, onScrollToBottom, scrollKey, shouldUpdateScroll, isLoading, isUnread, hasMore, prepend, emptyMessage } = this.props; | ||||
|     const { statusIds, onScrollToBottom, scrollKey, trackScroll, shouldUpdateScroll, isLoading, isUnread, hasMore, prepend, emptyMessage } = this.props; | ||||
|  | ||||
|     let loadMore       = null; | ||||
|     let scrollableArea = null; | ||||
| @ -126,11 +127,15 @@ class StatusList extends ImmutablePureComponent { | ||||
|       ); | ||||
|     } | ||||
|  | ||||
|     return ( | ||||
|       <ScrollContainer scrollKey={scrollKey} shouldUpdateScroll={shouldUpdateScroll}> | ||||
|         {scrollableArea} | ||||
|       </ScrollContainer> | ||||
|     ); | ||||
|     if (trackScroll) { | ||||
|       return ( | ||||
|         <ScrollContainer scrollKey={scrollKey} shouldUpdateScroll={shouldUpdateScroll}> | ||||
|           {scrollableArea} | ||||
|         </ScrollContainer> | ||||
|       ); | ||||
|     } else { | ||||
|       return scrollableArea; | ||||
|     } | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -124,6 +124,7 @@ class CommunityTimeline extends React.PureComponent { | ||||
|  | ||||
|         <StatusListContainer | ||||
|           {...this.props} | ||||
|           trackScroll={!pinned} | ||||
|           scrollKey={`community_timeline-${columnId}`} | ||||
|           type='community' | ||||
|           emptyMessage={<FormattedMessage id='empty_column.community' defaultMessage='The local timeline is empty. Write something publicly to get the ball rolling!' />} | ||||
|  | ||||
| @ -120,6 +120,7 @@ class HashtagTimeline extends React.PureComponent { | ||||
|         /> | ||||
|  | ||||
|         <StatusListContainer | ||||
|           trackScroll={!pinned} | ||||
|           scrollKey={`hashtag_timeline-${columnId}`} | ||||
|           type='tag' | ||||
|           id={id} | ||||
|  | ||||
| @ -81,6 +81,7 @@ class HomeTimeline extends React.PureComponent { | ||||
|  | ||||
|         <StatusListContainer | ||||
|           {...this.props} | ||||
|           trackScroll={!pinned} | ||||
|           scrollKey={`home_timeline-${columnId}`} | ||||
|           type='home' | ||||
|           emptyMessage={emptyMessage} | ||||
|  | ||||
| @ -119,6 +119,7 @@ class Notifications extends React.PureComponent { | ||||
|     let loadMore       = ''; | ||||
|     let scrollableArea = ''; | ||||
|     let unread         = ''; | ||||
|     let scrollContainer = ''; | ||||
|  | ||||
|     if (!isLoading && notifications.size > 0) { | ||||
|       loadMore = <LoadMore onClick={this.handleLoadMore} />; | ||||
| @ -149,6 +150,16 @@ class Notifications extends React.PureComponent { | ||||
|       ); | ||||
|     } | ||||
|  | ||||
|     if (pinned) { | ||||
|       scrollContainer = scrollableArea; | ||||
|     } else { | ||||
|       scrollContainer = ( | ||||
|         <ScrollContainer scrollKey={`notifications-${columnId}`} shouldUpdateScroll={shouldUpdateScroll}> | ||||
|           {scrollableArea} | ||||
|         </ScrollContainer> | ||||
|       ); | ||||
|     } | ||||
|  | ||||
|     this.scrollableArea = scrollableArea; | ||||
|  | ||||
|     return ( | ||||
| @ -166,9 +177,7 @@ class Notifications extends React.PureComponent { | ||||
|           <ColumnSettingsContainer /> | ||||
|         </ColumnHeader> | ||||
|  | ||||
|         <ScrollContainer scrollKey={`notifications-${columnId}`} shouldUpdateScroll={shouldUpdateScroll}> | ||||
|           {scrollableArea} | ||||
|         </ScrollContainer> | ||||
|         {scrollContainer} | ||||
|       </Column> | ||||
|     ); | ||||
|   } | ||||
|  | ||||
| @ -125,6 +125,7 @@ class PublicTimeline extends React.PureComponent { | ||||
|         <StatusListContainer | ||||
|           {...this.props} | ||||
|           type='public' | ||||
|           trackScroll={!pinned} | ||||
|           scrollKey={`public_timeline-${columnId}`} | ||||
|           emptyMessage={<FormattedMessage id='empty_column.public' defaultMessage='There is nothing here! Write something publicly, or manually follow users from other instances to fill it up' />} | ||||
|         /> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user