summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--www/js/EventModalCtrl.js37
-rw-r--r--www/js/MonitorModalCtrl.js36
-rw-r--r--www/templates/events-modal.html4
-rw-r--r--www/templates/monitors-modal.html2
4 files changed, 71 insertions, 8 deletions
diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js
index 247b486c..8a2c3c4c 100644
--- a/www/js/EventModalCtrl.js
+++ b/www/js/EventModalCtrl.js
@@ -406,7 +406,40 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
// Saves a snapshot of the monitor image to phone storage
//-----------------------------------------------------------------------
- $scope.saveEventImageToPhone = function (onlyAlarms) {
+
+ $scope.saveEventImageToPhoneWithPerms = function (onlyAlarms)
+ {
+
+ if ($rootScope.platformOS != 'android')
+ {
+ processSaveEventImageToPhone(onlyAlarms);
+ }
+
+ // if we are on android do the 6.x+ hasPermissions flow
+ NVRDataModel.debug("EventModalCtrl: Permission checking for write");
+ var permissions = cordova.plugins.permissions;
+ permissions.hasPermission(permissions.WRITE_EXTERNAL_STORAGE, checkPermissionCallback, null);
+
+ function checkPermissionCallback(status) {
+ if (!status.hasPermission)
+ {
+ SaveError("No permission to write to external storage");
+ }
+ permissions.requestPermission(permissions.WRITE_EXTERNAL_STORAGE, succ,err);
+ }
+
+ function succ(s)
+ {
+ processSaveEventImageToPhone(onlyAlarms);
+ }
+ function err(e)
+ {
+ SaveError ("Error in requestPermission");
+ }
+ };
+
+
+ function processSaveEventImageToPhone (onlyAlarms) {
if ($scope.loginData.useNphZmsForEvents) {
NVRDataModel.log("Use ZMS stream to save to phone");
@@ -418,7 +451,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
}
- };
+ }
function saveEventImageToPhoneZms(onlyAlarms) {
// The strategy here is to build the array now so we can grab frames
diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js
index e7e22e86..84553d6e 100644
--- a/www/js/MonitorModalCtrl.js
+++ b/www/js/MonitorModalCtrl.js
@@ -648,7 +648,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
noBackdrop: true,
duration: 2000
});
- NVRDataModel.log("Error saving image: " + e.message);
+ NVRDataModel.log("Error saving image: " + e);
//console.log("***ERROR");
}
@@ -761,7 +761,37 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
// Saves a snapshot of the monitor image to phone storage
//-----------------------------------------------------------------------
- $scope.saveImageToPhone = function (mid) {
+ $scope.saveImageToPhoneWithPerms = function (mid)
+ {
+ if ($rootScope.platformOS != 'android')
+ {
+ saveImageToPhone(mid);
+ }
+
+
+ NVRDataModel.debug("ModalCtrl: Permission checking for write");
+ var permissions = cordova.plugins.permissions;
+ permissions.hasPermission(permissions.WRITE_EXTERNAL_STORAGE, checkPermissionCallback, null);
+
+ function checkPermissionCallback(status) {
+ if (!status.hasPermission)
+ {
+ SaveError("No permission to write to external storage");
+ }
+ permissions.requestPermission(permissions.WRITE_EXTERNAL_STORAGE, succ,err);
+ }
+
+ function succ(s)
+ {
+ saveImageToPhone(mid);
+ }
+ function err(e)
+ {
+ SaveError ("Error in requestPermission");
+ }
+ };
+
+ function saveImageToPhone(mid) {
$ionicLoading.show({
template: $translate.instant('kSavingSnapshot') + '...',
noBackdrop: true,
@@ -820,7 +850,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
SaveError(e.message);
}
- };
+ }
diff --git a/www/templates/events-modal.html b/www/templates/events-modal.html
index 41f7d0eb..355ff4f2 100644
--- a/www/templates/events-modal.html
+++ b/www/templates/events-modal.html
@@ -129,11 +129,11 @@
</li>
<li ng-if="defaultVideo==''">
- <a href="" ng-click="saveEventImageToPhone(false)"> <i class="ion-ios-camera"></i></a>
+ <a href="" ng-click="saveEventImageToPhoneWithPerms(false)"> <i class="ion-ios-camera"></i></a>
</li>
<li ng-if="defaultVideo==''">
- <a href="" ng-click="saveEventImageToPhone(true)"> <i class="ion-android-notifications"></i></a>
+ <a href="" ng-click="saveEventImageToPhoneWithPerms(true)"> <i class="ion-android-notifications"></i></a>
</li>
<li ng-if="$root.isAlarm">
diff --git a/www/templates/monitors-modal.html b/www/templates/monitors-modal.html
index 8833a47c..33ddc865 100644
--- a/www/templates/monitors-modal.html
+++ b/www/templates/monitors-modal.html
@@ -100,7 +100,7 @@
<ul>
<li>
- <a href="" ng-click="saveImageToPhone(monitorId)"> <i class="icon ion-ios-camera"></i></a>
+ <a href="" ng-click="saveImageToPhoneWithPerms(monitorId)"> <i class="icon ion-ios-camera"></i></a>
</li>
<li ng-if="$root.platformOS == 'desktop'">