New Feature : Allow inviting new users from the card assignment dialog"#74568
Conversation
…rom the card assignment dialog""
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
|
@ZhenjaHorbach Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
trjExpensify
left a comment
There was a problem hiding this comment.
Product change conceived by the internal team in Slack 👍
|
@ZhenjaHorbach would you be able to review this one today?, hope you had a great weekend 😄 |
|
Sorry for delay |
Reviewer Checklist
Screenshots/VideosAndroid: HybridApp2025-10-27.15.34.56.movAndroid: mWeb Chrome2025-10-27.15.34.56.moviOS: HybridApp2025-10-27.15.26.28.moviOS: mWeb Safari2025-10-27.15.22.25.movMacOS: Chrome / Safari2025-10-27.15.18.32.mov2025-11-05.11.24.17.mov2025-11-05.11.27.05.mov2025-11-05.11.30.00.mov2025-11-05.11.32.19.movMacOS: Desktop2025-10-27.15.18.32.mov |
|
After these steps Go to workspace settings > Expensify Card > Click Issue card. Expensify Card screen is not opened after the first click 2025-11-11.10.41.10.mov |
|
ahhh, good catch looking |
|
Ugh, that's not what I wanted. I was aiming for one more internal reviewer. @ZhenjaHorbach , just mark it approved again please, no need to fill out the list again. |
|
I think @puneetlath can review this since he is the CME on the original issue |
|
Can you help me understand where there are so many changes where the policyID can now be undefined? What is the scenario where that happens? |
|
@twilight2294 |
src/libs/actions/Policy/Member.ts
Outdated
| invitedEmailsToAccountIDs: InvitedEmailsToAccountIDs, | ||
| welcomeNote: string, | ||
| policyID: string, | ||
| policyID: string | undefined, |
There was a problem hiding this comment.
@puneetlath answering this question of yours:
There is an changed files eslint rule which states that we shouldn't pass empty strings for any collectionID, until now these functions were not updated and the functions had fallbacks like:
clearWorkspaceInviteRoleDraft(policyID ?? '')
With the new rule, this is discouraged now and we should pass undefined values down to the action function. I hope that answers your question
There was a problem hiding this comment.
What is the scenario where that happens?
It doesn't happen , but it's a practice in the app to pass down undefined values to the functions:
App/src/libs/actions/Policy/PerDiem.ts
Line 395 in a7c2526
Please check similar usages in this app search:
Alternatively, we can define the policyID type as string and return early if policyID is undefined , let me know if you prefer this approach
There was a problem hiding this comment.
Alternatively, we can define the policyID type as string and return early if policyID is undefined , let me know if you prefer this approach
I think I prefer this approach. As it feels confusing to have the policyID allowed to be undefined in all these functions. What do you think @ZhenjaHorbach?
There was a problem hiding this comment.
Cool, i'll push this change right away to not delay this PR further
There was a problem hiding this comment.
@puneetlath this one is ready for your review :)
|
Looks like we have a typecheck failure @twilight2294 |
|
Fixed the failing tests @puneetlath , hopefully reassure also passes |
|
All workflows pass 🥳 |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/puneetlath in version: 9.2.62-0 🚀
|
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.2.62-5 🚀
|
Explanation of Change
Fixed Issues
$ #60905
$ #74256
$ #74257
$ #74258
$ #74266
$ #74276
PROPOSAL: #60905 (comment)
Tests
Offline tests
QA Steps
Precondition:
Test 1:
issue cardVerify that you are able to complete the card assignment
Test 2:
issue cardVerify that you are able to complete the card assignment
Test 3:
Verify that the selected cardholder will be highlighted.
Screen.Recording.2025-11-05.at.10.24.53.AM.mov
Test 4:
Verify that the previously selected user on the confirmation screen is still selected.
Screen.Recording.2025-11-05.at.10.25.50.AM.mov
Test 5:
Verify that Issue card RHP opens up.
Screen.Recording.2025-11-05.at.10.38.43.AM.mov
Test 6:
Precondition: Workspace has company card added
Verify that you are directed to the invite screen
Screen.Recording.2025-11-05.at.2.00.39.PM.mov
Test 7:
Verify that In Step 1 and 2, member list on "Who needs a card" will show up instantly.
Screen.Recording.2025-11-05.at.1.59.39.PM.mov
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
MacOS: Desktop