Skip to content

Commit f827cdb

Browse files
authored
Merge pull request #42315 from Expensify/hayata-call-api-for-multi-level-tags
Enable / Disable multi level tags
2 parents c684b64 + 555fd58 commit f827cdb

File tree

6 files changed

+17
-10
lines changed

6 files changed

+17
-10
lines changed

src/libs/API/parameters/SetPolicyTagsEnabled.ts

+5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ type SetPolicyTagsEnabled = {
55
* Array<{name: string; enabled: boolean}>
66
*/
77
tags: string;
8+
/**
9+
* When the tags are imported as multi level tags, the index of the top
10+
* most tag list item
11+
*/
12+
tagListIndex: number;
813
};
914

1015
export default SetPolicyTagsEnabled;

src/libs/actions/Policy.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ import type {
5454
UpdateWorkspaceGeneralSettingsParams,
5555
UpdateWorkspaceMembersRoleParams,
5656
} from '@libs/API/parameters';
57+
import type SetPolicyTagsEnabled from '@libs/API/parameters/SetPolicyTagsEnabled';
5758
import type UpdatePolicyAddressParams from '@libs/API/parameters/UpdatePolicyAddressParams';
5859
import {READ_COMMANDS, WRITE_COMMANDS} from '@libs/API/types';
5960
import DateUtils from '@libs/DateUtils';
@@ -3466,8 +3467,8 @@ function createPolicyTag(policyID: string, tagName: string) {
34663467
API.write(WRITE_COMMANDS.CREATE_POLICY_TAG, parameters, onyxData);
34673468
}
34683469

3469-
function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record<string, {name: string; enabled: boolean}>) {
3470-
const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[0] ?? {};
3470+
function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record<string, {name: string; enabled: boolean}>, tagListIndex: number) {
3471+
const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[tagListIndex] ?? {};
34713472

34723473
const onyxData: OnyxData = {
34733474
optimisticData: [
@@ -3547,9 +3548,10 @@ function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record<string, {
35473548
],
35483549
};
35493550

3550-
const parameters = {
3551+
const parameters: SetPolicyTagsEnabled = {
35513552
policyID,
35523553
tags: JSON.stringify(Object.keys(tagsToUpdate).map((key) => tagsToUpdate[key])),
3554+
tagListIndex,
35533555
};
35543556

35553557
API.write(WRITE_COMMANDS.SET_POLICY_TAGS_ENABLED, parameters, onyxData);

src/pages/workspace/tags/TagSettingsPage.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ function TagSettingsPage({route, policyTags, navigation}: TagSettingsPageProps)
6666
};
6767

6868
const updateWorkspaceTagEnabled = (value: boolean) => {
69-
setWorkspaceTagEnabled(route.params.policyID, {[currentPolicyTag.name]: {name: currentPolicyTag.name, enabled: value}});
69+
setWorkspaceTagEnabled(route.params.policyID, {[currentPolicyTag.name]: {name: currentPolicyTag.name, enabled: value}}, policyTag.orderWeight);
7070
};
7171

7272
const navigateToEditTag = () => {

src/pages/workspace/tags/WorkspaceTagsPage.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ function WorkspaceTagsPage({route}: WorkspaceTagsPageProps) {
238238
value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.DISABLE,
239239
onSelected: () => {
240240
setSelectedTags({});
241-
Policy.setWorkspaceTagEnabled(policyID, tagsToDisable);
241+
Policy.setWorkspaceTagEnabled(policyID, tagsToDisable, 0);
242242
},
243243
});
244244
}
@@ -250,7 +250,7 @@ function WorkspaceTagsPage({route}: WorkspaceTagsPageProps) {
250250
value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.ENABLE,
251251
onSelected: () => {
252252
setSelectedTags({});
253-
Policy.setWorkspaceTagEnabled(policyID, tagsToEnable);
253+
Policy.setWorkspaceTagEnabled(policyID, tagsToEnable, 0);
254254
},
255255
});
256256
}

src/pages/workspace/tags/WorkspaceViewTagsPage.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ function WorkspaceViewTagsPage({route}: WorkspaceViewTagsProps) {
174174
value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.DISABLE,
175175
onSelected: () => {
176176
setSelectedTags({});
177-
Policy.setWorkspaceTagEnabled(policyID, tagsToDisable);
177+
Policy.setWorkspaceTagEnabled(policyID, tagsToDisable, route.params.orderWeight);
178178
},
179179
});
180180
}
@@ -186,7 +186,7 @@ function WorkspaceViewTagsPage({route}: WorkspaceViewTagsProps) {
186186
value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.ENABLE,
187187
onSelected: () => {
188188
setSelectedTags({});
189-
Policy.setWorkspaceTagEnabled(policyID, tagsToEnable);
189+
Policy.setWorkspaceTagEnabled(policyID, tagsToEnable, route.params.orderWeight);
190190
},
191191
});
192192
}

tests/actions/PolicyTagTest.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ describe('actions/Policy', () => {
395395
Onyx.set(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${fakePolicy.id}`, fakePolicyTags);
396396
})
397397
.then(() => {
398-
Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate);
398+
Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate, 0);
399399
return waitForBatchedUpdates();
400400
})
401401
.then(
@@ -468,7 +468,7 @@ describe('actions/Policy', () => {
468468
.then(() => {
469469
mockFetch?.fail?.();
470470

471-
Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate);
471+
Policy.setWorkspaceTagEnabled(fakePolicy.id, tagsToUpdate, 0);
472472
return waitForBatchedUpdates();
473473
})
474474
.then(mockFetch?.resume)

0 commit comments

Comments
 (0)