diff options
Diffstat (limited to 'www')
| -rw-r--r--[-rwxr-xr-x] | www/js/DataModel.js | 9 | ||||
| -rwxr-xr-x | www/js/app.js | 137 |
2 files changed, 105 insertions, 41 deletions
diff --git a/www/js/DataModel.js b/www/js/DataModel.js index eb5cd7d7..acda8119 100755..100644 --- a/www/js/DataModel.js +++ b/www/js/DataModel.js @@ -16,7 +16,11 @@ angular.module('zmApp.controllers') var currentServerMultiPortSupported = false; - var zmAppVersion = "unknown"; + /* + DO NOT TOUCH zmAppVersion + It is changed by sync_version.sh + */ + var zmAppVersion = "1.3.018"; var isBackground = false; var justResumed = false; var timeSinceResumed = -1; @@ -2838,7 +2842,8 @@ angular.module('zmApp.controllers') debug("Logging out using API method"); $http.get(loginData.apiurl + '/host/logout.json', { - timeout: 7000 + timeout: 7000, + transformResponse: undefined }) .then(function (s) { debug("Logout returned... "); diff --git a/www/js/app.js b/www/js/app.js index 3b907780..42aa1671 100755 --- a/www/js/app.js +++ b/www/js/app.js @@ -1063,7 +1063,7 @@ angular.module('zmApp', [ url: loginAPI, timeout:httpDelay, headers: {'Content-Type': 'application/x-www-form-urlencoded'}, - + transformResponse: undefined, transformRequest: function(obj) { var str = []; for(var p in obj) @@ -1073,17 +1073,70 @@ angular.module('zmApp', [ data: {user: loginData.username, pass: loginData.password} }) //$http.get(loginAPI) - .then(function (succ) { + .then(function (textsucc) { $ionicLoading.hide(); - if (!succ.data.version) { - NVRDataModel.debug ("API login returned fake success, going back to webscrape"); - var ld = NVRDataModel.getLogin(); + var succ; + + + try { + + succ = JSON.parse(textsucc.data); + + if (!succ.version) { + NVRDataModel.debug ("API login returned fake success, going back to webscrape"); + var ld = NVRDataModel.getLogin(); + ld.loginAPISupported = false; + NVRDataModel.setLogin(ld); + + loginWebScrape() + .then ( function (succ) { + d.resolve("Login Success"); + return d.promise; + }, + function (err) { + $ionicLoading.hide(); + d.reject("Login Error"); + return (d.promise); + }); + return d.promise; + } + NVRDataModel.debug ("API based login returned... "); + NVRDataModel.setCurrentServerVersion(succ.version); + $ionicLoading.hide(); + //$rootScope.loggedIntoZm = 1; + $rootScope.authSession = ''; + + if (succ.credentials) { + $rootScope.authSession = "&" + succ.credentials; + if (succ.append_password == '1') { + $rootScope.authSession = $rootScope.authSession + + loginData.password; + } + } + + var ldg = NVRDataModel.getLogin(); + ldg.loginAPISupported = true; + NVRDataModel.setLogin(ldg); + + NVRDataModel.log("Stream authentication construction: " + + $rootScope.authSession); + + NVRDataModel.log("zmAutologin successfully logged into Zoneminder via API"); + + + + d.resolve("Login Success"); + + $rootScope.$broadcast('auth-success', succ); + } + catch (e) { + NVRDataModel.debug ("Login API approach did not work..."); + var ld = NVRDataModel.getLogin(); ld.loginAPISupported = false; NVRDataModel.setLogin(ld); - - loginWebScrape() + loginWebScrape() .then ( function (succ) { d.resolve("Login Success"); return d.promise; @@ -1094,35 +1147,10 @@ angular.module('zmApp', [ return (d.promise); }); return d.promise; - } - NVRDataModel.debug ("API based login returned... "); - NVRDataModel.setCurrentServerVersion(succ.data.version); - $ionicLoading.hide(); - //$rootScope.loggedIntoZm = 1; - $rootScope.authSession = ''; - - if (succ.data.credentials) { - $rootScope.authSession = "&" + succ.data.credentials; - if (succ.data.append_password == '1') { - $rootScope.authSession = $rootScope.authSession + - loginData.password; - } - } - - var ldg = NVRDataModel.getLogin(); - ldg.loginAPISupported = true; - NVRDataModel.setLogin(ldg); - - NVRDataModel.log("Stream authentication construction: " + - $rootScope.authSession); - - NVRDataModel.log("zmAutologin successfully logged into Zoneminder via API"); - - - d.resolve("Login Success"); + } - $rootScope.$broadcast('auth-success', succ); + }, function (err) { @@ -1458,10 +1486,14 @@ angular.module('zmApp', [ NVRDataModel.debug("**EXCEPTION**" + error.reason + " caused by " + error.cause); }; - if ($rootScope.platformOS == 'desktop') { + + if ($rootScope.platformOS == 'desktop' && 0) { window.addEventListener('beforeunload', function (ev) { + // I don't think this works on windows + // the callback is not called, it seems + // This was causing android reload issues - holy palooza /* if ($rootScope.platformOS != 'desktop') { ev.returnValue = "true"; @@ -1480,7 +1512,7 @@ angular.module('zmApp', [ }); }); - } + } // DPAD Handler - disabled for now // when ready add ionic cordova plugin add https://github.com/pliablepixels/cordova-plugin-android-tv.git @@ -1707,7 +1739,7 @@ angular.module('zmApp', [ $rootScope.dpadId = 0; - //console.log("HERE"); + if ($rootScope.apiValid == false && toState.name != 'app.invalidapi' && toState.data.requireLogin == true) { event.preventDefault(); @@ -1717,8 +1749,15 @@ angular.module('zmApp', [ } + + if (NVRDataModel.hasLoginInfo() || toState.data.requireLogin == false) { //console.log("State transition is authorized"); + NVRDataModel.debug ("Setting last-desktop-state to:"+JSON.stringify(toState)); + localforage.setItem('last-desktop-state', { + 'name': toState.name, + 'params': toState.params + }); $rootScope.dpadState = toState.name.replace("app.", ""); return; } else { @@ -1745,6 +1784,16 @@ angular.module('zmApp', [ return; } + // right about now, store last-state as the callback doesn't seem + // to work in Windows + + + NVRDataModel.debug ("Setting last-desktop-state to:"+JSON.stringify(toState)); + localforage.setItem('last-desktop-state', { + 'name': toState, + 'params': toParams + }); + return; }); @@ -2000,20 +2049,30 @@ angular.module('zmApp', [ localforage.getItem('last-desktop-state') .then(function (succ) { - //console.log ("FOUND STATE" + JSON.stringify(succ) + ":"+succ); + console.log ("FOUND STATE" + JSON.stringify(succ) + ":"+succ); + + // sanitize this + if (!succ.name || typeof succ.name !== 'string') {succ.name = "app.montage"}; + + if (!succ.params) {succ.params = {}}; if (succ) { - if (succ.name == 'app.invalidapi' || succ.name == 'app.refresh' || succ.name == 'app.importantmessage') { + if (succ.name == 'app.invalidapi' || succ.name == 'app.refresh' || succ.name == 'app.importantmessage' || succ.name == "app.first-use" || !succ.name) { succ.name = 'app.montage'; + localforage.setItem('last-desktop-state', succ.name); } $rootScope.lastState = succ.name; if ($rootScope.lastState.indexOf("app.") == -1) { $rootScope.lastState = "app." + $rootScope.lastState; + + } $rootScope.lastStateParam = succ.params; NVRDataModel.debug("last state=" + $rootScope.lastState + " param=" + $rootScope.lastStateParam); + + } loadServices(); }, function (err) { |
