diff --git a/src/index.html b/src/index.html
index fd356ff..91c692a 100644
--- a/src/index.html
+++ b/src/index.html
@@ -215,7 +215,7 @@
- Aria2 Status
+ Aria2 Status
diff --git a/src/scripts/core/root.js b/src/scripts/core/root.js
index 764ee44..1f0f05d 100644
--- a/src/scripts/core/root.js
+++ b/src/scripts/core/root.js
@@ -70,6 +70,7 @@
};
$rootScope.taskContext = {
+ rpcStatus: 'Connecting',
list: [],
selected: {},
enableSelectAll: false,
@@ -169,6 +170,14 @@
});
});
+ aria2TaskService.onConnectSuccess(function () {
+ $rootScope.taskContext.rpcStatus = 'Connected';
+ });
+
+ aria2TaskService.onConnectError(function () {
+ $rootScope.taskContext.rpcStatus = 'Not Connected';
+ });
+
aria2TaskService.onTaskCompleted(function (event) {
ariaNgNotificationService.notifyTaskComplete(event.task);
});
diff --git a/src/scripts/services/aria2RpcService.js b/src/scripts/services/aria2RpcService.js
index cede9ce..8983439 100644
--- a/src/scripts/services/aria2RpcService.js
+++ b/src/scripts/services/aria2RpcService.js
@@ -7,6 +7,8 @@
var secret = ariaNgSettingService.getSecret();
var onFirstSuccessCallbacks = [];
+ var onConnectSuccessCallbacks = [];
+ var onConnectErrorCallbacks = [];
var onDownloadStartCallbacks = [];
var onDownloadPauseCallbacks = [];
var onDownloadStopCallbacks = [];
@@ -65,13 +67,13 @@
});
};
- var fireFirstSuccessEvent = function () {
- if (!angular.isArray(onFirstSuccessCallbacks) || onFirstSuccessCallbacks.length < 1) {
+ var fireCustomEvent = function (callbacks) {
+ if (!angular.isArray(callbacks) || callbacks.length < 1) {
return;
}
- for (var i = 0; i < onFirstSuccessCallbacks.length; i++) {
- var callback = onFirstSuccessCallbacks[i];
+ for (var i = 0; i < callbacks.length; i++) {
+ var callback = callbacks[i];
callback();
}
};
@@ -136,11 +138,6 @@
var innerContext = arguments[1];
context.successCallback = function (id, result) {
- if (!isConnected) {
- isConnected = true;
- fireFirstSuccessEvent();
- }
-
if (innerContext.callback) {
innerContext.callback({
id: id,
@@ -149,6 +146,13 @@
context: innerContext
});
}
+
+ fireCustomEvent(onConnectSuccessCallbacks);
+
+ if (!isConnected) {
+ isConnected = true;
+ fireCustomEvent(onFirstSuccessCallbacks);
+ }
};
context.errorCallback = function (id, error) {
@@ -167,6 +171,8 @@
context: innerContext
});
}
+
+ fireCustomEvent(onConnectErrorCallbacks);
};
}
@@ -419,6 +425,12 @@
onFirstSuccess: function (context) {
onFirstSuccessCallbacks.push(context.callback);
},
+ onConnectSuccess: function (context) {
+ onConnectSuccessCallbacks.push(context.callback);
+ },
+ onConnectError: function (context) {
+ onConnectErrorCallbacks.push(context.callback);
+ },
onDownloadStart: function (context) {
onDownloadStartCallbacks.push(context.callback);
},
diff --git a/src/scripts/services/aria2TaskService.js b/src/scripts/services/aria2TaskService.js
index e658e42..36513db 100644
--- a/src/scripts/services/aria2TaskService.js
+++ b/src/scripts/services/aria2TaskService.js
@@ -601,6 +601,27 @@
callback: callback
});
},
+ onConnectSuccess: function (callback) {
+ if (!callback) {
+ ariaNgLogService.warn('[aria2TaskService.onConnectSuccess] callback is null');
+ return;
+ }
+
+ aria2RpcService.onConnectSuccess({
+ callback: callback
+ });
+ },
+ onConnectError: function (callback) {
+ if (!callback) {
+ ariaNgLogService.warn('[aria2TaskService.onConnectError] callback is null');
+ return;
+ }
+
+ aria2RpcService.onConnectError({
+ callback: callback
+ });
+
+ },
onTaskCompleted: function (callback) {
if (!callback) {
ariaNgLogService.warn('[aria2TaskService.onTaskCompleted] callback is null');