Skip to content

Commit f6d388a

Browse files
authored
Merge pull request #91256 from DylanDylann/refactor-66580-createDraftWorkspace-required-currency-v2
Make currency in createDraftWorkspace required string | undefined
2 parents e7ab359 + e1af4e2 commit f6d388a

3 files changed

Lines changed: 152 additions & 34 deletions

File tree

src/libs/actions/App.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,17 @@ function createWorkspaceWithPolicyDraftAndNavigateToIt(params: CreateWorkspaceWi
603603
} = params;
604604

605605
const policyIDWithDefault = policyID || generatePolicyID();
606-
createDraftInitialWorkspace(introSelected, policyName, currentUserAccountIDParam, currentUserEmailParam, policyIDWithDefault, makeMeAdmin, currency, file, type);
606+
createDraftInitialWorkspace({
607+
introSelected,
608+
workspaceName: policyName,
609+
currentUserAccountID: currentUserAccountIDParam,
610+
currentUserEmail: currentUserEmailParam,
611+
currency,
612+
policyID: policyIDWithDefault,
613+
makeMeAdmin,
614+
file,
615+
type,
616+
});
607617
Navigation.isNavigationReady().then(() => {
608618
if (transitionFromOldDot) {
609619
// We must call goBack() to remove the /transition route from history
@@ -669,7 +679,16 @@ function createWorkspaceWithPolicyDraft(params: CreateWorkspaceWithPolicyDraftPa
669679
hasActiveAdminPolicies,
670680
} = params;
671681

672-
createDraftInitialWorkspace(introSelected, policyName, currentUserAccountIDParam, currentUserEmailParam, policyID, makeMeAdmin, currency, file);
682+
createDraftInitialWorkspace({
683+
introSelected,
684+
workspaceName: policyName,
685+
currentUserAccountID: currentUserAccountIDParam,
686+
currentUserEmail: currentUserEmailParam,
687+
currency,
688+
policyID,
689+
makeMeAdmin,
690+
file,
691+
});
673692
savePolicyDraftByNewWorkspace({
674693
policyID,
675694
policyName,

src/libs/actions/Policy/Policy.ts

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2392,21 +2392,34 @@ function buildOptimisticDistanceRateCustomUnits(reportCurrency?: string): Optimi
23922392
};
23932393
}
23942394

2395+
type CreateDraftInitialWorkspaceParams = {
2396+
introSelected: OnyxEntry<IntroSelected>;
2397+
workspaceName: string;
2398+
currentUserAccountID: number;
2399+
currentUserEmail: string;
2400+
currency: string | undefined;
2401+
policyID?: string;
2402+
makeMeAdmin?: boolean;
2403+
file?: File;
2404+
type?: typeof CONST.POLICY.TYPE.TEAM | typeof CONST.POLICY.TYPE.CORPORATE | typeof CONST.POLICY.TYPE.SUBMIT;
2405+
isAnnualSubscription?: boolean;
2406+
};
2407+
23952408
/**
23962409
* Optimistically creates a Policy Draft for a new workspace
23972410
*/
2398-
function createDraftInitialWorkspace(
2399-
introSelected: OnyxEntry<IntroSelected>,
2400-
workspaceName: string,
2401-
currentUserAccountID: number,
2402-
currentUserEmail: string,
2411+
function createDraftInitialWorkspace({
2412+
introSelected,
2413+
workspaceName,
2414+
currentUserAccountID,
2415+
currentUserEmail,
2416+
currency,
24032417
policyID = generatePolicyID(),
24042418
makeMeAdmin = false,
2405-
currency = '',
2406-
file?: File,
2407-
type: typeof CONST.POLICY.TYPE.TEAM | typeof CONST.POLICY.TYPE.CORPORATE | typeof CONST.POLICY.TYPE.SUBMIT = CONST.POLICY.TYPE.TEAM,
2419+
file,
2420+
type = CONST.POLICY.TYPE.TEAM,
24082421
isAnnualSubscription = false,
2409-
) {
2422+
}: CreateDraftInitialWorkspaceParams) {
24102423
const {customUnits, outputCurrency} = buildOptimisticDistanceRateCustomUnits(currency);
24112424
const shouldEnableWorkflowsByDefault =
24122425
!introSelected?.choice || introSelected.choice === CONST.ONBOARDING_CHOICES.MANAGE_TEAM || introSelected.choice === CONST.ONBOARDING_CHOICES.LOOKING_AROUND;
@@ -3106,10 +3119,10 @@ type CreateDraftWorkspaceParams = {
31063119
workspaceName: string;
31073120
currentUserAccountID: number;
31083121
currentUserEmail: string;
3122+
currency: string | undefined;
31093123
policyOwnerEmail?: string;
31103124
makeMeAdmin?: boolean;
31113125
policyID?: string;
3112-
currency?: string;
31133126
file?: File;
31143127
};
31153128

@@ -3118,10 +3131,10 @@ function createDraftWorkspace({
31183131
workspaceName,
31193132
currentUserAccountID,
31203133
currentUserEmail,
3134+
currency,
31213135
policyOwnerEmail = '',
31223136
makeMeAdmin = false,
31233137
policyID = generatePolicyID(),
3124-
currency = '',
31253138
file,
31263139
}: CreateDraftWorkspaceParams): CreateWorkspaceParams {
31273140
const {customUnits, customUnitID, customUnitRateID, outputCurrency} = buildOptimisticDistanceRateCustomUnits(currency);

tests/actions/PolicyTest.ts

Lines changed: 107 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2644,7 +2644,15 @@ describe('actions/Policy', () => {
26442644

26452645
const policyID = Policy.generatePolicyID();
26462646

2647-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE}, WORKSPACE_NAME, ESH_ACCOUNT_ID, ESH_EMAIL, policyID, false, CONST.CURRENCY.EUR);
2647+
Policy.createDraftInitialWorkspace({
2648+
introSelected: {choice: CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE},
2649+
workspaceName: WORKSPACE_NAME,
2650+
currentUserAccountID: ESH_ACCOUNT_ID,
2651+
currentUserEmail: ESH_EMAIL,
2652+
currency: CONST.CURRENCY.EUR,
2653+
policyID,
2654+
makeMeAdmin: false,
2655+
});
26482656
await waitForBatchedUpdates();
26492657

26502658
const draft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -2664,7 +2672,14 @@ describe('actions/Policy', () => {
26642672
const customEmail = 'custom@example.com';
26652673
const policyID = Policy.generatePolicyID();
26662674

2667-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM}, WORKSPACE_NAME, customAccountID, customEmail, policyID);
2675+
Policy.createDraftInitialWorkspace({
2676+
introSelected: {choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
2677+
workspaceName: WORKSPACE_NAME,
2678+
currentUserAccountID: customAccountID,
2679+
currentUserEmail: customEmail,
2680+
currency: undefined,
2681+
policyID,
2682+
});
26682683
await waitForBatchedUpdates();
26692684

26702685
const draft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -2686,7 +2701,14 @@ describe('actions/Policy', () => {
26862701
const customEmail = 'approver@example.com';
26872702
const policyID = Policy.generatePolicyID();
26882703

2689-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM}, WORKSPACE_NAME, customAccountID, customEmail, policyID);
2704+
Policy.createDraftInitialWorkspace({
2705+
introSelected: {choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
2706+
workspaceName: WORKSPACE_NAME,
2707+
currentUserAccountID: customAccountID,
2708+
currentUserEmail: customEmail,
2709+
currency: undefined,
2710+
policyID,
2711+
});
26902712
await waitForBatchedUpdates();
26912713

26922714
const draft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -2703,7 +2725,14 @@ describe('actions/Policy', () => {
27032725
const customEmail = 'employee@example.com';
27042726
const policyID = Policy.generatePolicyID();
27052727

2706-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM}, WORKSPACE_NAME, customAccountID, customEmail, policyID);
2728+
Policy.createDraftInitialWorkspace({
2729+
introSelected: {choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
2730+
workspaceName: WORKSPACE_NAME,
2731+
currentUserAccountID: customAccountID,
2732+
currentUserEmail: customEmail,
2733+
currency: undefined,
2734+
policyID,
2735+
});
27072736
await waitForBatchedUpdates();
27082737

27092738
const draft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -2798,6 +2827,7 @@ describe('actions/Policy', () => {
27982827
currentUserEmail: customEmail,
27992828
policyOwnerEmail: customEmail,
28002829
policyID,
2830+
currency: undefined,
28012831
});
28022832
await waitForBatchedUpdates();
28032833

@@ -6751,7 +6781,15 @@ describe('actions/Policy', () => {
67516781
await waitForBatchedUpdates();
67526782

67536783
const policyID = Policy.generatePolicyID();
6754-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM}, WORKSPACE_NAME, ESH_ACCOUNT_ID, ESH_EMAIL, policyID, false, 'USD');
6784+
Policy.createDraftInitialWorkspace({
6785+
introSelected: {choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
6786+
workspaceName: WORKSPACE_NAME,
6787+
currentUserAccountID: ESH_ACCOUNT_ID,
6788+
currentUserEmail: ESH_EMAIL,
6789+
currency: 'USD',
6790+
policyID,
6791+
makeMeAdmin: false,
6792+
});
67556793
await waitForBatchedUpdates();
67566794

67576795
const policyDraft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -6778,7 +6816,15 @@ describe('actions/Policy', () => {
67786816
await waitForBatchedUpdates();
67796817

67806818
const policyID = Policy.generatePolicyID();
6781-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM}, WORKSPACE_NAME, ESH_ACCOUNT_ID, ESH_EMAIL, policyID, false, 'USD');
6819+
Policy.createDraftInitialWorkspace({
6820+
introSelected: {choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
6821+
workspaceName: WORKSPACE_NAME,
6822+
currentUserAccountID: ESH_ACCOUNT_ID,
6823+
currentUserEmail: ESH_EMAIL,
6824+
currency: 'USD',
6825+
policyID,
6826+
makeMeAdmin: false,
6827+
});
67826828
await waitForBatchedUpdates();
67836829

67846830
const policyDraft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -6793,7 +6839,15 @@ describe('actions/Policy', () => {
67936839
await waitForBatchedUpdates();
67946840

67956841
const policyID = Policy.generatePolicyID();
6796-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.PERSONAL_SPEND}, WORKSPACE_NAME, ESH_ACCOUNT_ID, ESH_EMAIL, policyID, false, 'USD');
6842+
Policy.createDraftInitialWorkspace({
6843+
introSelected: {choice: CONST.ONBOARDING_CHOICES.PERSONAL_SPEND},
6844+
workspaceName: WORKSPACE_NAME,
6845+
currentUserAccountID: ESH_ACCOUNT_ID,
6846+
currentUserEmail: ESH_EMAIL,
6847+
currency: 'USD',
6848+
policyID,
6849+
makeMeAdmin: false,
6850+
});
67976851
await waitForBatchedUpdates();
67986852

67996853
const policyDraft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -6808,7 +6862,15 @@ describe('actions/Policy', () => {
68086862
await waitForBatchedUpdates();
68096863

68106864
const policyID = Policy.generatePolicyID();
6811-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM}, WORKSPACE_NAME, ESH_ACCOUNT_ID, ESH_EMAIL, policyID, true, 'USD');
6865+
Policy.createDraftInitialWorkspace({
6866+
introSelected: {choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
6867+
workspaceName: WORKSPACE_NAME,
6868+
currentUserAccountID: ESH_ACCOUNT_ID,
6869+
currentUserEmail: ESH_EMAIL,
6870+
currency: 'USD',
6871+
policyID,
6872+
makeMeAdmin: true,
6873+
});
68126874
await waitForBatchedUpdates();
68136875

68146876
const policyDraft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -6821,17 +6883,16 @@ describe('actions/Policy', () => {
68216883
await waitForBatchedUpdates();
68226884

68236885
const policyID = Policy.generatePolicyID();
6824-
Policy.createDraftInitialWorkspace(
6825-
{choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
6826-
WORKSPACE_NAME,
6827-
ESH_ACCOUNT_ID,
6828-
ESH_EMAIL,
6886+
Policy.createDraftInitialWorkspace({
6887+
introSelected: {choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
6888+
workspaceName: WORKSPACE_NAME,
6889+
currentUserAccountID: ESH_ACCOUNT_ID,
6890+
currentUserEmail: ESH_EMAIL,
6891+
currency: 'USD',
68296892
policyID,
6830-
false,
6831-
'USD',
6832-
undefined,
6833-
CONST.POLICY.TYPE.CORPORATE,
6834-
);
6893+
makeMeAdmin: false,
6894+
type: CONST.POLICY.TYPE.CORPORATE,
6895+
});
68356896
await waitForBatchedUpdates();
68366897

68376898
const policyDraft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -6844,7 +6905,15 @@ describe('actions/Policy', () => {
68446905
await waitForBatchedUpdates();
68456906

68466907
const policyID = Policy.generatePolicyID();
6847-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM}, WORKSPACE_NAME, ESH_ACCOUNT_ID, ESH_EMAIL, policyID, false, 'GBP');
6908+
Policy.createDraftInitialWorkspace({
6909+
introSelected: {choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
6910+
workspaceName: WORKSPACE_NAME,
6911+
currentUserAccountID: ESH_ACCOUNT_ID,
6912+
currentUserEmail: ESH_EMAIL,
6913+
currency: 'GBP',
6914+
policyID,
6915+
makeMeAdmin: false,
6916+
});
68486917
await waitForBatchedUpdates();
68496918

68506919
const policyDraft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -6871,7 +6940,15 @@ describe('actions/Policy', () => {
68716940
await waitForBatchedUpdates();
68726941

68736942
const policyID = Policy.generatePolicyID();
6874-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.LOOKING_AROUND}, WORKSPACE_NAME, ESH_ACCOUNT_ID, ESH_EMAIL, policyID, false, 'USD');
6943+
Policy.createDraftInitialWorkspace({
6944+
introSelected: {choice: CONST.ONBOARDING_CHOICES.LOOKING_AROUND},
6945+
workspaceName: WORKSPACE_NAME,
6946+
currentUserAccountID: ESH_ACCOUNT_ID,
6947+
currentUserEmail: ESH_EMAIL,
6948+
currency: 'USD',
6949+
policyID,
6950+
makeMeAdmin: false,
6951+
});
68756952
await waitForBatchedUpdates();
68766953

68776954
const policyDraft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);
@@ -6886,7 +6963,16 @@ describe('actions/Policy', () => {
68866963

68876964
const policyID = Policy.generatePolicyID();
68886965
const fakeFile = {uri: 'file://test-avatar.png', name: 'test-avatar.png'} as File;
6889-
Policy.createDraftInitialWorkspace({choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM}, WORKSPACE_NAME, ESH_ACCOUNT_ID, ESH_EMAIL, policyID, false, 'USD', fakeFile);
6966+
Policy.createDraftInitialWorkspace({
6967+
introSelected: {choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM},
6968+
workspaceName: WORKSPACE_NAME,
6969+
currentUserAccountID: ESH_ACCOUNT_ID,
6970+
currentUserEmail: ESH_EMAIL,
6971+
currency: 'USD',
6972+
policyID,
6973+
makeMeAdmin: false,
6974+
file: fakeFile,
6975+
});
68906976
await waitForBatchedUpdates();
68916977

68926978
const policyDraft = await getOnyxValue(`${ONYXKEYS.COLLECTION.POLICY_DRAFTS}${policyID}`);

0 commit comments

Comments
 (0)