From 00475f152bd75f77cdd45ca42b573e0e6222ae04 Mon Sep 17 00:00:00 2001 From: Jon Snow Date: Wed, 16 Dec 2020 00:13:11 -0300 Subject: [PATCH 1/2] don't request to update a task's state if the desired state matches the task is current state --- src/scripts/controllers/main.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/scripts/controllers/main.js b/src/scripts/controllers/main.js index 5c536a0d..58b40c2c 100644 --- a/src/scripts/controllers/main.js +++ b/src/scripts/controllers/main.js @@ -138,7 +138,18 @@ }; $scope.changeTasksState = function (state) { - var gids = $rootScope.taskContext.getSelectedTaskIds(); + var tasks = $rootScope.taskContext.getSelectedTasks(); + var gids = []; + + var task = null; + for (let index = 0; index < tasks.length; index++) { + task = tasks[index]; + if (state == 'start' && task.status != 'active' && task.status != 'waiting') { + gids.push(task.gid) + }else if (state == 'pause' && task.status != 'paused'){ + gids.push(task.gid); + } + } if (!gids || gids.length < 1) { return; From 15542898464aac134ca5d0d7d3b57a084ba7a353 Mon Sep 17 00:00:00 2001 From: Jon Snow Date: Wed, 16 Dec 2020 00:14:13 -0300 Subject: [PATCH 2/2] use multicall when performing batch actions instead of making a request per task --- src/scripts/services/aria2RpcService.js | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/scripts/services/aria2RpcService.js b/src/scripts/services/aria2RpcService.js index 960b40c2..f5333e24 100644 --- a/src/scripts/services/aria2RpcService.js +++ b/src/scripts/services/aria2RpcService.js @@ -338,12 +338,11 @@ for (var i = 0; i < context.gids.length; i++) { contexts.push({ - silent: !!context.silent, - gid: context.gids[i] + 'methodName': 'aria2.forceRemove', 'params': [context.gids[i]] }); } - return invokeMulti(this.forceRemove, contexts, context.callback); + return this.multicall({'methods': contexts}); }, pause: function (context, returnContextOnly) { return invoke(buildRequestContext('pause', context, context.gid), !!returnContextOnly); @@ -359,12 +358,11 @@ for (var i = 0; i < context.gids.length; i++) { contexts.push({ - silent: !!context.silent, - gid: context.gids[i] + 'methodName': 'aria2.forcePause', 'params': [context.gids[i]] }); } - return invokeMulti(this.forcePause, contexts, context.callback); + return this.multicall({'methods': contexts}); }, forcePauseAll: function (context, returnContextOnly) { return invoke(buildRequestContext('forcePauseAll', context), !!returnContextOnly); @@ -377,12 +375,11 @@ for (var i = 0; i < context.gids.length; i++) { contexts.push({ - silent: !!context.silent, - gid: context.gids[i] + 'methodName': 'aria2.unpause', 'params': [context.gids[i]] }); } - return invokeMulti(this.unpause, contexts, context.callback); + return this.multicall({'methods': contexts}); }, unpauseAll: function (context, returnContextOnly) { return invoke(buildRequestContext('unpauseAll', context), !!returnContextOnly); @@ -455,12 +452,11 @@ for (var i = 0; i < context.gids.length; i++) { contexts.push({ - silent: !!context.silent, - gid: context.gids[i] + 'methodName': 'aria2.removeDownloadResult', 'params': [context.gids[i]] }); } - return invokeMulti(this.removeDownloadResult, contexts, context.callback); + return this.multicall({'methods': contexts}); }, getVersion: function (context, returnContextOnly) { return invoke(buildRequestContext('getVersion', context), !!returnContextOnly);