From b07ca3f3eed8b2f2d247c144fe3fe20badbc8475 Mon Sep 17 00:00:00 2001 From: Gareth Emslie Date: Mon, 13 Sep 2021 14:13:43 +0200 Subject: [PATCH 1/2] refactor extension loading --- src/block-duplicate-observer.ts | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/block-duplicate-observer.ts b/src/block-duplicate-observer.ts index a5376eb..1c87894 100644 --- a/src/block-duplicate-observer.ts +++ b/src/block-duplicate-observer.ts @@ -170,9 +170,11 @@ class duplicateObserver { // when changes are made wait a bit before triggering the validation if (this._timeout) clearTimeout(this._timeout); + console.log(`Setting timer for triggering validation.`); this._timeout = setTimeout(() => { + console.log(`Triggering validation.`); this.validateWorkItem(); - }, 1000); + }, 3000); } // Called when a new work item is being loaded in the UI @@ -203,16 +205,22 @@ class duplicateObserver { } } -SDK.init({ explicitNotifyLoaded: true }); -SDK.ready().then(async () => { +const main = async () =>{ + await SDK.init({ + explicitNotifyLoaded: true + }); + + // wait until we are ready + await SDK.ready(); + + // soft-cor.block-duplicate-work-items.block-duplicate-observer or block-duplicate-observer ?? + const contributionId : string = SDK.getContributionId(); // Get The ADO Services which we will need later const locationService: ILocationService = await SDK.getService(CommonServiceIds.LocationService); const projectService: IProjectPageService = await SDK.getService(CommonServiceIds.ProjectPageService); const workItemFormService: IWorkItemFormService = await SDK.getService(WorkItemTrackingServiceIds.WorkItemFormService); const observer: duplicateObserver = new duplicateObserver(workItemFormService, locationService, projectService); - // soft-cor.block-duplicate-work-items.block-duplicate-observer or block-duplicate-observer ?? - let contributionId : string = SDK.getContributionId(); console.log(contributionId); SDK.register(contributionId, () => { @@ -220,5 +228,9 @@ SDK.ready().then(async () => { return observer; }); + // notify we are loaded await SDK.notifyLoadSucceeded(); -}); \ No newline at end of file +}; + +// execute our entrypoint +main().catch((error) => { console.error(error); }); \ No newline at end of file From cd3411c57d942e64add502a4bc26df66e2c80809 Mon Sep 17 00:00:00 2001 From: Gareth Emslie Date: Mon, 13 Sep 2021 14:16:32 +0200 Subject: [PATCH 2/2] implement interface --- src/block-duplicate-observer.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/block-duplicate-observer.ts b/src/block-duplicate-observer.ts index 1c87894..a95d488 100644 --- a/src/block-duplicate-observer.ts +++ b/src/block-duplicate-observer.ts @@ -1,10 +1,10 @@ import * as SDK from "azure-devops-extension-sdk"; import { CommonServiceIds, getClient, IProjectInfo, IProjectPageService, ILocationService } from "azure-devops-extension-api"; -import { IWorkItemFormService, WorkItemQueryResult, WorkItemReference, WorkItemTrackingRestClient, WorkItemTrackingServiceIds } from "azure-devops-extension-api/WorkItemTracking"; +import { IWorkItemFormService, WorkItemQueryResult, WorkItemReference, WorkItemTrackingRestClient, WorkItemTrackingServiceIds, IWorkItemNotificationListener } from "azure-devops-extension-api/WorkItemTracking"; import * as stringSimilarity from "string-similarity"; import * as striptags from "striptags"; -class duplicateObserver { +class duplicateObserver implements IWorkItemNotificationListener { _similarityIndex : number = 0.8; _workItemFormService: IWorkItemFormService; _locationService: ILocationService; @@ -223,6 +223,7 @@ const main = async () =>{ console.log(contributionId); + // Register our contribution SDK.register(contributionId, () => { // Get the Work Item Form Service return observer;