diff --git a/components/toast_wrapper/toast_wrapper.jsx b/components/toast_wrapper/toast_wrapper.jsx index fdaefcc4a7d5..fa0fec78e944 100644 --- a/components/toast_wrapper/toast_wrapper.jsx +++ b/components/toast_wrapper/toast_wrapper.jsx @@ -98,15 +98,17 @@ class ToastWrapper extends React.PureComponent { showMessageHistoryToast = props.initScrollOffsetFromBottom > THRESHOLD_FROM_BOTTOM || !props.atLatestPost; } - // show unread toast when a channel is marked as unread - if (props.channelMarkedAsUnread && !prevState.channelMarkedAsUnread && !prevState.showUnreadToast) { - showUnreadToast = props.initScrollOffsetFromBottom > THRESHOLD_FROM_BOTTOM; - } - - // show unread toast when a channel is remarked as unread using the change in lastViewedAt - // lastViewedAt changes only if a channel is remarked as unread in channelMarkedAsUnread state - if (props.channelMarkedAsUnread && props.lastViewedAt !== prevState.lastViewedAt) { - showUnreadToast = props.initScrollOffsetFromBottom > THRESHOLD_FROM_BOTTOM; + if (!props.atBottom) { + // show unread toast when a channel is marked as unread + if (props.channelMarkedAsUnread && !prevState.channelMarkedAsUnread && !prevState.showUnreadToast) { + showUnreadToast = true; + } + + // show unread toast when a channel is remarked as unread using the change in lastViewedAt + // lastViewedAt changes only if a channel is remarked as unread in channelMarkedAsUnread state + if (props.channelMarkedAsUnread && props.lastViewedAt !== prevState.lastViewedAt) { + showUnreadToast = true; + } } } diff --git a/components/toast_wrapper/toast_wrapper.test.jsx b/components/toast_wrapper/toast_wrapper.test.jsx index ceea3d3bd04d..8ad6cc4f7ae4 100644 --- a/components/toast_wrapper/toast_wrapper.test.jsx +++ b/components/toast_wrapper/toast_wrapper.test.jsx @@ -145,7 +145,7 @@ describe('components/ToastWrapper', () => { const wrapper = shallowWithIntl(); expect(wrapper.state('showUnreadToast')).toBe(false); wrapper.setProps({channelMarkedAsUnread: true, atBottom: false}); - expect(wrapper.state('showUnreadToast')).toBe(false); + expect(wrapper.state('showUnreadToast')).toBe(true); }); test('Should have unread toast channel is marked as unread again', () => { @@ -170,12 +170,12 @@ describe('components/ToastWrapper', () => { ], }); - expect(wrapper.state('showUnreadToast')).toBe(false); + expect(wrapper.state('showUnreadToast')).toBe(true); wrapper.setProps({atBottom: true}); expect(wrapper.state('showUnreadToast')).toBe(false); wrapper.setProps({atBottom: false}); wrapper.setProps({lastViewedAt: 12342}); - expect(wrapper.state('showUnreadToast')).toBe(false); + expect(wrapper.state('showUnreadToast')).toBe(true); }); test('Should have archive toast if channel is not atLatestPost and focusedPostId exists', () => {