[Glitch] Fix unread toot indicator not honoring onlyMedia in public and community timelines

Port 0d6da8892a to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
master
ThibG 5 years ago committed by Thibaut Girka
parent 1064a9d827
commit 64225f4ac2
  1. 7
      app/javascript/flavours/glitch/features/community_timeline/index.js
  2. 8
      app/javascript/flavours/glitch/features/public_timeline/index.js

@ -14,15 +14,16 @@ const messages = defineMessages({
title: { id: 'column.community', defaultMessage: 'Local timeline' }, title: { id: 'column.community', defaultMessage: 'Local timeline' },
}); });
const mapStateToProps = (state, { onlyMedia, columnId }) => { const mapStateToProps = (state, { columnId }) => {
const uuid = columnId; const uuid = columnId;
const columns = state.getIn(['settings', 'columns']); const columns = state.getIn(['settings', 'columns']);
const index = columns.findIndex(c => c.get('uuid') === uuid); const index = columns.findIndex(c => c.get('uuid') === uuid);
const onlyMedia = (columnId && index >= 0) ? columns.get(index).getIn(['params', 'other', 'onlyMedia']) : state.getIn(['settings', 'community', 'other', 'onlyMedia']);
const timelineState = state.getIn(['timelines', `community${onlyMedia ? ':media' : ''}`]); const timelineState = state.getIn(['timelines', `community${onlyMedia ? ':media' : ''}`]);
return { return {
hasUnread: !!timelineState && (timelineState.get('unread') > 0 || timelineState.get('pendingItems').size > 0), hasUnread: !!timelineState && timelineState.get('unread') > 0,
onlyMedia: (columnId && index >= 0) ? columns.get(index).getIn(['params', 'other', 'onlyMedia']) : state.getIn(['settings', 'community', 'other', 'onlyMedia']), onlyMedia,
}; };
}; };

@ -14,14 +14,16 @@ const messages = defineMessages({
title: { id: 'column.public', defaultMessage: 'Federated timeline' }, title: { id: 'column.public', defaultMessage: 'Federated timeline' },
}); });
const mapStateToProps = (state, { onlyMedia, columnId }) => { const mapStateToProps = (state, { columnId }) => {
const uuid = columnId; const uuid = columnId;
const columns = state.getIn(['settings', 'columns']); const columns = state.getIn(['settings', 'columns']);
const index = columns.findIndex(c => c.get('uuid') === uuid); const index = columns.findIndex(c => c.get('uuid') === uuid);
const onlyMedia = (columnId && index >= 0) ? columns.get(index).getIn(['params', 'other', 'onlyMedia']) : state.getIn(['settings', 'public', 'other', 'onlyMedia']);
const timelineState = state.getIn(['timelines', `public${onlyMedia ? ':media' : ''}`]);
return { return {
hasUnread: state.getIn(['timelines', `public${onlyMedia ? ':media' : ''}`, 'unread']) > 0, hasUnread: !!timelineState && timelineState.get('unread') > 0,
onlyMedia: (columnId && index >= 0) ? columns.get(index).getIn(['params', 'other', 'onlyMedia']) : state.getIn(['settings', 'public', 'other', 'onlyMedia']), onlyMedia,
}; };
}; };

Loading…
Cancel
Save