diff --git a/app/components/sidebars/main/channels_list/channel_item/__snapshots__/channel_item.test.js.snap b/app/components/sidebars/main/channels_list/channel_item/__snapshots__/channel_item.test.js.snap
index ef6206416..9aa94da83 100644
--- a/app/components/sidebars/main/channels_list/channel_item/__snapshots__/channel_item.test.js.snap
+++ b/app/components/sidebars/main/channels_list/channel_item/__snapshots__/channel_item.test.js.snap
@@ -642,6 +642,108 @@ exports[`ChannelItem should match snapshot for deactivated user and not searchRe
`;
+exports[`ChannelItem should match snapshot for isManualUnread 1`] = `
+
+
+
+
+
+ display_name
+
+
+
+
+`;
+
exports[`ChannelItem should match snapshot for no displayName 1`] = `null`;
exports[`ChannelItem should match snapshot for showUnreadForMsgs 1`] = `null`;
diff --git a/app/components/sidebars/main/channels_list/channel_item/channel_item.js b/app/components/sidebars/main/channels_list/channel_item/channel_item.js
index 3ca4df9ba..9ccafa76d 100644
--- a/app/components/sidebars/main/channels_list/channel_item/channel_item.js
+++ b/app/components/sidebars/main/channels_list/channel_item/channel_item.js
@@ -25,6 +25,7 @@ export default class ChannelItem extends PureComponent {
displayName: PropTypes.string.isRequired,
isArchived: PropTypes.bool,
isChannelMuted: PropTypes.bool,
+ isManualUnread: PropTypes.bool,
currentUserId: PropTypes.string.isRequired,
isUnread: PropTypes.bool,
hasDraft: PropTypes.bool,
@@ -67,6 +68,7 @@ export default class ChannelItem extends PureComponent {
displayName,
isArchived,
isChannelMuted,
+ isManualUnread,
currentUserId,
isUnread,
hasDraft,
@@ -122,7 +124,7 @@ export default class ChannelItem extends PureComponent {
if (isActive) {
extraItemStyle = style.itemActive;
- extraTextStyle = style.textActive;
+ extraTextStyle = isManualUnread ? style.textUnread : style.textActive;
extraBorder = (
diff --git a/app/components/sidebars/main/channels_list/channel_item/channel_item.test.js b/app/components/sidebars/main/channels_list/channel_item/channel_item.test.js
index 63664a50c..a317c1e5b 100644
--- a/app/components/sidebars/main/channels_list/channel_item/channel_item.test.js
+++ b/app/components/sidebars/main/channels_list/channel_item/channel_item.test.js
@@ -28,6 +28,7 @@ describe('ChannelItem', () => {
displayName: 'display_name',
isChannelMuted: false,
currentUserId: 'currentUser',
+ isManualUnread: false,
isUnread: true,
hasDraft: false,
mentions: 0,
@@ -206,6 +207,18 @@ describe('ChannelItem', () => {
expect(wrapper.getElement()).toMatchSnapshot();
});
+ test('should match snapshot for isManualUnread', () => {
+ const wrapper = shallow(
+ ,
+ {context: {intl: {formatMessage: jest.fn()}}},
+ );
+
+ expect(wrapper.getElement()).toMatchSnapshot();
+ });
+
test('Should call onPress', () => {
const onSelectChannel = jest.fn();
diff --git a/app/components/sidebars/main/channels_list/channel_item/index.js b/app/components/sidebars/main/channels_list/channel_item/index.js
index 93258c711..aa8801932 100644
--- a/app/components/sidebars/main/channels_list/channel_item/index.js
+++ b/app/components/sidebars/main/channels_list/channel_item/index.js
@@ -6,8 +6,9 @@ import {connect} from 'react-redux';
import {General} from '@mm-redux/constants';
import {
getCurrentChannelId,
- makeGetChannel,
getMyChannelMember,
+ isManuallyUnread,
+ makeGetChannel,
shouldHideDefaultChannel,
} from '@mm-redux/selectors/entities/channels';
import {getTheme, getTeammateNameDisplaySetting} from '@mm-redux/selectors/entities/preferences';
@@ -74,19 +75,20 @@ function makeMapStateToProps() {
return {
channel,
currentChannelId,
- displayName,
- isArchived,
- isChannelMuted: isChannelMuted(member),
currentUserId,
+ displayName,
hasDraft: Boolean(channelDraft.draft.trim() || channelDraft?.files?.length),
+ isArchived,
+ isBot,
+ isChannelMuted: isChannelMuted(member),
+ isGuest,
+ isLandscape: isLandscape(state),
+ isManualUnread: isManuallyUnread(state, ownProps.channelId),
mentions: member ? member.mention_count : 0,
shouldHideChannel,
showUnreadForMsgs,
theme: getTheme(state),
unreadMsgs,
- isBot,
- isLandscape: isLandscape(state),
- isGuest,
};
};
}