App: [HOLD component refactoring] [$500] [LOW] Green circular loading does not appear when searching for a contact in request money flow
If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!
Version Number: 1.4.43-14 Reproducible in staging?: y Reproducible in production?: y If this was caught during regression testing, add the test name, ID and link from TestRail: Email or phone of affected tester (no customers): Logs: https://stackoverflow.com/c/expensify/questions/4856 Expensify/Expensify Issue URL: Issue reported by: @brunovjk Slack conversation: https://expensify.slack.com/archives/C01GTK53T8Q/p1708081508978019
Action Performed:
- Click + and select
Request money
- Enter amount and click next
- Search for any contact in the field
Expected Result:
Green circular loading ring is seen like when we search for a contact to chat
Actual Result:
Not appearing when searching in Request money
flow
Workaround:
unknown
Platforms:
Which of our officially supported platforms is this issue occurring on?
- Android: Native
- Android: mWeb Chrome
- iOS: Native
- iOS: mWeb Safari
- MacOS: Chrome / Safari
- MacOS: Desktop
Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/38435837/69a0d4f2-5176-4a87-bcd4-9aaacae07549
Upwork Automation - Do Not Edit
- Upwork Job URL: https://www.upwork.com/jobs/~01788bcdaa345e5022
- Upwork Job ID: 1761057209378701312
- Last Price Increase: 2024-02-23
About this issue
- Original URL
- State: open
- Created 4 months ago
- Comments: 42 (35 by maintainers)
Just a head-ups! I’ll be reviewing the proposal from @brunovjk first since the posted the proposal along side with this bug report. Context: https://expensify.slack.com/archives/C01GTK53T8Q/p1708081508978019
@jliexpensify could you manually make the offers for @mollfpr and @brunovjk please.
Unifying means as you wrote:
Just making sure the green loading works same everywhere we would expect this
I think: @brunovjk can raise the PR to fix all Green Circular cases now.
And I can raise a subsequent PR to fix all the Skeleton cases later when it’s off hold.
SelectionList
to handle a options list✅
<video src='https://github.com/Expensify/App/assets/95647348/c828cd43-324c-4ace-b885-2a060fb8bced'>✅
<video src='https://github.com/Expensify/App/assets/95647348/4343e8b2-0a2b-4d4d-9863-17752a397928'>❌ should be fixed here
<video src='https://github.com/Expensify/App/assets/95647348/bafc369a-08d1-4480-be21-c728b7a3da65'>✅
<video src='https://github.com/Expensify/App/assets/95647348/5eb6585c-767c-4cb9-afc2-fef71952fc8d'>New room chat - RoomInvitePage
- Press “Start chat” - Select “Room” - Fill the name and create a room - Open room details - Press “Members” - Press “Invite”❌
<video src='https://github.com/Expensify/App/assets/95647348/9b7d0277-d199-4fb4-8dcc-1a8bc5f029c0'>❌
<video src='https://github.com/Expensify/App/assets/95647348/01fe3e77-8509-4644-a761-67f359a71b72'>❌
<video src='https://github.com/Expensify/App/assets/95647348/31322b5e-cf7e-49d0-be5f-0ec9655bd42e'>❌
<video src='https://github.com/Expensify/App/assets/95647348/f9d3b260-b140-4a87-b85b-a8c247199d08'>❌
<video src='https://github.com/Expensify/App/assets/95647348/23a2cff6-7371-4171-961f-357223c8c2f8'>❌
<video src='https://github.com/Expensify/App/assets/95647348/f637dfc5-d645-4d23-97de-cf322d3b2ab9'>❌
<video src='https://github.com/Expensify/App/assets/95647348/220737d1-808c-44f6-9750-e5a8c70d86fc'>❌
<video src='https://github.com/Expensify/App/assets/95647348/e374873d-6e44-4170-b086-9a166a1fb3a2'>Assign task - share somewhere
- Press “Assign task” - Fill the title and press “Next” - Press “Share somewhere”❌
<video src='https://github.com/Expensify/App/assets/95647348/a3824939-2660-469e-b970-6ffd91122422'>✅
<video src='https://github.com/Expensify/App/assets/95647348/15ac7c0b-8db3-474e-8897-f918b9e51bba'>Invite to workspace
- Open “Choose a workspace” - Press “+” button - Go to “Members” - Press “Invite member”❌
<video src='https://github.com/Expensify/App/assets/95647348/9cb89507-f7fc-4302-983e-224b555ea939'>❌
<video src='https://github.com/Expensify/App/assets/95647348/aea7b0f7-7cc9-401f-86f0-8634439e22b7'>Share logs
- Go to Settings -> About -> Troubleshoot - Enable “Client Side logging” - Press “Debug console” - Press “Share log”❌
<video src='https://github.com/Expensify/App/assets/95647348/62d37c14-b7ae-4420-9cbc-e779a3666e34'>❌
<video src='https://github.com/Expensify/App/assets/95647348/7a4b1a21-de1b-4747-92a6-a7d9fc1306de'>I think the Skeleton issue still requires hold. Can we fix them all together in a separate issue/PR later? Since it has different root causes (
didScreenTransitionEnd
+ “loading searchable lists by caching the options”) from this issue.For the Green Circular loading (this issue), I can updat my PR to include all cases.
NewChatPage
still usesOptionsSelector
we could waitReplace OptionsSelector with SelectionList
to move on, but I think we are good here, since the green circular on theNewChatPage
is working now and should keep working after refactor.@mollfpr @lakchote @mountiny @dukenv0307 Thoughts?
I do agree about splitting the issue to be specific on the problem we’re solving.
Let’s solve them both.
I’ve put this on hold then, and once the new component will be in place we’ll resume work for it.
Hey @lakchote, @mountiny and @dukenv0307,
Appreciate you delving into this with me. 🚀 Still getting the ropes here, and your insights are a huge help.
The line you referenced is from our PR. Also, I didn’t move the new change to the old component based on @ntdyary’s suggestion link to the comment.
Please, correct me if Im wrong. In my view, we’ve got two distinct issues: green circular loading (our current discussion) and skeleton loading control (highlighted by @dukenv0307). Our issue involves the variable
isSearchingForReports
controllingisLoadingNewOptions
for green circular loading. @dukenv0307issue deals withdidScreenTransitionEnd
andisOptionsDataReady
controllingshowLoadingPlaceholder
for skeleton loading. The former triggers with every new contact search, while the latter activates only once during screen transition/list loading.Currently, we have several flows loading contact lists using
IOURequestStepParticipants
(new component) andMoneyRequestParticipantsPage
(old component), Search, Start chat, Request money manual, Send money, Assign task ,… The transition/skeleton error was reported here, and during the PR, it surfaced in both components, as indicated by @ntdyary (link to the comment). However, he suggested not altering the old component as it’s slated for removal.In summary:
MoneyTemporaryForRefactorRequestParticipantsSelector
. I see now that we should have dealt with this at once. Ensuring consistency betweenMoneyRequestParticipantsSelector
andMoneyTemporaryForRefactorRequestParticipantsSelector
might come with component refactoring, but your guidance suggest otherwise.MoneyRequestParticipantsSelector
as well).IOURequestStepParticipants
andMoneyRequestParticipantsPage
).I dont mind about splitting compensation. I just believe it’d be more effective to compartmentalize these into distinct purposes/issues.
@lakchote @brunovjk Given that this issue would prevail in the new component, I think we should put this issue on hold for the other one and then we can resume work once new component will be in place
How will it solve it? I do not agree. In the new component, there’s the old logic in place, see here.
Since no changes have been made to the logic in the old component, it won’t be ported to the new component. So the issue will remain.
If we just solve the current issue and not the related one for the skeleton, we risk letting a known problem be unfixed whereas we could act on it. That’s not ideal actually. We want to have the same behavior across components. Especially related ones (Request/Send money components). The “other” issue reported by @dukenv0307 was found while he was investigating the bug. It’s not like the two issues are entirely unrelated.
I’m going to seek for an external opinion on this. Thanks @dukenv0307 for pinging me again on this and raise my awareness of the problem.
cc @mountiny
@brunovjk’s proposal LGTM.
Thanks @mollfpr for the C+ review.
DM’ed @lakchote for the review!
@mollfpr I think proposals should be as thorough as possible and not solely limited to only the issue’s OP, we don’t want to leave bugs behind in the flows we’re fixing. The fix is completely different IMO since it’s related to the Skeleton, not the Green loading indicator, and it doesn’t use
isSearchingForReports
. It also is not something that could be discovered and fixed during PR review so could be considered substantially different from the selected proposal.leaves the app/code in a better place than it was before
)Let’s wait for @lakchote 's take on the scope of this issue and who to assign.
My consideration is the main issue here is the
MoneyTemporaryForRefactorRequestParticipantsSelector
missingisLoadingNewOptions
. So basically the proposal from @brunovjk has solved the issue, and the other proposal seems doing the same.Yes, your proposal has an addition to fix the send money flow, but because it’s not the main issue, the fix is pretty similar. So I don’t think it’s fair for another contributor that focus only on the main problem here.
I let @lakchote decide who’s gonna work on this issue.
@mollfpr There’s also a similar issue with the loading skeleton in both pages (number 2 in my proposal). The selected proposal won’t fix that.
@mollfpr Can you provide some feedback on my proposal, which fixes both issues.
Thank you!
Thank you guys for your patience!
The proposal from @brunovjk looks good to me! I’m also inclined to update
MoneyRequestParticipantsSelector
to haveisLoadingNewOptions
, so we can get the same behavior for the send money flow.🎀 👀 🎀 C+ reviewed!