Delete site/folder

This commit is contained in:
Kyle Spearrin 2016-09-22 14:16:24 -04:00
parent f28b690a2a
commit 95ab611595
9 changed files with 93 additions and 18 deletions

View File

@ -1,7 +1,7 @@
angular angular
.module('bit.settings') .module('bit.settings')
.controller('settingsEditFolderController', function ($scope, $stateParams, folderService, toastr, $q, $state) { .controller('settingsEditFolderController', function ($scope, $stateParams, folderService, toastr, $q, $state, SweetAlert) {
$scope.folder = {}; $scope.folder = {};
var folderId = $stateParams.folderId; 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'
});
});
}
});
};
}); });

View File

@ -19,6 +19,13 @@
</div> </div>
</div> </div>
</div> </div>
<div class="list-section">
<div class="list-section-items">
<a href="" ng-click="delete()" class="list-section-item text-danger">
<i class="fa fa-trash fa-fw fa-lg"></i> Delete Folder
</a>
</div>
</div>
</div> </div>
</div> </div>
</form> </form>

View File

@ -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 () { $scope.close = function () {
if (fromView) { if (fromView) {
$state.go('viewSite', { $state.go('viewSite', {
@ -70,7 +89,7 @@ angular
$scope.generatePassword = function () { $scope.generatePassword = function () {
if ($scope.site.password) { if ($scope.site.password) {
SweetAlert.swal({ SweetAlert.swal({
title: 'Warning', title: 'Overwrite Password',
text: 'Are you sure you want to overwrite the current password?', text: 'Are you sure you want to overwrite the current password?',
showCancelButton: true, showCancelButton: true,
confirmButtonText: 'Yes', confirmButtonText: 'Yes',

View File

@ -1,4 +1,4 @@
angular angular
.module('bit.vault') .module('bit.vault')
.controller('vaultViewSiteController', function ($scope, $state, $stateParams, siteService, tldjs, toastr, $q) { .controller('vaultViewSiteController', function ($scope, $state, $stateParams, siteService, tldjs, toastr, $q) {
@ -7,6 +7,10 @@
$scope.site = null; $scope.site = null;
siteService.get($stateParams.siteId, function (site) { siteService.get($stateParams.siteId, function (site) {
if (!site) {
return;
}
$q.when(site.decrypt()).then(function (model) { $q.when(site.decrypt()).then(function (model) {
$scope.site = model; $scope.site = model;

View File

@ -64,6 +64,13 @@
</div> </div>
</div> </div>
</div> </div>
<div class="list-section">
<div class="list-section-items">
<a href="" ng-click="delete()" class="list-section-item text-danger">
<i class="fa fa-trash fa-fw fa-lg"></i> Delete Site
</a>
</div>
</div>
</div> </div>
</div> </div>
</form> </form>

View File

@ -213,6 +213,10 @@
color: @brand-primary !important; color: @brand-primary !important;
} }
&.text-danger {
color: @brand-danger !important;
}
&:not(.wrap) { &:not(.wrap) {
.text, .detail { .text, .detail {
white-space: nowrap; white-space: nowrap;

View File

@ -17,7 +17,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8', contentType: 'application/json; charset=utf-8',
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new TokenResponse(response)) success(new TokenResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -35,7 +35,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8', contentType: 'application/json; charset=utf-8',
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new TokenResponse(response)) success(new TokenResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -54,7 +54,7 @@ function initApiService() {
url: self.baseUrl + '/accounts/profile?access_token=' + token, url: self.baseUrl + '/accounts/profile?access_token=' + token,
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new ProfileResponse(response)) success(new ProfileResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -105,7 +105,7 @@ function initApiService() {
url: self.baseUrl + '/sites/' + id + '?access_token=' + token, url: self.baseUrl + '/sites/' + id + '?access_token=' + token,
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new SiteResponse(response)) success(new SiteResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -124,7 +124,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8', contentType: 'application/json; charset=utf-8',
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new SiteResponse(response)) success(new SiteResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -143,7 +143,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8', contentType: 'application/json; charset=utf-8',
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new SiteResponse(response)) success(new SiteResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -162,7 +162,7 @@ function initApiService() {
url: self.baseUrl + '/folders/' + id + '?access_token=' + token, url: self.baseUrl + '/folders/' + id + '?access_token=' + token,
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new FolderResponse(response)) success(new FolderResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -181,7 +181,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8', contentType: 'application/json; charset=utf-8',
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new FolderResponse(response)) success(new FolderResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -200,7 +200,7 @@ function initApiService() {
contentType: 'application/json; charset=utf-8', contentType: 'application/json; charset=utf-8',
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new FolderResponse(response)) success(new FolderResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -219,7 +219,7 @@ function initApiService() {
url: self.baseUrl + '/ciphers/' + id + '?access_token=' + token, url: self.baseUrl + '/ciphers/' + id + '?access_token=' + token,
dataType: 'json', dataType: 'json',
success: function (response) { success: function (response) {
success(new CipherResponse(response)) success(new CipherResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -241,7 +241,7 @@ function initApiService() {
data.push(new CipherResponse(response.Data[i])); data.push(new CipherResponse(response.Data[i]));
} }
success(new ListResponse(data)) success(new ListResponse(data));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
@ -256,9 +256,9 @@ function initApiService() {
$.ajax({ $.ajax({
type: 'POST', type: 'POST',
url: self.baseUrl + '/ciphers/' + id + '/delete?access_token=' + token, url: self.baseUrl + '/ciphers/' + id + '/delete?access_token=' + token,
contentType: 'application/json; charset=utf-8', success: function (response) {
dataType: 'json', success();
success: success, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR, textStatus, errorThrown); handleError(error, jqXHR, textStatus, errorThrown);
} }

View File

@ -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) { function handleError(error, deferred) {
deferred.reject(error); deferred.reject(error);
} }

View File

@ -242,7 +242,7 @@ function initSiteService() {
var deferred = Q.defer(); var deferred = Q.defer();
var self = this; var self = this;
self.apiService.deleteCipher(id, function (response) { self.apiService.deleteCipher(id, function () {
self.delete(id, function () { self.delete(id, function () {
deferred.resolve(); deferred.resolve();
}); });