Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions src/components/KYCWall/BaseKYCWall.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {setKYCWallSource} from '@userActions/Wallet';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
import {lastWorkspaceNumberSelector} from '@src/selectors/Policy';
import type {BankAccountList, Policy} from '@src/types/onyx';
import {getEmptyObject} from '@src/types/utils/EmptyObject';
import viewRef from '@src/types/utils/viewRef';
Expand Down Expand Up @@ -67,7 +68,7 @@ function KYCWall({
const [betas] = useOnyx(ONYXKEYS.BETAS);
const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID);

const {formatPhoneNumber} = useLocalize();
const {formatPhoneNumber, translate} = useLocalize();
const currentUserDetails = useCurrentUserPersonalDetails();
const currentUserEmail = currentUserDetails.email ?? '';
const reportPreviewAction = useParentReportAction(iouReport);
Expand Down Expand Up @@ -165,8 +166,9 @@ function KYCWall({
return;
}

const lastWorkspaceNumber = lastWorkspaceNumberSelector(policies, currentUserEmail);
const {policyID, workspaceChatReportID, reportPreviewReportActionID, adminsChatReportID} =
createWorkspaceFromIOUPayment(iouReport, reportPreviewAction, currentUserEmail, employeeEmail, conciergeReportID) ?? {};
createWorkspaceFromIOUPayment(iouReport, reportPreviewAction, currentUserEmail, employeeEmail, conciergeReportID, lastWorkspaceNumber, translate) ?? {};
if (policyID && iouReport?.policyID) {
savePreferredPaymentMethod(iouReport.policyID, policyID, CONST.LAST_PAYMENT_METHOD.IOU, lastPaymentMethod?.[iouReport?.policyID]);
}
Expand Down Expand Up @@ -213,6 +215,7 @@ function KYCWall({
employeeEmail,
introSelected,
formatPhoneNumber,
translate,
reportTransactions,
lastPaymentMethod,
isSelfTourViewed,
Expand Down
16 changes: 13 additions & 3 deletions src/hooks/useAutoCreateTrackWorkspace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ import type {OnyxCollection} from 'react-native-onyx';
import {navigateAfterOnboardingWithMicrotaskQueue} from '@libs/navigateAfterOnboarding';
import {createDisplayName} from '@libs/PersonalDetailsUtils';
import {isPaidGroupPolicy, isPolicyAdmin} from '@libs/PolicyUtils';
import {createWorkspace, generateDefaultWorkspaceName, generatePolicyID} from '@userActions/Policy/Policy';
import {createWorkspace, generatePolicyID, newGenerateDefaultWorkspaceName} from '@userActions/Policy/Policy';
import {completeOnboarding} from '@userActions/Report';
import {setOnboardingAdminsChatReportID, setOnboardingPolicyID} from '@userActions/Welcome';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import {lastWorkspaceNumberSelector} from '@src/selectors/Policy';
import type {OnboardingPurpose, Policy} from '@src/types/onyx';
import useArchivedReportsIdSet from './useArchivedReportsIdSet';
import useCurrentUserPersonalDetails from './useCurrentUserPersonalDetails';
Expand Down Expand Up @@ -37,14 +38,21 @@ function useAutoCreateTrackWorkspace() {
() => (policies: OnyxCollection<Policy>) => Object.values(policies ?? {}).some((policy) => isPaidGroupPolicy(policy) && isPolicyAdmin(policy, session?.email)),
[session?.email],
);
const lastWorkspaceNumberWithEmailSelector = useCallback(
(policies: OnyxCollection<Policy>) => {
return lastWorkspaceNumberSelector(policies, session?.email ?? '');
},
[session?.email],
);
const [hasPaidGroupAdminPolicy] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {selector: paidGroupPolicySelector});
const [lastWorkspaceNumber] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {selector: lastWorkspaceNumberWithEmailSelector});
const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID);
const [conciergeChatReportID = ''] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID);
const [onboardingValues] = useOnyx(ONYXKEYS.NVP_ONBOARDING);
const currentUserPersonalDetails = useCurrentUserPersonalDetails();
const archivedReportsIdSet = useArchivedReportsIdSet();
const {isBetaEnabled} = usePermissions();
const {formatPhoneNumber} = useLocalize();
const {translate, formatPhoneNumber} = useLocalize();
const {isRestrictedPolicyCreation} = usePreferredPolicy();
const hasActiveAdminPolicies = useHasActiveAdminPolicies();
const {onboardingMessages} = useOnboardingMessages();
Expand All @@ -67,7 +75,7 @@ function useAutoCreateTrackWorkspace() {
? createWorkspace({
policyOwnerEmail: undefined,
makeMeAdmin: true,
policyName: generateDefaultWorkspaceName(session?.email, displayName),
policyName: newGenerateDefaultWorkspaceName(session?.email ?? '', lastWorkspaceNumber, translate, displayName),
policyID: generatePolicyID(),
engagementChoice: CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE,
currency: currentUserPersonalDetails.localCurrencyCode ?? CONST.CURRENCY.USD,
Expand Down Expand Up @@ -113,6 +121,8 @@ function useAutoCreateTrackWorkspace() {
[
session?.email,
session?.accountID,
lastWorkspaceNumber,
translate,
formatPhoneNumber,
isRestrictedPolicyCreation,
onboardingPolicyID,
Expand Down
14 changes: 8 additions & 6 deletions src/libs/actions/Policy/Policy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@
};

const deprecatedAllPolicies: OnyxCollection<Policy> = {};
Onyx.connect({

Check warning on line 255 in src/libs/actions/Policy/Policy.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.POLICY,
callback: (val, key) => {
if (!key) {
Expand All @@ -268,7 +268,7 @@
});

let deprecatedAllReportActions: OnyxCollection<ReportActions>;
Onyx.connect({

Check warning on line 271 in src/libs/actions/Policy/Policy.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.REPORT_ACTIONS,
waitForCollectionCallback: true,
callback: (actions) => {
Expand All @@ -278,7 +278,7 @@

let deprecatedSessionEmail = '';
let deprecatedSessionAccountID = 0;
Onyx.connect({

Check warning on line 281 in src/libs/actions/Policy/Policy.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.SESSION,
callback: (val) => {
deprecatedSessionEmail = val?.email ?? '';
Expand All @@ -287,7 +287,7 @@
});

let deprecatedAllPersonalDetails: OnyxEntry<PersonalDetailsList>;
Onyx.connect({

Check warning on line 290 in src/libs/actions/Policy/Policy.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.PERSONAL_DETAILS_LIST,
callback: (val) => (deprecatedAllPersonalDetails = val),
});
Expand Down Expand Up @@ -2155,7 +2155,7 @@
Onyx.set(ONYXKEYS.DUPLICATE_WORKSPACE, {});
}

function getDisplayNameForWorkspace(email: string) {
function getDisplayNameForWorkspace(email: string, displayNameOverride?: string) {
const emailParts = email.split('@');
const domain = emailParts.at(1) ?? '';
const isSMSDomain = `@${domain}` === CONST.SMS.DOMAIN;
Expand All @@ -2169,7 +2169,7 @@
}

const userDetails = PersonalDetailsUtils.getPersonalDetailByEmail(email);
const displayName = userDetails?.displayName?.trim();
const displayName = displayNameOverride?.trim() ?? userDetails?.displayName?.trim();
if (displayName) {
return Str.UCFirst(displayName);
}
Expand All @@ -2183,8 +2183,8 @@
* @param [email] the email to base the workspace name on. If not passed, will use the logged-in user's email instead
* @param [lastWorkspaceNumber] the last workspace number
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove params from jsdoc

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

*/
function newGenerateDefaultWorkspaceName(email: string, lastWorkspaceNumber: number | undefined, localeTranslate: LocalizedTranslate): string {
const emailParts = email ? email.split('@') : deprecatedSessionEmail.split('@');
function newGenerateDefaultWorkspaceName(email: string, lastWorkspaceNumber: number | undefined, localeTranslate: LocalizedTranslate, displayNameOverride?: string): string {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

displayNameOverride is from generateDefaultWorkspaceName

const emailParts = email.split('@');
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the deprecatedSessionEmail because we make the email required

if (!emailParts || emailParts.length !== 2) {
return '';
}
Expand All @@ -2195,7 +2195,7 @@
return localeTranslate('workspace.new.myGroupWorkspace', {workspaceNumber: lastWorkspaceNumber !== undefined ? lastWorkspaceNumber + 1 : undefined});
}

const displayNameForWorkspace = getDisplayNameForWorkspace(email || deprecatedSessionEmail);
const displayNameForWorkspace = getDisplayNameForWorkspace(email, displayNameOverride);

return localeTranslate('workspace.new.workspaceName', displayNameForWorkspace, lastWorkspaceNumber !== undefined ? lastWorkspaceNumber + 1 : undefined);
}
Expand Down Expand Up @@ -3942,6 +3942,8 @@
currentUserEmail: string,
iouReportOwnerEmail: string,
conciergeReportID: string | undefined,
lastWorkspaceNumber: number | undefined,
localeTranslate: LocalizedTranslate,
): WorkspaceFromIOUCreationData | undefined {
// This flow only works for IOU reports
if (!iouReport || !ReportUtils.isIOUReportUsingReport(iouReport)) {
Expand All @@ -3950,7 +3952,7 @@

// Generate new variables for the policy
const policyID = generatePolicyID();
const workspaceName = generateDefaultWorkspaceName(currentUserEmail);
const workspaceName = newGenerateDefaultWorkspaceName(currentUserEmail, lastWorkspaceNumber, localeTranslate);
const employeeAccountID = iouReport?.ownerAccountID;
const {customUnits, customUnitID, customUnitRateID} = buildOptimisticDistanceRateCustomUnits(iouReport?.currency);
const oldPersonalPolicyID = iouReport?.policyID;
Expand Down
Loading