]> cat aescling's git repositories - mastodon.git/commitdiff
[Glitch] Fix unread notification marker not updating when mounting column
authorThibG <thib@sitedethib.com>
Wed, 7 Oct 2020 22:35:27 +0000 (00:35 +0200)
committerThibaut Girka <thib@sitedethib.com>
Wed, 21 Oct 2020 17:36:41 +0000 (19:36 +0200)
Port dac3e362fd5c3d1be9e5d89149049a7eb2c6bbc4 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
app/javascript/flavours/glitch/reducers/notifications.js

index e136369ae3cbbf5e6704627d596ca7272f5c51f5..6daac229bfdf8fcb848195ca8ad6b4371b178b8c 100644 (file)
@@ -185,7 +185,7 @@ const deleteMarkedNotifs = (state) => {
 
 const updateMounted = (state) => {
   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 = clearUnread(state);
   }
@@ -201,7 +201,7 @@ const updateVisibility = (state, visibility) => {
   return state;
 };
 
-const shouldCountUnreadNotifications = (state) => {
+const shouldCountUnreadNotifications = (state, ignoreScroll = false) => {
   const isTabVisible   = state.get('isTabVisible');
   const isOnTop        = state.get('top');
   const isMounted      = state.get('mounted') > 0;
@@ -209,7 +209,7 @@ const shouldCountUnreadNotifications = (state) => {
   const lastItem       = state.get('items').findLast(item => item !== null);
   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) => {