const noOp = () => {};
-export function expandNotifications({ maxId } = {}, done = noOp) {
+export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) {
return (dispatch, getState) => {
const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']);
const notifications = getState().get('notifications');
const isLoadingMore = !!maxId;
- if (notifications.get('isLoading')) {
+ if (notifications.get('isLoading') && !forceLoad) {
done();
return;
}
path: ['notifications', 'quickFilter', 'active'],
value: filterType,
});
- dispatch(expandNotifications());
+ dispatch(expandNotifications({ forceLoad: true }));
dispatch(saveSettings());
};
};
unread: 0,
lastReadId: '0',
readMarkerId: '0',
- isLoading: false,
+ isLoading: 0,
cleaningMode: false,
isTabVisible: true,
browserSupport: false,
}
}
- mutable.set('isLoading', false);
+ mutable.update('isLoading', (nbLoading) => nbLoading - 1);
});
};
return state.update('items', list => state.get('pendingItems').concat(list.take(40))).set('pendingItems', ImmutableList()).set('unread', 0);
case NOTIFICATIONS_EXPAND_REQUEST:
case NOTIFICATIONS_DELETE_MARKED_REQUEST:
- return state.set('isLoading', true);
+ return state.set('isLoading', (nbLoading) => nbLoading + 1);
case NOTIFICATIONS_DELETE_MARKED_FAIL:
case NOTIFICATIONS_EXPAND_FAIL:
- return state.set('isLoading', false);
+ return state.set('isLoading', (nbLoading) => nbLoading - 1);
case NOTIFICATIONS_FILTER_SET:
return state.set('items', ImmutableList()).set('hasMore', true);
case NOTIFICATIONS_SCROLL_TOP:
return markForDelete(state, action.id, action.yes);
case NOTIFICATIONS_DELETE_MARKED_SUCCESS:
- return deleteMarkedNotifs(state).set('isLoading', false);
+ return deleteMarkedNotifs(state).set('isLoading', (nbLoading) => nbLoading - 1);
case NOTIFICATIONS_ENTER_CLEARING_MODE:
st = state.set('cleaningMode', action.yes);