Skip to content

Commit 81855b4

Browse files
authored
[MDiff] Hide discard actions for imported comparison (#1384)
[MDiff] Enhance metadata diff functionality - ✨ Do not show discard actions for imported comparison - ✅ Extend tests to verify behavior for imported metadata diff items -Priyanshu
1 parent 95483db commit 81855b4

File tree

7 files changed

+57
-5
lines changed

7 files changed

+57
-5
lines changed

package.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1508,6 +1508,11 @@
15081508
"when": "view == microsoft.powerplatform.pages.actionsHub && viewItem == metadataDiffFile && microsoft.powerplatform.pages.metadataDiffEnabled",
15091509
"group": "inline@1"
15101510
},
1511+
{
1512+
"command": "microsoft.powerplatform.pages.actionsHub.metadataDiff.openFile",
1513+
"when": "view == microsoft.powerplatform.pages.actionsHub && viewItem == metadataDiffFileImported && microsoft.powerplatform.pages.metadataDiffEnabled",
1514+
"group": "inline@1"
1515+
},
15111516
{
15121517
"command": "microsoft.powerplatform.pages.actionsHub.metadataDiff.discardFile",
15131518
"when": "view == microsoft.powerplatform.pages.actionsHub && viewItem == metadataDiffFile && microsoft.powerplatform.pages.metadataDiffEnabled",
@@ -1528,6 +1533,11 @@
15281533
"when": "view == microsoft.powerplatform.pages.actionsHub && viewItem == metadataDiffFile && microsoft.powerplatform.pages.metadataDiffEnabled",
15291534
"group": "fileAction@1"
15301535
},
1536+
{
1537+
"command": "microsoft.powerplatform.pages.actionsHub.metadataDiff.openFile",
1538+
"when": "view == microsoft.powerplatform.pages.actionsHub && viewItem == metadataDiffFileImported && microsoft.powerplatform.pages.metadataDiffEnabled",
1539+
"group": "fileAction@1"
1540+
},
15311541
{
15321542
"command": "microsoft.powerplatform.pages.actionsHub.metadataDiff.discardFile",
15331543
"when": "view == microsoft.powerplatform.pages.actionsHub && viewItem == metadataDiffFile && microsoft.powerplatform.pages.metadataDiffEnabled",

src/client/power-pages/actions-hub/Constants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ export const Constants = {
2424
METADATA_DIFF_SITE: "metadataDiffSite",
2525
METADATA_DIFF_SITE_IMPORTED: "metadataDiffSiteImported",
2626
METADATA_DIFF_FOLDER: "metadataDiffFolder",
27+
METADATA_DIFF_FOLDER_IMPORTED: "metadataDiffFolderImported",
2728
METADATA_DIFF_FILE: "metadataDiffFile",
29+
METADATA_DIFF_FILE_IMPORTED: "metadataDiffFileImported",
2830
},
2931
Commands: {
3032
METADATA_DIFF_OPEN_FILE: "microsoft.powerplatform.pages.actionsHub.metadataDiff.openFile",

src/client/power-pages/actions-hub/tree-items/metadata-diff/MetadataDiffFileTreeItem.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,17 @@ export class MetadataDiffFileTreeItem extends ActionsHubTreeItem {
3434
// Build description based on view mode
3535
const description = MetadataDiffFileTreeItem.buildDescription(comparisonResult);
3636

37+
// Use different context value for imported items to hide discard option
38+
const contextValue = isImported
39+
? Constants.ContextValues.METADATA_DIFF_FILE_IMPORTED
40+
: Constants.ContextValues.METADATA_DIFF_FILE;
41+
3742
super(
3843
fileName,
3944
vscode.TreeItemCollapsibleState.None,
4045
// Pass empty ThemeIcon - it will be overridden by resourceUri
4146
new vscode.ThemeIcon("file"),
42-
Constants.ContextValues.METADATA_DIFF_FILE,
47+
contextValue,
4348
description
4449
);
4550
this.comparisonResult = comparisonResult;

src/client/power-pages/actions-hub/tree-items/metadata-diff/MetadataDiffFolderTreeItem.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,24 @@ export class MetadataDiffFolderTreeItem extends ActionsHubTreeItem {
1515
public readonly childrenMap: Map<string, MetadataDiffFolderTreeItem | MetadataDiffFileTreeItem>;
1616
private readonly _siteName: string;
1717
private readonly _folderPath: string;
18+
private readonly _isImported: boolean;
19+
20+
constructor(folderName: string, siteName: string, folderPath: string, isImported: boolean = false) {
21+
// Use different context value for imported items to hide discard option
22+
const contextValue = isImported
23+
? Constants.ContextValues.METADATA_DIFF_FOLDER_IMPORTED
24+
: Constants.ContextValues.METADATA_DIFF_FOLDER;
1825

19-
constructor(folderName: string, siteName: string, folderPath: string) {
2026
super(
2127
folderName,
2228
vscode.TreeItemCollapsibleState.Expanded,
2329
Constants.Icons.METADATA_DIFF_FOLDER,
24-
Constants.ContextValues.METADATA_DIFF_FOLDER
30+
contextValue
2531
);
2632
this.childrenMap = new Map();
2733
this._siteName = siteName;
2834
this._folderPath = folderPath;
35+
this._isImported = isImported;
2936
}
3037

3138
public getChildren(): ActionsHubTreeItem[] {
@@ -61,6 +68,10 @@ export class MetadataDiffFolderTreeItem extends ActionsHubTreeItem {
6168
return this._folderPath;
6269
}
6370

71+
public get isImported(): boolean {
72+
return this._isImported;
73+
}
74+
6475
/**
6576
* Recursively collects all file tree items under this folder
6677
*/

src/client/power-pages/actions-hub/tree-items/metadata-diff/MetadataDiffSiteTreeItem.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,15 @@ export class MetadataDiffSiteTreeItem extends ActionsHubTreeItem {
138138
// Look in root children
139139
let folder = rootChildren.get(folderName) as MetadataDiffFolderTreeItem | undefined;
140140
if (!folder) {
141-
folder = new MetadataDiffFolderTreeItem(folderName, this._siteName, currentPath);
141+
folder = new MetadataDiffFolderTreeItem(folderName, this._siteName, currentPath, this._isImported);
142142
rootChildren.set(folderName, folder);
143143
}
144144
currentFolder = folder;
145145
} else if (currentFolder) {
146146
// Look in current folder's children
147147
let folder = currentFolder.childrenMap.get(folderName) as MetadataDiffFolderTreeItem | undefined;
148148
if (!folder) {
149-
folder = new MetadataDiffFolderTreeItem(folderName, this._siteName, currentPath);
149+
folder = new MetadataDiffFolderTreeItem(folderName, this._siteName, currentPath, this._isImported);
150150
currentFolder.childrenMap.set(folderName, folder);
151151
}
152152
currentFolder = folder;

src/client/test/Integration/power-pages/actions-hub/tree-items/metadata-diff/MetadataDiffFileTreeItem.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ describe("MetadataDiffFileTreeItem", () => {
5656

5757
expect(treeItem.contextValue).to.equal(Constants.ContextValues.METADATA_DIFF_FILE);
5858
});
59+
60+
it("should have imported context value when isImported is true", () => {
61+
const treeItem = new MetadataDiffFileTreeItem(mockComparisonResult, "Test Site", true);
62+
63+
expect(treeItem.contextValue).to.equal(Constants.ContextValues.METADATA_DIFF_FILE_IMPORTED);
64+
});
5965
});
6066

6167
describe("resourceUri", () => {

src/client/test/Integration/power-pages/actions-hub/tree-items/metadata-diff/MetadataDiffFolderTreeItem.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ describe("MetadataDiffFolderTreeItem", () => {
4343
expect(treeItem.contextValue).to.equal(Constants.ContextValues.METADATA_DIFF_FOLDER);
4444
});
4545

46+
it("should have imported context value when isImported is true", () => {
47+
const treeItem = new MetadataDiffFolderTreeItem("folder", "Test Site", "folder", true);
48+
49+
expect(treeItem.contextValue).to.equal(Constants.ContextValues.METADATA_DIFF_FOLDER_IMPORTED);
50+
});
51+
4652
it("should have empty children map initially", () => {
4753
const treeItem = new MetadataDiffFolderTreeItem("folder", "Test Site", "folder");
4854

@@ -55,6 +61,18 @@ describe("MetadataDiffFolderTreeItem", () => {
5561
expect(treeItem.siteName).to.equal("Test Site");
5662
expect(treeItem.folderPath).to.equal("root/folder");
5763
});
64+
65+
it("should have isImported default to false", () => {
66+
const treeItem = new MetadataDiffFolderTreeItem("folder", "Test Site", "folder");
67+
68+
expect(treeItem.isImported).to.be.false;
69+
});
70+
71+
it("should store isImported when provided", () => {
72+
const treeItem = new MetadataDiffFolderTreeItem("folder", "Test Site", "folder", true);
73+
74+
expect(treeItem.isImported).to.be.true;
75+
});
5876
});
5977

6078
describe("childrenMap", () => {

0 commit comments

Comments
 (0)