-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[NO QA] feat: Step 4 logic #54280
[NO QA] feat: Step 4 logic #54280
Conversation
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
…ensify-App into feat/step-4-logic
Hey @hungvu193 ! So BE is working at the moment but it only supports a single file upload. We've agreed with @madmax330 to update it in the following issue and for now go with what we have. I've added a TODO note in the line that will be changed before we go live with this feature. I hope this is ok and we can test it now and close it. |
Cool cool. I'll retest today and let you know. |
All good. I'll complte the checklist today! |
@MrMuzyk If I didn't add any owner then I got this issue: "400 Invalid field in inputs" Screen.Recording.2025-02-01.at.22.53.45.movI think there's validation mismatch between BE and FE right? Here's the curlcurl 'https://dev.new.expensify.com:8082/api/SaveCorpayOnboardingBeneficialOwner?' \ -H 'Accept: */*' \ -H 'Accept-Language: en-US,en;q=0.9' \ -H 'Connection: keep-alive' \ -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryyGZ2iI3qo8nRlFTP' \ -H 'Origin: https://dev.new.expensify.com:8082' \ -H 'Referer: https://dev.new.expensify.com:8082/bank-account/new?backTo=settings%2Fworkspaces%2F7712D7510816D306%2Fworkflows&policyID=7712D7510816D306' \ -H 'Sec-Fetch-Dest: empty' \ -H 'Sec-Fetch-Mode: cors' \ -H 'Sec-Fetch-Site: same-origin' \ -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36' \ -H 'sec-ch-ua: "Not A(Brand";v="8", "Chromium";v="132", "Google Chrome";v="132"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ --data-raw $'------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="inputs"\r\n\r\n{"anyIndividualOwn25PercentOrMore":false}\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="beneficialOwnerIDs"\r\n\r\n\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="bankAccountID"\r\n\r\n6913529\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="apiRequestType"\r\n\r\nwrite\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="pusherSocketID"\r\n\r\n823322.629469\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="shouldRetry"\r\n\r\ntrue\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="canCancel"\r\n\r\ntrue\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="authToken"\r\n\r\nEDBDCCA2E6E95BB8810C0F547C5B608B3F0BE6BD0367FD87CA45A785980877222C02574AA802D4868E1F884BC44DD2EDC04DBECE7D1D7F631C8B1B21C8582BC42D09CCC6514E55AEA8E6D4305975A0A85A9962BA10C0BF09876ED110EC11CCEFBEEF1AD7381F275F2B4C791675F157D9735FA4FEB11800EEA0A648505EFDA69088819AF48E58E7DCED61BBFF3B3EDA7050AA52CD71558A4AE94D574FC82750E1D2B81BEBB83E14FBBE1E25493B8E3F01AD1B613331F83862E1512BB00D22E9D87758FDD6D93F2198C550FBA088C30754221D041D8F5FD485299C15350B7E5921A8CD4FE6368319CA0962AF76A6570199018AAE8E1C002ACC7D1554A27E8C401B261EDE295C2D24E7EFF678043E701BE3DE006F389EC0F7070C983C7B42C186A4552CCCDFDCE4B0F6F2B6E5CC148890CAED95587ABC29C2E22F0F314B076CCF05182BBAE043707EAC4517C71044A6CF59FA7424FDFFF8AEDC6402067E33C986F2\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="referer"\r\n\r\necash\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="platform"\r\n\r\nweb\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="api_setCookie"\r\n\r\nfalse\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="email"\r\n\r\[email protected]\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="isFromDevEnv"\r\n\r\ntrue\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="appversion"\r\n\r\n9.0.93-1\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP\r\nContent-Disposition: form-data; name="clientUpdateID"\r\n\r\n4040323493\r\n------WebKitFormBoundaryyGZ2iI3qo8nRlFTP--\r\n' |
Looking into it |
@hungvu193 Max fixed it on his end and PR will probably be deployed to staging today. On my end, Ive made param with owner keys optional and added a loader to be displayed on the button when request is being processed |
Awesome. I'll retest once BE is ready |
Hey @hungvu193, BE was deployed and case where there are no owners works right now :) |
Oops, I think I think I still have the error if I added the owners and submit: (it worked fine if I didn't add any owner) Screen.Recording.2025-02-06.at.16.21.43.mov |
Here's the cURL. cURLcurl 'https://dev.new.expensify.com:8082/staging/api/SaveCorpayOnboardingBeneficialOwner?' \ -H 'Accept: */*' \ -H 'Accept-Language: en-US,en;q=0.9' \ -H 'Connection: keep-alive' \ -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryBuBVeBxBT9dEf2de' \ -H 'Origin: https://dev.new.expensify.com:8082' \ -H 'Referer: https://dev.new.expensify.com:8082/bank-account/new?backTo=settings%2Fworkspaces%2FBC56935A25654C33%2Fworkflows&policyID=BC56935A25654C33' \ -H 'Sec-Fetch-Dest: empty' \ -H 'Sec-Fetch-Mode: cors' \ -H 'Sec-Fetch-Site: same-origin' \ -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' \ -H 'sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ --data-raw $'------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="inputs"\r\n\r\n{"beneficialOwner_bd542822-756e-f570-8ee9-8f97d1f9812a_fullName":"han vu","beneficialOwner_bd542822-756e-f570-8ee9-8f97d1f9812a_ownershipPercentage":"33%","beneficialOwner_bd542822-756e-f570-8ee9-8f97d1f9812a_dob":"2007-02-01","beneficialOwner_bd542822-756e-f570-8ee9-8f97d1f9812a_ssnLast4":"4444","beneficialOwner_bd542822-756e-f570-8ee9-8f97d1f9812a_residentialAddress":"125 Rooney Circle, Aspen, CO, 81611","beneficialOwner_bd542822-756e-f570-8ee9-8f97d1f9812a_nationality":"US","anyIndividualOwn25PercentOrMore":true}\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="beneficialOwner_bd542822-756e-f570-8ee9-8f97d1f9812a_proofOfBeneficialOwner"; filename="splash.png"\r\nContent-Type: image/png\r\n\r\n\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="beneficialOwner_bd542822-756e-f570-8ee9-8f97d1f9812a_copyOfIDForBeneficialOwner"; filename="splash.png"\r\nContent-Type: image/png\r\n\r\n\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="beneficialOwner_bd542822-756e-f570-8ee9-8f97d1f9812a_addressProofForBeneficialOwner"; filename="splash.png"\r\nContent-Type: image/png\r\n\r\n\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="beneficialOwnerIDs"\r\n\r\nbd542822-756e-f570-8ee9-8f97d1f9812a\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="bankAccountID"\r\n\r\n6944854\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="apiRequestType"\r\n\r\nwrite\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="pusherSocketID"\r\n\r\n824295.868070\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="shouldRetry"\r\n\r\ntrue\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="canCancel"\r\n\r\ntrue\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="authToken"\r\n\r\n3B3402BB4EDFFAC7F2E3D844E7F29957CBBDED43E3D5F5303DE5E5A9F0A60E1AFF5B005B1C7F54C0B6FF81C6298CF7432D967F0474181042EBAFC50A9F07BA6BB414D74036F73E076938C991ACF9A2EEB6AED17EC2F912E82F0DDC9559D08626B924A07A2625871DBC5E72208A18E2B97C214C2D03AC7CCE1D99EA9022663CD9851E6213C18CAC446610B2D49A04716D4B1E12107D1F6219D48C37707B89F32FE59CF58D9EBE276CAB88123E0B0CFD1F339D116A277C46B33A29AB8694DCDBA918394817C97B094EFD19139E48D55580F25F17DF27ECE84E5D29E0CDC9A4C31832542A9231D6E5F35D91DA01B06315851064F1B0606CE0CF1B07EC84AB492CAFABC869C02A6903CD63138618223C5A0703AEB41172205452C160F8991FAEF98A16DFC60C77DCC5682C5F6F4EC24D8EEFD9B4F6655535ECA8328A8708783D384A78E7E2DB210C994A5AD526B6E4E766D150200AF4F13265FF0DC30A4B22938462\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="referer"\r\n\r\necash\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="platform"\r\n\r\nweb\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="api_setCookie"\r\n\r\nfalse\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="email"\r\n\r\[email protected]\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="isFromDevEnv"\r\n\r\ntrue\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="appversion"\r\n\r\n9.0.94-1\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de\r\nContent-Disposition: form-data; name="clientUpdateID"\r\n\r\n4105445337\r\n------WebKitFormBoundaryBuBVeBxBT9dEf2de--\r\n' |
@hungvu193 is there any reason you're testing with curl instead of through the app? |
I'm testing through the app, but I copied the cURL here for better investigation in case my input has anything incorrect. |
Ok, I see the issue here. So the issue I posted above will happen if I submitted successfully at step 4. |
Can you please retry in completely fresh workspace? Because I just tested following scenario in single workspace:
All worked fine, back to back in same workspace |
I think yesterday there was also a BE change regarding data being saved inside achData in reimbursement account. In order for that to work correctly a creation of fresh workspace was needed so it might be the case the something is broken in yours 😓 |
Let me try 🤞 |
@MrMuzyk Yeah I think you were right. I couldn't reproduce it with brand new workspace |
Cool, let me know if there is anything else that needs fixing, otherwise Im hoping to merge that tomorrow if its possible :) |
All good. I'm finishing the checklist by now |
Reviewer Checklist
Screenshots/VideosAndroid: NativeScreen.Recording.2025-02-07.at.00.43.48.movAndroid: mWeb ChromeScreen.Recording.2025-02-07.at.00.09.00.moviOS: NativeScreen.Recording.2025-02-06.at.23.46.04.moviOS: mWeb SafariScreen.Recording.2025-02-06.at.23.53.28.movMacOS: Chrome / SafariChrome.movMacOS: DesktopScreen.Recording.2025-02-06.at.17.53.13.mov |
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
Explanation of Change
Fixed Issues
$ #50906
PROPOSAL:
Tests
Offline tests
QA Steps
N/A
PR Author Checklist
### Fixed Issues
section aboveTests
sectionOffline steps
sectionQA steps
sectiontoggleReport
and notonIconClick
)src/languages/*
files and using the translation methodSTYLE.md
) were followedAvatar
, I verified the components usingAvatar
are working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)
)Avatar
is modified, I verified thatAvatar
is working as expected in all cases)Design
label and/or tagged@Expensify/design
so the design team can review the changes.ScrollView
component to make it scrollable when more elements are added to the page.main
branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTest
steps.Screenshots/Videos
Android: Native
android.native.mp4
Android: mWeb Chrome
android.web.mp4
iOS: Native
ios.native.mp4
iOS: mWeb Safari
ios.web.mp4
MacOS: Chrome / Safari
web.mp4
MacOS: Desktop
desktop.mp4