summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--afb-client/app/Frontend/etc/AppConfig.js26
-rw-r--r--afb-client/app/Frontend/pages/Home/HomeModule.js67
-rw-r--r--afb-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js26
3 files changed, 71 insertions, 48 deletions
diff --git a/afb-client/app/Frontend/etc/AppConfig.js b/afb-client/app/Frontend/etc/AppConfig.js
index bd1aae0..5c9283e 100644
--- a/afb-client/app/Frontend/etc/AppConfig.js
+++ b/afb-client/app/Frontend/etc/AppConfig.js
@@ -23,7 +23,7 @@
ping : '/api/token/check',
initial : urlquery.token || '123456789', // typical dev initial token
timeout : 3600, // timeout is updated client sessin context creation
- pingrate: 60, // Ping rate to check if server is still alive
+ pingrate: 30, // Ping rate to check if server is still alive
uuid : '', // uuid map with cookie or long term session access key
token : '' // will be returned from authentication
}
@@ -33,16 +33,28 @@
})
// Factory is a singleton and share its context within all instances.
- .factory('AppCall', function ($http, AppConfig) {
+ .factory('AppCall', function ($http, AppConfig, $log) {
var myCalls = {
- get : function(plugin, action, query, callback) {
- if (!query.token) query.token = AppConfig.session.token; // add token to provided query
- $http.get('/api/' + plugin + '/' + action , {params: query}).then (callback, callback);
+ get : function(plugin, action, query, cbresponse, cberror) {
+ if (!query.token) query.token = AppConfig.session.token; // add token to provided query
+ var handle= $http.get('/api/' + plugin + '/' + action , {params: query}).then (onsuccess, onerror);
+
+ handle.onsuccess (function(data, errcode, headers, config) {
+ // if token was updated keep it within application cache
+ if (data.request.token) AppConfig.session.token = data.request.token;
+ if (data.request.uuid) AppConfig.session.uuid = data.request.uuid;
+ if (data.request.timeout) AppConfig.session.timeout = data.request.timeout;
+
+ cbresponse(data, errcode, headers, config);
+ });
+
+ handle.onerror (function(data, errcode, headers, config) {
+ if (cberror) cberror(data, errcode, headers, config);
+ else cbresponse(data, errcode, headers, config);
+ });
}
-
};
return myCalls;
});
-
})(); \ No newline at end of file
diff --git a/afb-client/app/Frontend/pages/Home/HomeModule.js b/afb-client/app/Frontend/pages/Home/HomeModule.js
index fb03ac8..fdbe520 100644
--- a/afb-client/app/Frontend/pages/Home/HomeModule.js
+++ b/afb-client/app/Frontend/pages/Home/HomeModule.js
@@ -4,9 +4,9 @@
// WARNING: make sure than app/frontend/services/AppConfig.js match your server
// list all rependencies within the page + controler if needed
-angular.module('HomeModule', ['SubmitButton', 'TokenRefresh'])
+angular.module('HomeModule', ['SubmitButton', 'TokenRefresh','ModalNotification'])
- .controller('HomeController', function ($http, AppConfig) {
+ .controller('HomeController', function (AppCall, Notification) {
var scope = this; // I hate JavaScript
scope.uuid ="none";
scope.token ="none";
@@ -16,56 +16,59 @@ angular.module('HomeModule', ['SubmitButton', 'TokenRefresh'])
console.log ("Home Controller");
scope.ProcessResponse= function(data, errcode, headers, config) {
- var apiname= 'API'+ data.request.api.replace('-','_');
- scope.status = "err-ok";
- scope.errcode= errcode;
- scope.request = data.request;
- scope.response = data.response;
- // if token was refresh let's update AppConfig
- if (data.request.token) AppConfig.session.token = data.request.token;
- if (data.request.uuid) AppConfig.session.uuid = data.request.uuid;
- if (data.request.timeout) AppConfig.session.timeout = data.request.timeout;
-
- // Make sure we clean everything when Open/Close is called
- if (apiname === "APIcreate" || apiname === "APIreset") {
- scope.APIreset ='';
- scope.APIcreate ='';
- scope.APIrefresh='';
- scope.APIcheck ='';
+ if (data.request.status !== "success") {
+ Notification.error ({message: "Invalid API call:" + data.request.info , delay: 5000});
+ return;
}
- scope[apiname]="success";
- // If we have a new token let's update it
- if (data.request.token) scope.token=data.request.token;
+ // Update UI response global display zone
+ scope.status = data.request.status;
+ scope.errcode = errcode;
+ scope.request = data.request;
+ scope.response = data.response;
+ switch (data.request.reqid) {
+ case 'open':
+ case 'reset':
+ scope.APIreset ='';
+ scope.APIcreate ='';
+ scope.APIrefresh='';
+ scope.APIcheck ='';
+ break;
+
+ case 'refresh':
+ case 'check':
+ break;
+
+ default:
+ Notification.error ({message: "Invalid RequestID:" + data.request.reqid , delay: 5000});
+ return;
+ }
+
+ scope[reqid]="success";
console.log ("OK: "+ JSON.stringify(data));
};
scope.ProcessError= function(data, errcode, headers, config) {
- var apiname= 'API'+data.request.api.replace('-','_');
+ Notification.error ({message: "Invalid API:" + data.request.reqid , delay: 5000});
scope.status = "err-fx";
scope.errcode = errcode;
scope.request = data.request;
- scope.response = "";
- scope[apiname]="fail";
-
+ scope.response = "";
console.log ("FX: "+ JSON.stringify(data));
};
scope.OpenSession = function() {
- console.log ("OpenSession");
- var postdata= {/* any json your application may need */};
- var handler = $http.post(AppConfig.session.create + '?token='+AppConfig.session.initial, postdata);
-
- handler.success(scope.ProcessResponse);
- handler.error(scope.ProcessError);
+ console.log ("OpenSession");
+ AppCall.get ("token", "create", {reqid:"open"}, scope.ProcessResponse, scope.InvalidApiCall);
};
scope.CheckSession = function() {
console.log ("CloseSession");
+
var postdata= {/* any json your application may need */};
- var handler = $http.post(AppConfig.session.check + '?token='+AppConfig.session.token, postdata);
+ var handler = $http.post(AppConfig.session.check + '?token='+AppConfig.session.token +'?idreq=open', postdata);
handler.success(scope.ProcessResponse);
handler.error(scope.ProcessError);
diff --git a/afb-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js b/afb-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js
index 59fc763..ec29978 100644
--- a/afb-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js
+++ b/afb-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js
@@ -66,6 +66,13 @@ angular.module('TokenRefresh', ['AppConfig', 'ModalNotification'])
};
scope.onsuccess = function(jresp) {
+
+ if (jresp.request.status !== "success") {
+ Notification.warning ({message: jresp.request.info, delay: 5000});
+ scope.offline();
+ return;
+ }
+
if (jresp.request.token) AppConfig.session.token = jresp.request.token;
if (jresp.request.uuid) AppConfig.session.uuid = jresp.request.uuid;
if (jresp.request.timeout) AppConfig.session.timeout = jresp.request.timeout;
@@ -81,9 +88,9 @@ angular.module('TokenRefresh', ['AppConfig', 'ModalNotification'])
// Check Binder status
scope.getping = function() {
- AppCall.get ("token", "ping", {/*query*/},function(result) {
- if (result.status === 200) scope.onsuccess (result.data);
- else scope.onerror();
+ AppCall.get ("token", "ping", {/*query*/},function(jresp, errcode) {
+ if (errcode) scope.onerror();
+ else scope.onsuccess (jresp);
// restart a new timer for next ping
$timeout (scope.getping, AppConfig.session.pingrate*1000);
});
@@ -92,9 +99,9 @@ angular.module('TokenRefresh', ['AppConfig', 'ModalNotification'])
// Check Binder status
scope.refresh = function() {
- AppCall.get ("token", "refresh", {/*query*/},function(result) {
- if (result.status === 200) scope.onsuccess (result.data);
- else scope.onerror();
+ AppCall.get ("token", "refresh", {/*query*/},function(jresp, errcode) {
+ if (errcode) scope.onerror();
+ else scope.onsuccess (jresp);
// restart a new timer for next refresh
$timeout (scope.refresh, AppConfig.session.timeout *250);
});
@@ -103,9 +110,9 @@ angular.module('TokenRefresh', ['AppConfig', 'ModalNotification'])
// Initial connection
scope.tkcreate = function() {
- AppCall.get ("token", "create", {token: AppConfig.session.initial},function(result) {
- if (result.status === 200) scope.onsuccess (result.data);
- else scope.onerror();
+ AppCall.get ("token", "create", {token: AppConfig.session.initial},function(jresp, errcode) {
+ if (errcode) scope.onerror();
+ else scope.onsuccess (jresp);
});
};
@@ -133,3 +140,4 @@ angular.module('TokenRefresh', ['AppConfig', 'ModalNotification'])
})();
console.log ("Token Refresh Loaded");
+