diff --git a/src/popup/app/settings/settingsEditFolderController.js b/src/popup/app/settings/settingsEditFolderController.js
index 7f1e10d9..78e6d6e6 100644
--- a/src/popup/app/settings/settingsEditFolderController.js
+++ b/src/popup/app/settings/settingsEditFolderController.js
@@ -1,7 +1,7 @@
angular
.module('bit.settings')
- .controller('settingsEditFolderController', function ($scope, $stateParams, folderService, toastr, $q, $state) {
+ .controller('settingsEditFolderController', function ($scope, $stateParams, folderService, toastr, $q, $state, SweetAlert) {
$scope.folder = {};
var folderId = $stateParams.folderId;
@@ -28,4 +28,23 @@
});
});
};
+
+ $scope.delete = function () {
+ SweetAlert.swal({
+ title: 'Delete Folder',
+ text: 'Are you sure you want to delete this folder?',
+ showCancelButton: true,
+ confirmButtonText: 'Yes',
+ cancelButtonText: 'No'
+ }, function (confirmed) {
+ if (confirmed) {
+ $q.when(folderService.deleteWithServer(folderId)).then(function () {
+ toastr.success('Deleted folder');
+ $state.go('folders', {
+ animation: 'out-slide-down'
+ });
+ });
+ }
+ });
+ };
});
diff --git a/src/popup/app/settings/views/settingsEditFolder.html b/src/popup/app/settings/views/settingsEditFolder.html
index 256d98d9..fec85aa9 100644
--- a/src/popup/app/settings/views/settingsEditFolder.html
+++ b/src/popup/app/settings/views/settingsEditFolder.html
@@ -19,6 +19,13 @@
+
diff --git a/src/popup/app/vault/vaultEditSiteController.js b/src/popup/app/vault/vaultEditSiteController.js
index 0309a860..70a40780 100644
--- a/src/popup/app/vault/vaultEditSiteController.js
+++ b/src/popup/app/vault/vaultEditSiteController.js
@@ -49,6 +49,25 @@ angular
});
};
+ $scope.delete = function () {
+ SweetAlert.swal({
+ title: 'Delete Site',
+ text: 'Are you sure you want to delete this site?',
+ showCancelButton: true,
+ confirmButtonText: 'Yes',
+ cancelButtonText: 'No'
+ }, function (confirmed) {
+ if (confirmed) {
+ $q.when(siteService.deleteWithServer(siteId)).then(function () {
+ toastr.success('Deleted site');
+ $state.go('tabs.vault', {
+ animation: 'out-slide-down'
+ });
+ });
+ }
+ });
+ };
+
$scope.close = function () {
if (fromView) {
$state.go('viewSite', {
@@ -70,7 +89,7 @@ angular
$scope.generatePassword = function () {
if ($scope.site.password) {
SweetAlert.swal({
- title: 'Warning',
+ title: 'Overwrite Password',
text: 'Are you sure you want to overwrite the current password?',
showCancelButton: true,
confirmButtonText: 'Yes',
diff --git a/src/popup/app/vault/vaultViewSiteController.js b/src/popup/app/vault/vaultViewSiteController.js
index 68bf97d3..cb691100 100644
--- a/src/popup/app/vault/vaultViewSiteController.js
+++ b/src/popup/app/vault/vaultViewSiteController.js
@@ -1,4 +1,4 @@
-angular
+angular
.module('bit.vault')
.controller('vaultViewSiteController', function ($scope, $state, $stateParams, siteService, tldjs, toastr, $q) {
@@ -7,6 +7,10 @@
$scope.site = null;
siteService.get($stateParams.siteId, function (site) {
+ if (!site) {
+ return;
+ }
+
$q.when(site.decrypt()).then(function (model) {
$scope.site = model;
diff --git a/src/popup/app/vault/views/vaultEditSite.html b/src/popup/app/vault/views/vaultEditSite.html
index e10d5cd7..48c39e60 100644
--- a/src/popup/app/vault/views/vaultEditSite.html
+++ b/src/popup/app/vault/views/vaultEditSite.html
@@ -64,6 +64,13 @@
+
diff --git a/src/popup/less/components.less b/src/popup/less/components.less
index 60804945..d3588d73 100644
--- a/src/popup/less/components.less
+++ b/src/popup/less/components.less
@@ -213,6 +213,10 @@
color: @brand-primary !important;
}
+ &.text-danger {
+ color: @brand-danger !important;
+ }
+
&:not(.wrap) {
.text, .detail {
white-space: nowrap;
diff --git a/src/services/apiService.js b/src/services/apiService.js
index 1c786b5c..43c70ab1 100644
--- a/src/services/apiService.js
+++ b/src/services/apiService.js
@@ -17,7 +17,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (response) {
- success(new TokenResponse(response))
+ success(new TokenResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -35,7 +35,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (response) {
- success(new TokenResponse(response))
+ success(new TokenResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -54,7 +54,7 @@ function initApiService() {
url: self.baseUrl + '/accounts/profile?access_token=' + token,
dataType: 'json',
success: function (response) {
- success(new ProfileResponse(response))
+ success(new ProfileResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -105,7 +105,7 @@ function initApiService() {
url: self.baseUrl + '/sites/' + id + '?access_token=' + token,
dataType: 'json',
success: function (response) {
- success(new SiteResponse(response))
+ success(new SiteResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -124,7 +124,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (response) {
- success(new SiteResponse(response))
+ success(new SiteResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -143,7 +143,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (response) {
- success(new SiteResponse(response))
+ success(new SiteResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -162,7 +162,7 @@ function initApiService() {
url: self.baseUrl + '/folders/' + id + '?access_token=' + token,
dataType: 'json',
success: function (response) {
- success(new FolderResponse(response))
+ success(new FolderResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -181,7 +181,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (response) {
- success(new FolderResponse(response))
+ success(new FolderResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -200,7 +200,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (response) {
- success(new FolderResponse(response))
+ success(new FolderResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -219,7 +219,7 @@ function initApiService() {
url: self.baseUrl + '/ciphers/' + id + '?access_token=' + token,
dataType: 'json',
success: function (response) {
- success(new CipherResponse(response))
+ success(new CipherResponse(response));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -241,7 +241,7 @@ function initApiService() {
data.push(new CipherResponse(response.Data[i]));
}
- success(new ListResponse(data))
+ success(new ListResponse(data));
},
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
@@ -256,9 +256,9 @@ function initApiService() {
$.ajax({
type: 'POST',
url: self.baseUrl + '/ciphers/' + id + '/delete?access_token=' + token,
- contentType: 'application/json; charset=utf-8',
- dataType: 'json',
- success: success,
+ success: function (response) {
+ success();
+ },
error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown);
}
diff --git a/src/services/folderService.js b/src/services/folderService.js
index 7678b7ac..b7c87a79 100644
--- a/src/services/folderService.js
+++ b/src/services/folderService.js
@@ -224,6 +224,21 @@ function initFolderService() {
});
};
+ FolderService.prototype.deleteWithServer = function (id) {
+ var deferred = Q.defer();
+
+ var self = this;
+ self.apiService.deleteCipher(id, function () {
+ self.delete(id, function () {
+ deferred.resolve();
+ });
+ }, function (response) {
+ handleError(response, deferred)
+ });
+
+ return deferred.promise;
+ };
+
function handleError(error, deferred) {
deferred.reject(error);
}
diff --git a/src/services/siteService.js b/src/services/siteService.js
index 01c39174..e3def38a 100644
--- a/src/services/siteService.js
+++ b/src/services/siteService.js
@@ -242,7 +242,7 @@ function initSiteService() {
var deferred = Q.defer();
var self = this;
- self.apiService.deleteCipher(id, function (response) {
+ self.apiService.deleteCipher(id, function () {
self.delete(id, function () {
deferred.resolve();
});