From 745251241b27a6d9e1cb367028a217223dee4ca6 Mon Sep 17 00:00:00 2001 From: Nikolai Imbirev Date: Tue, 16 Nov 2021 12:25:58 +0300 Subject: [PATCH] update deletion command to refresh all in the tree Signed-off-by: Nikolai Imbirev --- .../__tests__/__unit__/job/actions.unit.test.ts | 6 +++--- packages/zowe-explorer/src/extension.ts | 16 +++++++++++++--- packages/zowe-explorer/src/job/actions.ts | 11 +++-------- packages/zowe-explorer/src/shared/refresh.ts | 1 - packages/zowe-explorer/src/uss/actions.ts | 1 + 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/zowe-explorer/__tests__/__unit__/job/actions.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/job/actions.unit.test.ts index db815e515a..033a7aaf62 100644 --- a/packages/zowe-explorer/__tests__/__unit__/job/actions.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/job/actions.unit.test.ts @@ -35,6 +35,7 @@ import * as globals from "../../../src/globals"; import { createDatasetSessionNode, createDatasetTree } from "../../../__mocks__/mockCreators/datasets"; import { Profiles } from "../../../src/Profiles"; import * as SpoolProvider from "../../../src/SpoolProvider"; +import * as refreshActions from "../../../src/shared/refresh"; const activeTextEditorDocument = jest.fn(); @@ -1015,6 +1016,7 @@ describe("job deletion command", () => { configurable: true, }); warningDialogStub.mockResolvedValueOnce("Delete"); + jest.spyOn(refreshActions, "refreshAll"); const jobsProvider = createJobsTree(session, job, profile, createTreeView()); jobsProvider.delete.mockResolvedValueOnce(Promise.resolve()); const jobNode = new Job("jobtest", vscode.TreeItemCollapsibleState.Expanded, null, session, job, profile); @@ -1022,7 +1024,7 @@ describe("job deletion command", () => { await jobActions.deleteCommand(jobsProvider, jobNode); // assert expect(mocked(jobsProvider.delete)).toBeCalledWith(jobNode); - expect(mocked(jobsProvider.refreshElement)).toBeCalledWith(jobNode.getSessionNode()); + expect(refreshActions.refreshAll).toHaveBeenCalledWith(jobsProvider); }); it("should not delete a job in case user cancelled deletion", async () => { @@ -1040,7 +1042,6 @@ describe("job deletion command", () => { await jobActions.deleteCommand(jobsProvider, jobNode); // assert expect(mocked(jobsProvider.delete)).not.toBeCalled(); - expect(mocked(jobsProvider.refreshElement)).not.toBeCalled(); }); it("should not refresh the current job session after an error during job deletion", async () => { @@ -1058,6 +1059,5 @@ describe("job deletion command", () => { await jobActions.deleteCommand(jobsProvider, jobNode); // assert expect(mocked(jobsProvider.delete)).toBeCalledWith(jobNode); - expect(mocked(jobsProvider.refreshElement)).not.toBeCalled(); }); }); diff --git a/packages/zowe-explorer/src/extension.ts b/packages/zowe-explorer/src/extension.ts index e2fd3a3d68..7813ca9e79 100644 --- a/packages/zowe-explorer/src/extension.ts +++ b/packages/zowe-explorer/src/extension.ts @@ -138,6 +138,7 @@ export async function activate(context: vscode.ExtensionContext): Promise datasetProvider.addFavorite(node)); - vscode.commands.registerCommand("zowe.ds.refreshAll", () => refreshActions.refreshAll(datasetProvider)); + vscode.commands.registerCommand("zowe.ds.refreshAll", async () => { + await Profiles.getInstance().refresh(ZoweExplorerApiRegister.getInstance()); + await refreshActions.refreshAll(datasetProvider); + }); vscode.commands.registerCommand("zowe.ds.refreshNode", (node) => dsActions.refreshPS(node)); vscode.commands.registerCommand("zowe.ds.refreshDataset", (node) => dsActions.refreshDataset(node, datasetProvider) @@ -295,7 +299,10 @@ function initUSSProvider(context: vscode.ExtensionContext, ussFileProvider: IZow vscode.commands.registerCommand("zowe.uss.addSession", async () => ussFileProvider.createZoweSession(ussFileProvider) ); - vscode.commands.registerCommand("zowe.uss.refreshAll", () => refreshActions.refreshAll(ussFileProvider)); + vscode.commands.registerCommand("zowe.uss.refreshAll", async () => { + await Profiles.getInstance().refresh(ZoweExplorerApiRegister.getInstance()); + await refreshActions.refreshAll(ussFileProvider); + }); vscode.commands.registerCommand("zowe.uss.refreshUSS", (node: IZoweUSSTreeNode) => node.refreshUSS()); vscode.commands.registerCommand("zowe.uss.refreshUSSInTree", (node: IZoweUSSTreeNode) => ussActions.refreshUSSInTree(node, ussFileProvider) @@ -376,7 +383,10 @@ function initJobsProvider(context: vscode.ExtensionContext, jobsProvider: IZoweT vscode.commands.registerCommand("zowe.jobs.refreshJobsServer", async (job) => jobActions.refreshJobsServer(job, jobsProvider) ); - vscode.commands.registerCommand("zowe.jobs.refreshAllJobs", async () => refreshActions.refreshAll(jobsProvider)); + vscode.commands.registerCommand("zowe.jobs.refreshAllJobs", async () => { + await Profiles.getInstance().refresh(ZoweExplorerApiRegister.getInstance()); + await refreshActions.refreshAll(jobsProvider); + }); vscode.commands.registerCommand("zowe.jobs.refreshJob", async (job) => jobActions.refreshJob(job, jobsProvider)); vscode.commands.registerCommand("zowe.jobs.addJobsSession", () => jobsProvider.createZoweSession(jobsProvider)); vscode.commands.registerCommand("zowe.jobs.setOwner", (job) => jobActions.setOwner(job, jobsProvider)); diff --git a/packages/zowe-explorer/src/job/actions.ts b/packages/zowe-explorer/src/job/actions.ts index 4f259d5425..bb33a5bec4 100644 --- a/packages/zowe-explorer/src/job/actions.ts +++ b/packages/zowe-explorer/src/job/actions.ts @@ -20,6 +20,7 @@ import * as nls from "vscode-nls"; import { toUniqueJobFileUri } from "../SpoolProvider"; import { IProfileLoaded } from "@zowe/imperative"; import * as globals from "../globals"; +import { refreshAll as refreshAllJobs } from "../shared/refresh"; // Set up localization nls.config({ @@ -288,8 +289,7 @@ const deleteSingleJob = async (job: IZoweJobTreeNode, jobsProvider: IZoweTree result !== undefined); if (deletedJobs.length) { - await Promise.all( - deletedJobs - .map((jobNode) => jobNode.getSessionNode()) - .filter((jobSession, index, jobSessions) => jobSessions.indexOf(jobSession) === index) - .map((jobSession) => refreshJobsServer(jobSession, jobsProvider)) - ); + await refreshAllJobs(jobsProvider); vscode.window.showInformationMessage( localize( "deleteCommand.multipleJobs", diff --git a/packages/zowe-explorer/src/shared/refresh.ts b/packages/zowe-explorer/src/shared/refresh.ts index c455f62024..d70e487f8c 100644 --- a/packages/zowe-explorer/src/shared/refresh.ts +++ b/packages/zowe-explorer/src/shared/refresh.ts @@ -25,7 +25,6 @@ import * as contextually from "../shared/context"; * @param {IZoweTree} treeProvider */ export async function refreshAll(treeProvider: IZoweTree) { - await Profiles.getInstance().refresh(ZoweExplorerApiRegister.getInstance()); treeProvider.mSessionNodes.forEach(async (sessNode) => { const setting = (await PersistentFilters.getDirectValue("Zowe-Automatic-Validation")) as boolean; if (contextually.isSessionNotFav(sessNode)) { diff --git a/packages/zowe-explorer/src/uss/actions.ts b/packages/zowe-explorer/src/uss/actions.ts index 4877bbb811..70909e3ae4 100644 --- a/packages/zowe-explorer/src/uss/actions.ts +++ b/packages/zowe-explorer/src/uss/actions.ts @@ -69,6 +69,7 @@ export async function createUSSNode( filePath = `${filePath}/${name}`; await ZoweExplorerApiRegister.getUssApi(node.getProfile()).create(filePath, nodeType); if (isTopLevel) { + await Profiles.getInstance().refresh(ZoweExplorerApiRegister.getInstance()); refreshAll(ussFileProvider); } else { ussFileProvider.refreshElement(node);