[Release 2] [Domain Control] Close domain member account#78002
[Release 2] [Domain Control] Close domain member account#78002NikkiWines merged 70 commits intoExpensify:mainfrom
Conversation
|
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 |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: The diff is too large to include in this comment (119KB), so I've created a gist for you: 📋 View the translation diff here 📋 Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
@ZhenjaHorbach last commit fixes it Screen.Recording.2026-02-04.at.12.54.03.mov |
|
Perfect |
|
We did not find an internal engineer to review this PR, trying to assign a random engineer to # as well as to this PR... Please reach out for help on Slack if no one gets assigned! |
src/languages/en.ts
Outdated
| forceCloseAccount: 'Force close account', | ||
| safeCloseAccount: 'Close account safely', | ||
| closeAccountInfo: | ||
| 'We recommend closing the account safely to skip closing it in case there are: <ul><li>Pending approvals</li><li>Active reimbursements</li><li>No alternative login methods</li></ul> Otherwise, you can ignore the safety precautions above and force close the selected account.', |
| isFirstOptionSuccess = true, | ||
| isSecondOptionSuccess = false, | ||
| isSecondOptionDanger = false, | ||
| }: DecisionModalProps) { |
There was a problem hiding this comment.
Ok but lets follow up on this one! @sumo-slonik can you please create an issue for the PR you made with explanation of the motivation behind it?
NikkiWines
left a comment
There was a problem hiding this comment.
one small typo, otherwise looks good 👍
src/libs/actions/Domain.ts
Outdated
| * Adds a member to a domain | ||
| * @param domainAccountID Account ID of a domain | ||
| * @param email Email of a user to be added | ||
| * @param defaultSecurityGroupID Security group ip to be used for optimistic updates |
There was a problem hiding this comment.
| * @param defaultSecurityGroupID Security group ip to be used for optimistic updates | |
| * @param defaultSecurityGroupID Security group ID to be used for optimistic updates |
| const icons = useMemoizedLazyExpensifyIcons(['RemoveMembers']); | ||
| const [isModalVisible, setIsModalVisible] = useState(false); | ||
| const [shouldForceCloseAccount, setShouldForceCloseAccount] = useState<boolean>(); | ||
| // we need to use isSmallScreenWidth here because the DecisionModal is opening from RHP and ShouldUseNarrowLayout layout will not work in this place |
There was a problem hiding this comment.
NAB:
| // we need to use isSmallScreenWidth here because the DecisionModal is opening from RHP and ShouldUseNarrowLayout layout will not work in this place | |
| // We need to use isSmallScreenWidth here because the DecisionModal is opening from RHP and ShouldUseNarrowLayout layout will not work in this place |
|
@NikkiWines looks like this was merged without a test passing. Please add a note explaining why this was done and remove the |
|
🚧 @NikkiWines has triggered a test Expensify/App build. You can view the workflow run here. |
|
tests were passing 👍 |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/NikkiWines in version: 9.3.13-1 🚀
|
|
🚀 Deployed to staging by https://github.com/NikkiWines in version: 9.3.15-0 🚀
|

Explanation of Change
Part for Domain Control project. This PR adds closing member account with GBR and RBR flows. For now it features single modal confirmation, pending discussion.
For the flow preview please refer to MacOS: Chrome / Safari
Fixed Issues
$ #79358 PROPOSAL:
Tests
(A decision modal should appear with two options: Force close and Safely close.
Repeat the scenario on two different accounts to verify both options.)
Offline tests
Repeat the steps from the test section above while in offline state and verify whether a pending delete action remains under the member.
QA Steps
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
Refer to MacOS: Chrome / Safari
Android: mWeb Chrome
Refer to MacOS: Chrome / Safari
iOS: Native
Refer to MacOS: Chrome / Safari
iOS: mWeb Safari
Refer to MacOS: Chrome / Safari
MacOS: Chrome / Safari
Close.acc.POC.mov