Repository navigation
[Payment due @abzokhattab] Add the join-workspace onboarding intent and Concierge follow up tasks - #103652
[Payment due @abzokhattab] Add the join-workspace onboarding intent and Concierge follow up tasks#103652carlosmiceli wants to merge 8 commits into
Conversation
This comment has been minimized.
This comment has been minimized.
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
Keep the onboarding route registered during fresh sign-in and gate only the redirect while Validate Login is focused. Allow the initial onboarding reset before the guard's onboarding NVP subscription has loaded, instead of treating missing data as completed and redirecting to Home.
|
@ChavdaSachin 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] |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
(Sidenote: I'm kinda surprised we're adding this as an intent cause A) we should know this already right? and B) does this give us any useful information to act upon? @dylanexpensify . cc @Expensify/design ) Videos look good though 👍 |
I think @garrettmknight can explain it best. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8cd85afd32
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| useEffect(() => { | ||
| if (isLoadingJoinablePolicies || joinablePoliciesLoading !== false || joinablePoliciesLength > 0 || !defaultPolicy?.id) { | ||
| if (joinablePoliciesLoading !== false || joinablePoliciesLength > 0 || !defaultPolicy?.id) { | ||
| return; | ||
| } | ||
|
|
||
| finishOnboarding({ | ||
| finishOnboardingFromEffect({ |
There was a problem hiding this comment.
Skip the onboarding fallback for Concierge task flows
When a completed user with an existing default group policy follows a marked Join Workspace task and the lookup returns no joinable policies, this effect still calls finishOnboardingFromEffect. It races the empty-result effect above, which is trying to post the Concierge follow-up and dismiss the modal, and can instead navigate to Personal Details or run completeOnboarding again. Gate this fallback out for isConciergeTaskFlow so it remains limited to unfinished onboarding.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
This looks valid however, i couldnt test it since it needs an empty joinable list .. The domain I have contains many workspaces so I couldn't test it
| // AddWorkEmail already made this the account's login, and resending it would merge the account into itself. | ||
| if (sessionEmail && submittedWorkEmail.toLowerCase() === sessionEmail.toLowerCase()) { | ||
| setOnboardingShouldValidate(false); | ||
| return; |
There was a problem hiding this comment.
Mark same-email submissions as submitted
In the regular Join Workspace flow, going back from private-domain validation leaves the added work email as the current session login and clears shouldValidate. Resubmitting that prefilled email reaches this branch, but it never sets hasSubmittedWorkEmail; consequently the Join Workspace effect returns at its !hasSubmittedWorkEmail guard even after shouldValidate becomes false, leaving the form stuck. Set the submission flag or navigate directly as the Concierge resume branch does.
Useful? React with 👍 / 👎.
|
@ikevin127 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] |
🦜 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 (79KB), 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 |
|
@carlosmiceli Is it expected we will return to company email steps when clicking "Join my company workspace"? In the video below I'm using a brand new account (normal gmail account). Screen.Recording.2026-10-12.at.10.02.17.mov |
|
I can confirm it fixed all the previous blocker btw 👍 |
Yes, if no work email was added in the first screen. |
|
reviewing |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridApp665293203-5b4654ee-7c3f-4f89-95b4-b13f8475e48d.mov665293177-558fe3d2-866f-4697-8eb3-ccf75149a4ce.moviOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-10-12.at.16.50.06.movScreen.Recording.2026-10-12.at.17.06.59.movScreen.Recording.2026-10-12.at.17.09.46.movScreen.Recording.2026-10-12.at.17.12.06.mov |
abzokhattab
left a comment
There was a problem hiding this comment.
LGTM the mentioned blockers were fixed ... i retested and couldnt find other issues
|
🎯 @abzokhattab, thanks for reviewing and testing this PR! 🎉 A payment issue will be created for your review once this PR is deployed to production. If payment is not needed (e.g., regression PR review fix etc), react with 👎 to this comment to prevent the payment issue from being created. |
|
@iwiznia all yours again |
Explanation of Change
Adds a Join my company workspace onboarding intent. Public-email accounts add a work email, unvalidated private-domain accounts validate their email, and validated private-domain accounts see joinable workspaces.
When a user skips a step, Concierge creates the matching Add your work email, Validate your email, or Join your company's workspace task. Opening and completing a task resumes the sequence. When no workspace is available, Concierge posts an explanation instead of another task.
Depends on:
Fixed Issues
$ https://github.com/Expensify/Expensify/issues/672346
PROPOSAL:
Tests
Test 1 - Complete joining a workspace during onboarding
Screen.Recording.2026-09-17.at.10.43.36.AM.mov
Test 2 - Start from the Add your work email Concierge task
Screen.Recording.2026-09-17.at.10.45.07.AM.mov
Test 3 - Start from the Validate your email Concierge task
Screen.Recording.2026-09-17.at.10.46.26.AM.mov
Test 4 - Start from the Join your company's workspace Concierge task
Screen.Recording.2026-09-17.at.11.24.22.AM.mov
Test 5 - Validated public-email account takeover protection
Screen.Recording.2026-09-17.at.11.25.36.AM.mov
Offline tests
QA Steps
Same as Tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionDesignlabel and/or tagged@Expensify/designmainwas merged after review, I tested again according to the Test stepsScreenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari