Skip to content

Commit d554cee

Browse files
committed
abortStreamTasks
1 parent 8765ed1 commit d554cee

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -430,14 +430,15 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
430430
this._loadingResourcesBtn.setVisibility("visible");
431431
const filterData = this._searchBarFilter.getFilterData();
432432
const text = filterData.text ? encodeURIComponent(filterData.text) : "";
433-
const existingStream = osparc.store.StreamTasks.getInstance().getStreamTask("files_search", text);
433+
const streamTasks = osparc.store.StreamTasks.getInstance();
434+
const existingStream = streamTasks.getStreamTask("files_search", text);
434435
if (existingStream) {
435436
this.__fetchFilesFromStream(existingStream);
436437
} else {
437-
// TODO: abort last stream if it changed
438+
streamTasks.abortStreamTasks();
438439
const streamPromise = osparc.store.Data.getInstance().searchFiles(text);
439440
const pollingInterval = 2000;
440-
osparc.store.StreamTasks.getInstance().createStreamTask("files_search", text, streamPromise, pollingInterval)
441+
streamTasks.createStreamTask("files_search", text, streamPromise, pollingInterval)
441442
.then(newStream => this.__fetchFilesFromStream(newStream));
442443
}
443444
},

services/static-webserver/client/source/class/osparc/store/StreamTasks.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,20 @@ qx.Class.define("osparc.store.StreamTasks", {
5252
return tasks[internalId] || null;
5353
},
5454

55+
abortStreamTasks: function() {
56+
const tasks = this.getTasks();
57+
Object.values(tasks).forEach(stream => {
58+
if (stream.isEnd() === false) {
59+
stream.abortRequested();
60+
}
61+
// and remove
62+
this.__removeStreamTask(stream);
63+
});
64+
},
65+
5566
__addStreamTask: function(action, params, streamData, interval) {
5667
const internalId = osparc.store.StreamTasks.actionToInternalId(action, params);
5768
const stream = new osparc.data.StreamTask(streamData, interval);
58-
// stream.addListener("resultReceived", () => this.__removeStreamTask(stream), this);
5969
stream.addListener("taskAborted", () => this.__removeStreamTask(stream), this);
6070
const tasks = this.getTasks();
6171
tasks[internalId] = stream;
@@ -64,9 +74,9 @@ qx.Class.define("osparc.store.StreamTasks", {
6474

6575
__removeStreamTask: function(stream) {
6676
const tasks = this.getTasks();
67-
const index = tasks.findIndex(t => t.getTaskId() === stream.getTaskId());
68-
if (index > -1) {
69-
tasks.splice(index, 1);
77+
const internalId = Object.keys(tasks).find(key => tasks[key] === stream);
78+
if (internalId) {
79+
delete tasks[internalId];
7080
}
7181
},
7282
}

0 commit comments

Comments
 (0)