From bab0977996fe05424ba9d40701cafb179dfe8dab Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Thu, 16 May 2024 11:44:17 -0700 Subject: [PATCH 01/10] feat: add new parameter to API command --- src/libs/API/parameters/SetPolicyTagsEnabled.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libs/API/parameters/SetPolicyTagsEnabled.ts b/src/libs/API/parameters/SetPolicyTagsEnabled.ts index 86720b84bf8b..fad7229831fd 100644 --- a/src/libs/API/parameters/SetPolicyTagsEnabled.ts +++ b/src/libs/API/parameters/SetPolicyTagsEnabled.ts @@ -5,6 +5,11 @@ type SetPolicyTagsEnabled = { * Array<{name: string; enabled: boolean}> */ tags: string; + /** + * When the tags are imported as multi level tags, the index of the top + * most tag list item + */ + tagListIndex?: number; }; export default SetPolicyTagsEnabled; From 48457f29cb9b47c2e7d8c615163a88b83ddeeb14 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Thu, 16 May 2024 11:44:53 -0700 Subject: [PATCH 02/10] feat: pass new param to the API command --- src/libs/actions/Policy.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/Policy.ts b/src/libs/actions/Policy.ts index 3e09524e1dd1..e3bf6f3293d2 100644 --- a/src/libs/actions/Policy.ts +++ b/src/libs/actions/Policy.ts @@ -54,6 +54,7 @@ import type { UpdateWorkspaceGeneralSettingsParams, UpdateWorkspaceMembersRoleParams, } from '@libs/API/parameters'; +import type SetPolicyTagsEnabled from '@libs/API/parameters/SetPolicyTagsEnabled'; import type UpdatePolicyAddressParams from '@libs/API/parameters/UpdatePolicyAddressParams'; import {READ_COMMANDS, WRITE_COMMANDS} from '@libs/API/types'; import DateUtils from '@libs/DateUtils'; @@ -3466,7 +3467,7 @@ function createPolicyTag(policyID: string, tagName: string) { API.write(WRITE_COMMANDS.CREATE_POLICY_TAG, parameters, onyxData); } -function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record) { +function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record, tagListIndex?: number) { const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[0] ?? {}; const onyxData: OnyxData = { @@ -3547,9 +3548,10 @@ function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record tagsToUpdate[key])), + tagListIndex, }; API.write(WRITE_COMMANDS.SET_POLICY_TAGS_ENABLED, parameters, onyxData); From 11960256712c950f558ca342c3e8593eb221980a Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Thu, 16 May 2024 11:45:34 -0700 Subject: [PATCH 03/10] feat: pass the index of the parent tag list item --- src/pages/workspace/tags/WorkspaceViewTagsPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/tags/WorkspaceViewTagsPage.tsx b/src/pages/workspace/tags/WorkspaceViewTagsPage.tsx index 09ba086e3a14..39485f45f0a8 100644 --- a/src/pages/workspace/tags/WorkspaceViewTagsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceViewTagsPage.tsx @@ -174,7 +174,7 @@ function WorkspaceViewTagsPage({route}: WorkspaceViewTagsProps) { value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.DISABLE, onSelected: () => { setSelectedTags({}); - Policy.setWorkspaceTagEnabled(policyID, tagsToDisable); + Policy.setWorkspaceTagEnabled(policyID, tagsToDisable, route.params.orderWeight); }, }); } @@ -186,7 +186,7 @@ function WorkspaceViewTagsPage({route}: WorkspaceViewTagsProps) { value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.ENABLE, onSelected: () => { setSelectedTags({}); - Policy.setWorkspaceTagEnabled(policyID, tagsToEnable); + Policy.setWorkspaceTagEnabled(policyID, tagsToEnable, route.params.orderWeight); }, }); } From b438c327037216b0a38b4e70d43b499824a427ad Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Thu, 16 May 2024 13:19:08 -0700 Subject: [PATCH 04/10] fix: use index to get the correct list of tags --- src/libs/actions/Policy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/Policy.ts b/src/libs/actions/Policy.ts index e3bf6f3293d2..2acaf3de6d4b 100644 --- a/src/libs/actions/Policy.ts +++ b/src/libs/actions/Policy.ts @@ -3468,7 +3468,7 @@ function createPolicyTag(policyID: string, tagName: string) { } function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record, tagListIndex?: number) { - const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[0] ?? {}; + const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[tagListIndex] ?? {}; const onyxData: OnyxData = { optimisticData: [ From 611b3e57e17b3f24dfaff08145de92c959df8478 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Mon, 20 May 2024 17:30:06 -0700 Subject: [PATCH 05/10] chore: make a prop required --- src/libs/actions/Policy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/Policy.ts b/src/libs/actions/Policy.ts index 2acaf3de6d4b..08499edc7e5d 100644 --- a/src/libs/actions/Policy.ts +++ b/src/libs/actions/Policy.ts @@ -3467,7 +3467,7 @@ function createPolicyTag(policyID: string, tagName: string) { API.write(WRITE_COMMANDS.CREATE_POLICY_TAG, parameters, onyxData); } -function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record, tagListIndex?: number) { +function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record, tagListIndex: number) { const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[tagListIndex] ?? {}; const onyxData: OnyxData = { From a7064b4906a22b29b12c7f0f627c8c1738860420 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Mon, 20 May 2024 17:31:12 -0700 Subject: [PATCH 06/10] chore: make API parameter required --- src/libs/API/parameters/SetPolicyTagsEnabled.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/API/parameters/SetPolicyTagsEnabled.ts b/src/libs/API/parameters/SetPolicyTagsEnabled.ts index fad7229831fd..67928a3227e3 100644 --- a/src/libs/API/parameters/SetPolicyTagsEnabled.ts +++ b/src/libs/API/parameters/SetPolicyTagsEnabled.ts @@ -9,7 +9,7 @@ type SetPolicyTagsEnabled = { * When the tags are imported as multi level tags, the index of the top * most tag list item */ - tagListIndex?: number; + tagListIndex: number; }; export default SetPolicyTagsEnabled; From 788f237443cc067001f5b89b5b71f6cebda43c71 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 22 May 2024 10:15:53 -0700 Subject: [PATCH 07/10] fix: pass missing arguments --- src/pages/workspace/tags/TagSettingsPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/tags/TagSettingsPage.tsx b/src/pages/workspace/tags/TagSettingsPage.tsx index 1f9d440108ae..abbccc321827 100644 --- a/src/pages/workspace/tags/TagSettingsPage.tsx +++ b/src/pages/workspace/tags/TagSettingsPage.tsx @@ -66,7 +66,7 @@ function TagSettingsPage({route, policyTags, navigation}: TagSettingsPageProps) }; const updateWorkspaceTagEnabled = (value: boolean) => { - setWorkspaceTagEnabled(route.params.policyID, {[currentPolicyTag.name]: {name: currentPolicyTag.name, enabled: value}}); + setWorkspaceTagEnabled(route.params.policyID, {[currentPolicyTag.name]: {name: currentPolicyTag.name, enabled: value}}, policyTag.orderWeight); }; const navigateToEditTag = () => { From e1ec259bae3cb582d81956d3e72bf9ced46c6917 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 22 May 2024 10:16:27 -0700 Subject: [PATCH 08/10] pass the default tag list index --- src/pages/workspace/tags/WorkspaceTagsPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/tags/WorkspaceTagsPage.tsx b/src/pages/workspace/tags/WorkspaceTagsPage.tsx index eca339be0fc4..a1299b6d4406 100644 --- a/src/pages/workspace/tags/WorkspaceTagsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceTagsPage.tsx @@ -238,7 +238,7 @@ function WorkspaceTagsPage({route}: WorkspaceTagsPageProps) { value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.DISABLE, onSelected: () => { setSelectedTags({}); - Policy.setWorkspaceTagEnabled(policyID, tagsToDisable); + Policy.setWorkspaceTagEnabled(policyID, tagsToDisable, 0); }, }); } @@ -250,7 +250,7 @@ function WorkspaceTagsPage({route}: WorkspaceTagsPageProps) { value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.ENABLE, onSelected: () => { setSelectedTags({}); - Policy.setWorkspaceTagEnabled(policyID, tagsToEnable); + Policy.setWorkspaceTagEnabled(policyID, tagsToEnable, 0); }, }); } From 8ebd1a9af8f465360a747d8df72e9b899fc4f8d2 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 22 May 2024 10:16:34 -0700 Subject: [PATCH 09/10] fix: test --- tests/actions/PolicyTagTest.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/actions/PolicyTagTest.ts b/tests/actions/PolicyTagTest.ts index 74ea13f3d139..bb2a56da488d 100644 --- a/tests/actions/PolicyTagTest.ts +++ b/tests/actions/PolicyTagTest.ts @@ -395,7 +395,7 @@ describe('actions/Policy', () => { Onyx.set(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${fakePolicy.id}`, fakePolicyTags); }) .then(() => { - Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate); + Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate, fakePolicyTags[0].orderWeight); return waitForBatchedUpdates(); }) .then( @@ -468,7 +468,7 @@ describe('actions/Policy', () => { .then(() => { mockFetch?.fail?.(); - Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate); + Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate, fakePolicyTags[0].orderWeight); return waitForBatchedUpdates(); }) .then(mockFetch?.resume) From 555fd586457a161e1807467d3d535080b767225c Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 22 May 2024 13:31:43 -0700 Subject: [PATCH 10/10] pass default index manually --- tests/actions/PolicyTagTest.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/actions/PolicyTagTest.ts b/tests/actions/PolicyTagTest.ts index bb2a56da488d..a0982a78b70a 100644 --- a/tests/actions/PolicyTagTest.ts +++ b/tests/actions/PolicyTagTest.ts @@ -395,7 +395,7 @@ describe('actions/Policy', () => { Onyx.set(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${fakePolicy.id}`, fakePolicyTags); }) .then(() => { - Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate, fakePolicyTags[0].orderWeight); + Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate, 0); return waitForBatchedUpdates(); }) .then( @@ -468,7 +468,7 @@ describe('actions/Policy', () => { .then(() => { mockFetch?.fail?.(); - Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate, fakePolicyTags[0].orderWeight); + Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate, 0); return waitForBatchedUpdates(); }) .then(mockFetch?.resume)