Skip to content

Commit

Permalink
Merge pull request #49367 from klajdipaja/bugfix/47817_Unread_marker_…
Browse files Browse the repository at this point in the history
…not_displayed_when_opening_thread_with_unread_comments

[GH-47817]- remove messageManuallyMarkedUnread and manual handling of…
  • Loading branch information
neil-marcellini authored Sep 24, 2024
2 parents 8e10c5f + 3fce21f commit 4953d89
Showing 1 changed file with 5 additions and 17 deletions.
22 changes: 5 additions & 17 deletions src/pages/home/report/ReportActionsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -168,11 +168,9 @@ function ReportActionsList({
const userActiveSince = useRef<string>(DateUtils.getDBTime());
const lastMessageTime = useRef<string | null>(null);
const [isVisible, setIsVisible] = useState(Visibility.isVisible());
const [messageManuallyMarkedUnread, setMessageManuallyMarkedUnread] = useState(0);
const isFocused = useIsFocused();

const [reportNameValuePairs] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${report?.reportID ?? -1}`);
const [accountID] = useOnyx(ONYXKEYS.SESSION, {selector: (session) => session?.accountID ?? 0});

useEffect(() => {
const unsubscriber = Visibility.onVisibilityChange(() => {
Expand Down Expand Up @@ -212,7 +210,6 @@ function ReportActionsList({
const [unreadMarkerTime, setUnreadMarkerTime] = useState(report.lastReadTime ?? '');
useEffect(() => {
setUnreadMarkerTime(report.lastReadTime ?? '');
setMessageManuallyMarkedUnread(0);

// eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps
}, [report.reportID]);
Expand All @@ -225,16 +222,9 @@ function ReportActionsList({
const nextMessage = sortedVisibleReportActions[index + 1];
const isCurrentMessageUnread = isMessageUnread(reportAction, unreadMarkerTime);
const isNextMessageRead = !nextMessage || !isMessageUnread(nextMessage, unreadMarkerTime);
let shouldDisplay = isCurrentMessageUnread && isNextMessageRead && !ReportActionsUtils.shouldHideNewMarker(reportAction);

if (shouldDisplay && !messageManuallyMarkedUnread) {
// Prevent displaying a new marker line when report action is of type "REPORT_PREVIEW" and last actor is the current user
const isFromCurrentUser = accountID === (ReportActionsUtils.isReportPreviewAction(reportAction) ? !reportAction.childLastActorAccountID : reportAction.actorAccountID);
const isWithinVisibleThreshold = scrollingVerticalOffset.current < MSG_VISIBLE_THRESHOLD ? reportAction.created < (userActiveSince.current ?? '') : true;
shouldDisplay = !isFromCurrentUser && isWithinVisibleThreshold;
}

return shouldDisplay;
const shouldDisplay = isCurrentMessageUnread && isNextMessageRead && !ReportActionsUtils.shouldHideNewMarker(reportAction);
const isWithinVisibleThreshold = scrollingVerticalOffset.current < MSG_VISIBLE_THRESHOLD ? reportAction.created < (userActiveSince.current ?? '') : true;
return shouldDisplay && isWithinVisibleThreshold;
};

// Scan through each visible report action until we find the appropriate action to show the unread marker
Expand All @@ -246,19 +236,18 @@ function ReportActionsList({
}

return null;
}, [accountID, sortedVisibleReportActions, unreadMarkerTime, messageManuallyMarkedUnread]);
}, [sortedVisibleReportActions, unreadMarkerTime]);

/**
* Subscribe to read/unread events and update our unreadMarkerTime
*/
useEffect(() => {
const unreadActionSubscription = DeviceEventEmitter.addListener(`unreadAction_${report.reportID}`, (newLastReadTime: string) => {
setUnreadMarkerTime(newLastReadTime);
setMessageManuallyMarkedUnread(new Date().getTime());
userActiveSince.current = DateUtils.getDBTime();
});
const readNewestActionSubscription = DeviceEventEmitter.addListener(`readNewestAction_${report.reportID}`, (newLastReadTime: string) => {
setUnreadMarkerTime(newLastReadTime);
setMessageManuallyMarkedUnread(0);
});

return () => {
Expand All @@ -284,7 +273,6 @@ function ReportActionsList({
}

setUnreadMarkerTime(mostRecentReportActionCreated);
setMessageManuallyMarkedUnread(0);

// eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps
}, [sortedVisibleReportActions]);
Expand Down

0 comments on commit 4953d89

Please sign in to comment.