Skip to content
This repository has been archived by the owner on Jun 2, 2023. It is now read-only.

Commit

Permalink
fix: Issue #694 (#711) Add tabs reconsile when merging profile.
Browse files Browse the repository at this point in the history
* fix: Issue #694
Add tabs reconsile when merging profile.
  • Loading branch information
genoud committed Aug 23, 2022
1 parent 308f702 commit d8b7507
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 23 deletions.
25 changes: 25 additions & 0 deletions src/impl/source/profiles/profileActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { Connection, Org, SfdxProject } from '@salesforce/core';
import ProfileRetriever from '../../metadata/retriever/profileRetriever';
import { ComponentSet, MetadataResolver, registry, SourceComponent } from '@salesforce/source-deploy-retrieve';
import { META_XML_SUFFIX } from '@salesforce/source-deploy-retrieve/lib/src/common';
import Profile from '../../metadata/schema';
import MetadataRetriever from '../../metadata/retriever/metadataRetriever';

export default abstract class ProfileActions {
protected conn: Connection;
Expand Down Expand Up @@ -137,6 +139,29 @@ export default abstract class ProfileActions {
});
return profileSourceFile;
}

protected async reconcileTabs(profileObj: Profile): Promise<void> {
let tabRetriever = new MetadataRetriever(this.org.getConnection(), registry.types.customtab.name);

if (profileObj.tabVisibilities !== undefined) {
if (!Array.isArray(profileObj.tabVisibilities)) {
profileObj.tabVisibilities = [profileObj.tabVisibilities];
}
let validArray = [];
for (let i = 0; i < profileObj.tabVisibilities.length; i++) {
let cmpObj = profileObj.tabVisibilities[i];
let exist = await tabRetriever.isComponentExistsInProjectDirectoryOrInOrg(cmpObj.tab);
if (exist) {
validArray.push(cmpObj);
}
}
Sfpowerkit.log(
`Tab Visibilities reduced from ${profileObj.tabVisibilities.length} to ${validArray.length}`,
LoggerLevel.DEBUG
);
profileObj.tabVisibilities = validArray;
}
}
}

export interface ProfileSourceFile {
Expand Down
2 changes: 2 additions & 0 deletions src/impl/source/profiles/profileMerge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,8 @@ export default class ProfileMerge extends ProfileActions {
let profileObj: Profile;
let indices = _.keys(_.pickBy(localProfiles, { name: profileObjFromServer.fullName }));
for (const index of indices) {
Sfpowerkit.log('Reconciling Tabs on retrieved profiles.', LoggerLevel.DEBUG);
await this.reconcileTabs(profileObjFromServer);
let filePath = localProfiles[index].path;
if (filePath && fs.existsSync(filePath)) {
SFPLogger.log('Merging profile ' + profileObjFromServer.fullName, LoggerLevel.DEBUG);
Expand Down
23 changes: 0 additions & 23 deletions src/impl/source/profiles/profileSync.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,27 +109,4 @@ export default class ProfileSync extends ProfileActions {
//Retun final status
return profileStatus;
}

private async reconcileTabs(profileObj: Profile): Promise<void> {
let tabRetriever = new MetadataRetriever(this.org.getConnection(), registry.types.customtab.name);

if (profileObj.tabVisibilities !== undefined) {
if (!Array.isArray(profileObj.tabVisibilities)) {
profileObj.tabVisibilities = [profileObj.tabVisibilities];
}
let validArray = [];
for (let i = 0; i < profileObj.tabVisibilities.length; i++) {
let cmpObj = profileObj.tabVisibilities[i];
let exist = await tabRetriever.isComponentExistsInProjectDirectoryOrInOrg(cmpObj.tab);
if (exist) {
validArray.push(cmpObj);
}
}
SFPLogger.log(
`Tab Visibilities reduced from ${profileObj.tabVisibilities.length} to ${validArray.length}`,
LoggerLevel.DEBUG
);
profileObj.tabVisibilities = validArray;
}
}
}

0 comments on commit d8b7507

Please sign in to comment.