summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--[-rwxr-xr-x]www/js/DataModel.js9
-rwxr-xr-xwww/js/app.js137
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) {