From 5b099cf8bb24300d256e95a367ac68dad87a449a Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Fri, 11 Jul 2025 19:16:01 +0800 Subject: [PATCH 1/4] fix infinite loading after deleting moved transaction --- src/pages/home/ReportScreen.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pages/home/ReportScreen.tsx b/src/pages/home/ReportScreen.tsx index 611bd0a785c6..24a33a9bc600 100644 --- a/src/pages/home/ReportScreen.tsx +++ b/src/pages/home/ReportScreen.tsx @@ -276,8 +276,6 @@ function ReportScreen({route, navigation}: ReportScreenProps) { const [isBannerVisible, setIsBannerVisible] = useState(true); const [scrollPosition, setScrollPosition] = useState({}); - const wasReportAccessibleRef = useRef(false); - const [isComposerFocus, setIsComposerFocus] = useState(false); const shouldAdjustScrollView = useMemo(() => isComposerFocus && !modal?.willAlertModalBecomeVisible, [isComposerFocus, modal]); const viewportOffsetTop = useViewportOffsetTop(shouldAdjustScrollView); @@ -451,7 +449,7 @@ function ReportScreen({route, navigation}: ReportScreenProps) { } // eslint-disable-next-line react-compiler/react-compiler - if (!wasReportAccessibleRef.current && !firstRenderRef.current && !reportID && !isOptimisticDelete && !reportMetadata?.isLoadingInitialReportActions && !userLeavingStatus) { + if (!reportID && !isOptimisticDelete && !reportMetadata?.isLoadingInitialReportActions && !userLeavingStatus) { // eslint-disable-next-line react-compiler/react-compiler return true; } From 38a14ab0e4840379bbc6004da1f31ad36db6dfa6 Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Fri, 11 Jul 2025 19:19:23 +0800 Subject: [PATCH 2/4] fix not found shown briefly when navigating from preexisting report --- src/libs/actions/Report.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts index b51731deb8cd..dd347ffb4530 100644 --- a/src/libs/actions/Report.ts +++ b/src/libs/actions/Report.ts @@ -1805,7 +1805,10 @@ function handleReportChanged(report: OnyxEntry) { let callback = () => { const existingReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${preexistingReportID}`]; - Onyx.set(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`, null); + InteractionManager.runAfterInteractions(() => { + Onyx.set(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`, null); + }); + Onyx.set(`${ONYXKEYS.COLLECTION.REPORT}${preexistingReportID}`, { ...report, reportID: preexistingReportID, From 8c249fe42f061b29957aa4011f1cf0797134e701 Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Fri, 11 Jul 2025 19:23:20 +0800 Subject: [PATCH 3/4] readd unintended removed code --- src/pages/home/ReportScreen.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/home/ReportScreen.tsx b/src/pages/home/ReportScreen.tsx index 24a33a9bc600..a202d1ffc0fe 100644 --- a/src/pages/home/ReportScreen.tsx +++ b/src/pages/home/ReportScreen.tsx @@ -276,6 +276,8 @@ function ReportScreen({route, navigation}: ReportScreenProps) { const [isBannerVisible, setIsBannerVisible] = useState(true); const [scrollPosition, setScrollPosition] = useState({}); + const wasReportAccessibleRef = useRef(false); + const [isComposerFocus, setIsComposerFocus] = useState(false); const shouldAdjustScrollView = useMemo(() => isComposerFocus && !modal?.willAlertModalBecomeVisible, [isComposerFocus, modal]); const viewportOffsetTop = useViewportOffsetTop(shouldAdjustScrollView); @@ -449,7 +451,7 @@ function ReportScreen({route, navigation}: ReportScreenProps) { } // eslint-disable-next-line react-compiler/react-compiler - if (!reportID && !isOptimisticDelete && !reportMetadata?.isLoadingInitialReportActions && !userLeavingStatus) { + if (!firstRenderRef.current && !reportID && !isOptimisticDelete && !reportMetadata?.isLoadingInitialReportActions && !userLeavingStatus) { // eslint-disable-next-line react-compiler/react-compiler return true; } From d55db44c8d1f63b4b832c34dc6e062ceb3c1d5da Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Fri, 11 Jul 2025 19:25:53 +0800 Subject: [PATCH 4/4] remove unused code --- src/pages/home/ReportScreen.tsx | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/pages/home/ReportScreen.tsx b/src/pages/home/ReportScreen.tsx index a202d1ffc0fe..7548fba57473 100644 --- a/src/pages/home/ReportScreen.tsx +++ b/src/pages/home/ReportScreen.tsx @@ -276,8 +276,6 @@ function ReportScreen({route, navigation}: ReportScreenProps) { const [isBannerVisible, setIsBannerVisible] = useState(true); const [scrollPosition, setScrollPosition] = useState({}); - const wasReportAccessibleRef = useRef(false); - const [isComposerFocus, setIsComposerFocus] = useState(false); const shouldAdjustScrollView = useMemo(() => isComposerFocus && !modal?.willAlertModalBecomeVisible, [isComposerFocus, modal]); const viewportOffsetTop = useViewportOffsetTop(shouldAdjustScrollView); @@ -325,14 +323,6 @@ function ReportScreen({route, navigation}: ReportScreenProps) { hideEmojiPicker(true); }, [prevIsFocused, isFocused]); - useEffect(() => { - if (!report?.reportID) { - wasReportAccessibleRef.current = false; - return; - } - wasReportAccessibleRef.current = true; - }, [report]); - const backTo = route?.params?.backTo as string; const onBackButtonPress = useCallback(() => { if (backTo === SCREENS.SEARCH.REPORT_RHP) {