Started move to new framework version
authorFulup Ar Foll <fulup@iot.bzh>
Tue, 24 May 2016 07:23:56 +0000 (09:23 +0200)
committerFulup Ar Foll <fulup@iot.bzh>
Tue, 24 May 2016 07:23:56 +0000 (09:23 +0200)
afb-client/app/Frontend/etc/AppConfig.js
afb-client/app/Frontend/pages/Home/HomeModule.js
afb-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js

index bd1aae0..5c9283e 100644 (file)
@@ -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    
                     }
             })
             
             // 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
index fb03ac8..fdbe520 100644 (file)
@@ -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);
index 59fc763..ec29978 100644 (file)
@@ -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");
+