[Glitch] Fix unread notification marker not updating when mounting column

Port dac3e362fd to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
main
ThibG 4 years ago committed by Thibaut Girka
parent f7306c7b7c
commit 842c048c6b

@ -185,7 +185,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.get('mounted') === 1)) {
state = state.set('readMarkerId', state.get('lastReadId')); state = state.set('readMarkerId', state.get('lastReadId'));
state = clearUnread(state); state = clearUnread(state);
} }
@ -201,7 +201,7 @@ const updateVisibility = (state, visibility) => {
return state; return state;
}; };
const shouldCountUnreadNotifications = (state) => { const shouldCountUnreadNotifications = (state, ignoreScroll = false) => {
const isTabVisible = state.get('isTabVisible'); const isTabVisible = state.get('isTabVisible');
const isOnTop = state.get('top'); const isOnTop = state.get('top');
const isMounted = state.get('mounted') > 0; const isMounted = state.get('mounted') > 0;
@ -209,7 +209,7 @@ const shouldCountUnreadNotifications = (state) => {
const lastItem = state.get('items').findLast(item => item !== null); const lastItem = state.get('items').findLast(item => item !== null);
const lastItemReached = !state.get('hasMore') || lastReadId === '0' || (lastItem && compareId(lastItem.get('id'), lastReadId) <= 0); const lastItemReached = !state.get('hasMore') || lastReadId === '0' || (lastItem && compareId(lastItem.get('id'), lastReadId) <= 0);
return !(isTabVisible && isOnTop && isMounted && lastItemReached); return !(isTabVisible && (ignoreScroll || isOnTop) && isMounted && lastItemReached);
}; };
const recountUnread = (state, last_read_id) => { const recountUnread = (state, last_read_id) => {

Loading…
Cancel
Save