From 26e6e0ab72478c614adf3a6cf4fb1efde3f26662 Mon Sep 17 00:00:00 2001
From: David Sehnal <david.sehnal@gmail.com>
Date: Mon, 28 Oct 2019 22:03:10 +0100
Subject: [PATCH] Task cancellation fix

---
 src/mol-plugin/context.ts           | 6 +++---
 src/mol-plugin/ui/task.tsx          | 2 +-
 src/mol-plugin/util/task-manager.ts | 6 +++---
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/mol-plugin/context.ts b/src/mol-plugin/context.ts
index d498b387c..9df4fdce2 100644
--- a/src/mol-plugin/context.ts
+++ b/src/mol-plugin/context.ts
@@ -11,7 +11,7 @@ import { CustomPropertyRegistry } from '../mol-model-props/common/custom-propert
 import { StructureRepresentationRegistry } from '../mol-repr/structure/registry';
 import { VolumeRepresentationRegistry } from '../mol-repr/volume/registry';
 import { State, StateTransform, StateTransformer } from '../mol-state';
-import { Task } from '../mol-task';
+import { Task, Progress } from '../mol-task';
 import { ColorTheme } from '../mol-theme/color';
 import { SizeTheme } from '../mol-theme/size';
 import { ThemeRegistryContext } from '../mol-theme/theme';
@@ -176,8 +176,8 @@ export class PluginContext {
         return this.tasks.run(task);
     }
 
-    requestTaskAbort(task: Task<any> | number, reason?: string) {
-        this.tasks.requestAbort(task, reason);
+    requestTaskAbort(progress: Progress, reason?: string) {
+        this.tasks.requestAbort(progress, reason);
     }
 
     dispose() {
diff --git a/src/mol-plugin/ui/task.tsx b/src/mol-plugin/ui/task.tsx
index e05171d70..81c73ff9b 100644
--- a/src/mol-plugin/ui/task.tsx
+++ b/src/mol-plugin/ui/task.tsx
@@ -34,7 +34,7 @@ export class BackgroundTaskProgress extends PluginUIComponent<{ }, { tracked: Or
 class ProgressEntry extends PluginUIComponent<{ event: TaskManager.ProgressEvent }> {
 
     abort = () => {
-        this.plugin.requestTaskAbort(this.props.event.id, 'User Request');
+        this.plugin.requestTaskAbort(this.props.event.progress, 'User Request');
     }
 
     render() {
diff --git a/src/mol-plugin/util/task-manager.ts b/src/mol-plugin/util/task-manager.ts
index 6bd257f26..dd8ce979e 100644
--- a/src/mol-plugin/util/task-manager.ts
+++ b/src/mol-plugin/util/task-manager.ts
@@ -22,7 +22,7 @@ class TaskManager {
 
     private track(internalId: number, taskId: number) {
         return (progress: Progress) => {
-            if (progress.canAbort && progress.requestAbort && this.abortRequests.has(taskId)) {
+            if (progress.canAbort && progress.requestAbort && this.abortRequests.has(progress.root.progress.taskId)) {
                 progress.requestAbort(this.abortRequests.get(taskId));
             }
             const elapsed = now() - progress.root.progress.startedTime;
@@ -45,8 +45,8 @@ class TaskManager {
         }
     }
 
-    requestAbort(task: Task<any> | number, reason?: string) {
-        this.abortRequests.set(typeof task === 'number' ? task : task.id, reason);
+    requestAbort(progress: Progress, reason?: string) {
+        this.abortRequests.set(progress.root.progress.taskId, reason);
     }
 
     dispose() {
-- 
GitLab