Only update read marker when giving focus/mounting column
This commit is contained in:
		
							parent
							
								
									145ed37978
								
							
						
					
					
						commit
						94c290d7d2
					
				| @ -57,7 +57,7 @@ const mapStateToProps = state => ({ | |||||||
|   hasMore: state.getIn(['notifications', 'hasMore']), |   hasMore: state.getIn(['notifications', 'hasMore']), | ||||||
|   numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size, |   numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size, | ||||||
|   notifCleaningActive: state.getIn(['notifications', 'cleaningMode']), |   notifCleaningActive: state.getIn(['notifications', 'cleaningMode']), | ||||||
|   lastReadId: state.getIn(['notifications', 'lastReadId']), |   lastReadId: state.getIn(['notifications', 'readMarkerId']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| /* glitch */ | /* glitch */ | ||||||
| @ -227,7 +227,7 @@ class Notifications extends React.PureComponent { | |||||||
|           accountId={item.get('account')} |           accountId={item.get('account')} | ||||||
|           onMoveUp={this.handleMoveUp} |           onMoveUp={this.handleMoveUp} | ||||||
|           onMoveDown={this.handleMoveDown} |           onMoveDown={this.handleMoveDown} | ||||||
|           unread={lastReadId && compareId(item.get('id'), lastReadId) > 0} |           unread={lastReadId !== '0' && compareId(item.get('id'), lastReadId) > 0} | ||||||
|         /> |         /> | ||||||
|       )); |       )); | ||||||
|     } else { |     } else { | ||||||
|  | |||||||
| @ -39,6 +39,7 @@ const initialState = ImmutableMap({ | |||||||
|   mounted: 0, |   mounted: 0, | ||||||
|   unread: 0, |   unread: 0, | ||||||
|   lastReadId: '0', |   lastReadId: '0', | ||||||
|  |   readMarkerId: '0', | ||||||
|   isLoading: false, |   isLoading: false, | ||||||
|   cleaningMode: false, |   cleaningMode: false, | ||||||
|   isTabVisible: true, |   isTabVisible: true, | ||||||
| @ -183,6 +184,7 @@ const deleteMarkedNotifs = (state) => { | |||||||
| const updateMounted = (state) => { | const updateMounted = (state) => { | ||||||
|   state = state.update('mounted', count => count + 1); |   state = state.update('mounted', count => count + 1); | ||||||
|   if (!shouldCountUnreadNotifications(state)) { |   if (!shouldCountUnreadNotifications(state)) { | ||||||
|  |     state = state.set('readMarkerId', state.get('lastReadId')); | ||||||
|     state = clearUnread(state); |     state = clearUnread(state); | ||||||
|   } |   } | ||||||
|   return state; |   return state; | ||||||
| @ -191,6 +193,7 @@ const updateMounted = (state) => { | |||||||
| const updateVisibility = (state, visibility) => { | const updateVisibility = (state, visibility) => { | ||||||
|   state = state.set('isTabVisible', visibility); |   state = state.set('isTabVisible', visibility); | ||||||
|   if (!shouldCountUnreadNotifications(state)) { |   if (!shouldCountUnreadNotifications(state)) { | ||||||
|  |     state = state.set('readMarkerId', state.get('lastReadId')); | ||||||
|     state = clearUnread(state); |     state = clearUnread(state); | ||||||
|   } |   } | ||||||
|   return state; |   return state; | ||||||
| @ -212,6 +215,10 @@ const recountUnread = (state, last_read_id) => { | |||||||
|       mutable.set('lastReadId', last_read_id); |       mutable.set('lastReadId', last_read_id); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     if (compareId(last_read_id, mutable.get('readMarkerId')) > 0) { | ||||||
|  |       mutable.set('readMarkerId', last_read_id); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     if (state.get('unread') > 0 || shouldCountUnreadNotifications(state)) { |     if (state.get('unread') > 0 || shouldCountUnreadNotifications(state)) { | ||||||
|       mutable.set('unread', mutable.get('pendingItems').count(item => item !== null) + mutable.get('items').count(item => item && compareId(item.get('id'), last_read_id) > 0)); |       mutable.set('unread', mutable.get('pendingItems').count(item => item !== null) + mutable.get('items').count(item => item && compareId(item.get('id'), last_read_id) > 0)); | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user