You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Due for payment 2025-11-19] [$175] - Android - Second broken image preview is blank #71971
Send the broken image link:  to any chat.
Preview the broken image.
Send the broken image link again.
Attempt to view the preview..
Expected Result:
When the broken image is sent for the second time and its preview is opened, the preview should display a message such as "Attachment not found",
Actual Result:
After sending the broken image a second time and attempting to preview it, the preview page opens but remains completely blank with no visible content.
What changes do you think we should make in order to solve the problem?
Modify the foundPage logic to also verify that the attachment is active by adding item.isActive to the condition. This ensures that only the currently active attachment is matched, preventing incorrect indexing when duplicate sources exist.
Let's say we have 2 images only, and we open the 2nd image. The activePage will be 1, but the page is 0. The page is found by finding the first attachment with the same source. But since the 1st broken image has the same source, 0 (index) is returned.
Yeah ok, I think we should fix this. But I don't think this is a very high priority because it doesn't really impact the customers overall experience. I also think it's a somewhat easy fix (although please correct me if I'm wrong about that) so I'm going to reduce the bounty.
@VictoriaExpensify according to me, we usually reduce the bounty for very straightforward and minimalistic change. But I think that is not the case here and I believe the default price looks fair here. Still looking forward to knowing @neil-marcellini's thoughts.
Hey @Pujan92 - typically, that would be brought up when the bounty is adjusted, which was back on 14 October #71971 (comment) - it was reduced before the issue was assigned and before we started accepting proposals.
At the time of adjusting the bounty, I stated:
Yeah ok, I think we should fix this. But I don't think this is a very high priority because it doesn't really impact the customer's overall experience. I also think it's a somewhat easy fix (although please correct me if I'm wrong about that) so I'm going to reduce the bounty.
All good! I'm not an engineer and I might not always fully understand the effort required, so do feel free to speak up if you ever think me (or anyone else) has this wrong.
In this instance, let's meet in the middle and I'll bump up to $175.
changed the title [-][Due for payment 2025-11-19] [$125] - Android - Second broken image preview is blank[/-][+][Due for payment 2025-11-19] [$175] - Android - Second broken image preview is blank[/+]on Nov 26, 2025
Activity
melvin-bot commentedon Oct 7, 2025
Triggered auto assignment to @VictoriaExpensify (
Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details. Please add this bug to a GH project, as outlined in the SO.andriivitiv commentedon Oct 7, 2025
Proposal
Please re-state the problem that we are trying to solve in this issue.
Android - Second broken image preview is blank
What is the root cause of that problem?
When duplicate sources exist,
foundPageis incorrectly set to an index of the first attachmentApp/src/components/Lightbox/index.tsx
Line 88 in 33ce24b
As a result,
indexOutOfRangebecomes true andisLightboxVisiblebecomes falseApp/src/components/Lightbox/index.tsx
Lines 135 to 143 in 33ce24b
Because
isLightboxVisibleis false, the image is not renderedApp/src/components/Lightbox/index.tsx
Line 217 in 33ce24b
What changes do you think we should make in order to solve the problem?
Modify the
foundPagelogic to also verify that the attachment is active by addingitem.isActiveto the condition. This ensures that only the currently active attachment is matched, preventing incorrect indexing when duplicate sources exist.bernhardoj commentedon Oct 10, 2025
Proposal
Please re-state the problem that we are trying to solve in this issue.
The 2nd broken image is blank in preview.
What is the root cause of that problem?
In this case,
isLightboxVisibleis false.App/src/components/Lightbox/index.tsx
Lines 217 to 219 in c350599
It's because the
pageis smaller than theactivePage.App/src/components/Lightbox/index.tsx
Lines 141 to 142 in c350599
Let's say we have 2 images only, and we open the 2nd image. The
activePagewill be 1, but thepageis 0. Thepageis found by finding the first attachment with the same source. But since the 1st broken image has the same source, 0 (index) is returned.App/src/components/Lightbox/index.tsx
Lines 88 to 93 in c350599
What changes do you think we should make in order to solve the problem?
We should compare the attachment with its
attachmentIDinstead. TheattachmentIDis attached from here.App/src/libs/ReportActionsUtils.ts
Lines 178 to 184 in c350599
First, we need to include the
attachmentIDwhen mapping the pager items here.App/src/components/Attachments/AttachmentCarousel/Pager/index.tsx
Lines 78 to 82 in c350599
Then, pass down the
attachmentIDprops from CarouselItem > AttachmentView > AttachmentViewImage > ImageView (native) > LightboxVictoriaExpensify commentedon Oct 14, 2025
Yeah ok, I think we should fix this. But I don't think this is a very high priority because it doesn't really impact the customers overall experience. I also think it's a somewhat easy fix (although please correct me if I'm wrong about that) so I'm going to reduce the bounty.
[-]Android - Second broken image preview is blank[/-][+][$125] - Android - Second broken image preview is blank[/+]melvin-bot commentedon Oct 14, 2025
melvin-bot commentedon Oct 14, 2025
Job added to Upwork: https://www.upwork.com/jobs/~021977972797478496567
40 remaining items
VictoriaExpensify commentedon Nov 23, 2025
Hey @Pujan92 did something change with the scope of it, or did it end up being more complex than first anticipated?
@neil-marcellini - what are your thoughts?
Pujan92 commentedon Nov 25, 2025
@VictoriaExpensify according to me, we usually reduce the bounty for very straightforward and minimalistic change. But I think that is not the case here and I believe the default price looks fair here. Still looking forward to knowing @neil-marcellini's thoughts.
VictoriaExpensify commentedon Nov 26, 2025
Hey @Pujan92 - typically, that would be brought up when the bounty is adjusted, which was back on 14 October #71971 (comment) - it was reduced before the issue was assigned and before we started accepting proposals.
At the time of adjusting the bounty, I stated:
Pujan92 commentedon Nov 26, 2025
Oh, ok. No issues then. It might be my side fault. 👍
VictoriaExpensify commentedon Nov 26, 2025
All good! I'm not an engineer and I might not always fully understand the effort required, so do feel free to speak up if you ever think me (or anyone else) has this wrong.
In this instance, let's meet in the middle and I'll bump up to $175.
[-][Due for payment 2025-11-19] [$125] - Android - Second broken image preview is blank[/-][+][Due for payment 2025-11-19] [$175] - Android - Second broken image preview is blank[/+]melvin-bot commentedon Nov 26, 2025
Upwork job price has been updated to $175
VictoriaExpensify commentedon Nov 26, 2025
Created GH to add reg. test to browserstack - https://github.com/Expensify/Expensify/issues/572371
VictoriaExpensify commentedon Nov 26, 2025
Payment summary:
C: @bernhardoj owed $175 via ND
C+: @Pujan92 owed $175 via ND
bernhardoj commentedon Nov 27, 2025
Requested in ND.
trjExpensify commentedon Nov 27, 2025
approved $175 for @Pujan92.
garrettmknight commentedon Dec 1, 2025
$175 approved for @bernhardoj