From cd43d44d58c3fc9db9ab3fa8460dc809fbe5f278 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Thu, 23 Jun 2016 00:39:44 +0800 Subject: [PATCH] fix bug (sometimes filename is "Unknown") --- app/scripts/controllers/list.js | 35 +++++++++++++++++++----- app/scripts/services/aria2RpcService.js | 6 ++-- app/scripts/services/aria2TaskService.js | 14 ++++++++-- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/app/scripts/controllers/list.js b/app/scripts/controllers/list.js index 3dbdb00..5f1b376 100644 --- a/app/scripts/controllers/list.js +++ b/app/scripts/controllers/list.js @@ -25,23 +25,44 @@ return; } + var isRequestWholeInfo = response.context.requestWholeInfo; var taskList = response.data; - if (!ariaNgCommonService.extendArray(taskList, $rootScope.taskContext.list, 'gid')) { - if (needRequestWholeInfo) { - $rootScope.taskContext.list = taskList; + if (isRequestWholeInfo) { + $rootScope.taskContext.list = taskList; + needRequestWholeInfo = false; + } else { + if (ariaNgCommonService.extendArray(taskList, $rootScope.taskContext.list, 'gid')) { needRequestWholeInfo = false; } else { needRequestWholeInfo = true; } - } else { - needRequestWholeInfo = false; } - if ($rootScope.taskContext.list) { + if ($rootScope.taskContext.list && $rootScope.taskContext.list.length > 0) { aria2TaskService.processDownloadTasks($rootScope.taskContext.list); - $rootScope.taskContext.enableSelectAll = $rootScope.taskContext.list.length > 0; + + if (!isRequestWholeInfo) { + var hasFullStruct = false; + + for (var i = 0; i < $rootScope.taskContext.list.length; i++) { + var task = $rootScope.taskContext.list[i]; + + if (task.hasTaskName || task.files || task.bittorrent) { + hasFullStruct = true; + break; + } + } + + if (!hasFullStruct) { + needRequestWholeInfo = true; + $rootScope.taskContext.list.length = 0; + return; + } + } } + + $rootScope.taskContext.enableSelectAll = $rootScope.taskContext.list && $rootScope.taskContext.list.length > 0; }, silent); }; diff --git a/app/scripts/services/aria2RpcService.js b/app/scripts/services/aria2RpcService.js index c1de289..561c26f 100644 --- a/app/scripts/services/aria2RpcService.js +++ b/app/scripts/services/aria2RpcService.js @@ -101,7 +101,8 @@ invokeContext.callback({ id: id, success: true, - data: result + data: result, + context: invokeContext }); } }; @@ -118,7 +119,8 @@ id: id, success: false, data: error, - errorProcessed: errorProcessed + errorProcessed: errorProcessed, + context: invokeContext }); } }; diff --git a/app/scripts/services/aria2TaskService.js b/app/scripts/services/aria2TaskService.js index 1380971..1593488 100644 --- a/app/scripts/services/aria2TaskService.js +++ b/app/scripts/services/aria2TaskService.js @@ -26,6 +26,7 @@ var getTaskName = function (task) { var taskName = ""; + var success = true; if (task.bittorrent && task.bittorrent.info) { taskName = task.bittorrent.info.name; @@ -41,9 +42,13 @@ if (!taskName) { taskName = $translate.instant('Unknown'); + success = false; } - return taskName; + return { + name: taskName, + success: success + }; }; var processDownloadTask = function (task) { @@ -62,11 +67,13 @@ task.uploadSpeed = parseInt(task.uploadSpeed); task.downloadSpeed = parseInt(task.downloadSpeed); - task.taskName = getTaskName(task); task.idle = task.downloadSpeed == 0; - task.remainTime = calculateDownloadRemainTime(task.remainLength, task.downloadSpeed); + var taskNameResult = getTaskName(task); + task.taskName = taskNameResult.name; + task.hasTaskName = taskNameResult.success; + if (task.files) { for (var i = 0; i < task.files.length; i++) { var file = task.files[i]; @@ -156,6 +163,7 @@ } return invokeMethod({ + requestWholeInfo: full, requestParams: full ? aria2RpcService.getFullTaskParams() : aria2RpcService.getBasicTaskParams(), silent: !!silent, callback: function (response) {