Skip to content

Commit

Permalink
Merge pull request #42628 from narefyev91/fix-open-linked-messages
Browse files Browse the repository at this point in the history
Fix linked message visibility in offline mode
  • Loading branch information
puneetlath authored May 27, 2024
2 parents dd454ba + 3969435 commit 7abb749
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
8 changes: 8 additions & 0 deletions src/libs/actions/Report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3579,6 +3579,13 @@ function updateLastVisitTime(reportID: string) {
Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_METADATA}${reportID}`, {lastVisitTime: DateUtils.getDBTime()});
}

function updateLoadingInitialReportAction(reportID: string) {
if (!ReportUtils.isValidReportIDFromPath(reportID)) {
return;
}
Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_METADATA}${reportID}`, {isLoadingInitialReportActions: false});
}

function clearNewRoomFormError() {
Onyx.set(ONYXKEYS.FORMS.NEW_ROOM_FORM, {
isLoading: false,
Expand Down Expand Up @@ -3819,6 +3826,7 @@ export {
leaveGroupChat,
removeFromGroupChat,
updateGroupChatMemberRoles,
updateLoadingInitialReportAction,
clearAddRoomMemberError,
clearAvatarErrors,
};
15 changes: 11 additions & 4 deletions src/pages/home/report/ReportActionsView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ function ReportActionsView({
const didLayout = useRef(false);
const didLoadOlderChats = useRef(false);
const didLoadNewerChats = useRef(false);
const {isOffline} = useNetwork();

// triggerListID is used when navigating to a chat with messages loaded from LHN. Typically, these include thread actions, task actions, etc. Since these messages aren't the latest,we don't maintain their position and instead trigger a recalculation of their positioning in the list.
// we don't set currentReportActionID on initial render as linkedID as it should trigger visibleReportActions after linked message was positioned
Expand All @@ -128,6 +129,14 @@ function ReportActionsView({
Report.openReport(reportID, reportActionID);
};

useEffect(() => {
// When we linked to message - we do not need to wait for initial actions - they already exists
if (!reportActionID || !isOffline) {
return;
}
Report.updateLoadingInitialReportAction(report.reportID);
}, [isOffline, report.reportID, reportActionID]);

useLayoutEffect(() => {
setCurrentReportActionID('');
}, [route]);
Expand Down Expand Up @@ -199,7 +208,7 @@ function ReportActionsView({
*/
const fetchNewerAction = useCallback(
(newestReportAction: OnyxTypes.ReportAction) => {
if (isLoadingNewerReportActions || isLoadingInitialReportActions) {
if (isLoadingNewerReportActions || isLoadingInitialReportActions || (reportActionID && isOffline)) {
return;
}

Expand All @@ -216,7 +225,7 @@ function ReportActionsView({
Report.getNewerActions(reportID, newestReportAction.reportActionID);
}
},
[isLoadingNewerReportActions, isLoadingInitialReportActions, reportID, transactionThreadReport, reportActionIDMap],
[isLoadingNewerReportActions, isLoadingInitialReportActions, reportActionID, isOffline, transactionThreadReport, reportActionIDMap, reportID],
);

const hasMoreCached = reportActions.length < combinedReportActions.length;
Expand Down Expand Up @@ -348,7 +357,6 @@ function ReportActionsView({
// If there was an error only try again once on initial mount. We should also still load
// more in case we have cached messages.
(!hasMoreCached && didLoadNewerChats.current && hasLoadingNewerReportActionsError) ||
network.isOffline ||
newestReportAction.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE)
) {
return;
Expand All @@ -367,7 +375,6 @@ function ReportActionsView({
reportActionID,
indexOfLinkedAction,
handleReportActionPagination,
network.isOffline,
reportActions.length,
newestReportAction,
isFocused,
Expand Down

0 comments on commit 7abb749

Please sign in to comment.