Only update read marker when giving focus/mounting column
This commit is contained in:
parent
145ed37978
commit
94c290d7d2
2 changed files with 9 additions and 2 deletions
|
@ -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…
Reference in a new issue