1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-15 15:53:27 +00:00

upload new attachments

This commit is contained in:
Kyle Spearrin
2017-07-12 09:57:08 -04:00
parent 89b1639dda
commit 0574c538e7
8 changed files with 225 additions and 65 deletions

View File

@@ -145,7 +145,7 @@
templateUrl: 'app/vault/views/vaultAttachments.html',
controller: 'vaultAttachmentsController',
data: { authorize: true },
params: { animation: null, fromView: true, login: null, from: 'vault' }
params: { animation: null, fromView: true, from: 'vault' }
})
.state('passwordGenerator', {

View File

@@ -1,15 +1,44 @@
angular
.module('bit.vault')
.controller('vaultAttachmentsController', function ($scope, $state, $stateParams, loginService, folderService,
cryptoService, $q, toastr, SweetAlert, utilsService, $analytics, i18nService) {
.controller('vaultAttachmentsController', function ($scope, $state, $stateParams, loginService, $q, toastr,
SweetAlert, utilsService, $analytics, i18nService) {
$scope.i18n = i18nService;
$scope.login = $stateParams.login;
utilsService.initListSectionItemListeners($(document), angular);
loginService.get($stateParams.id, function (login) {
$q.when(login.decrypt()).then(function (model) {
$scope.login = model;
});
});
$scope.submitPromise = null;
$scope.submit = function () {
$scope.close(true);
var files = document.getElementById('file').files;
if (!files || !files.length) {
toastr.error(i18nService.selectFile, i18nService.errorsOccurred);
return;
}
if (files[0].size > 104857600) { // 100 MB
toastr.error(i18nService.fileTooLarge, i18nService.errorsOccurred);
return deferred.promise;
}
$scope.submitPromise = $q.when(loginService.saveAttachmentWithServer($scope.login, files[0])).then(function (login) {
$q.when(login.decrypt()).then(function (model) {
$scope.login = model;
});
$analytics.eventTrack('Added Attachment');
toastr.success(i18nService.attachmentSaved);
}, function (err) {
if (err) {
toastr.error(err);
}
else {
toastr.error(i18nService.errorsOccurred);
}
});
};
$scope.delete = function (attachment) {
@@ -22,6 +51,10 @@ angular
}, function (confirmed) {
if (confirmed) {
$q.when(loginService.deleteAttachmentWithServer($stateParams.id, attachment.id)).then(function () {
var index = $scope.login.attachments.indexOf(attachment);
if (index > -1) {
$scope.login.attachments.splice(index, 1);
}
$analytics.eventTrack('Deleted Attachment');
toastr.success(i18nService.deletedAttachment);
});
@@ -29,29 +62,14 @@ angular
});
};
$scope.close = function (allOut) {
if (!allOut) {
$state.go('editLogin', {
loginId: $stateParams.id,
animation: 'out-slide-down',
from: $stateParams.from,
fromView: $stateParams.fromView
});
$scope.close = function () {
$state.go('editLogin', {
loginId: $stateParams.id,
animation: 'out-slide-down',
from: $stateParams.from,
fromView: $stateParams.fromView
});
return;
}
if ($stateParams.fromView) {
$state.go('viewLogin', {
loginId: $stateParams.id,
animation: 'out-slide-down',
from: $stateParams.from
});
}
else {
$state.go('tabs.vault', {
animation: 'out-slide-down'
});
}
return;
};
});

View File

@@ -71,7 +71,6 @@ angular
$scope.attachments = function () {
$state.go('attachments', {
id: loginId,
login: $scope.login,
animation: 'in-slide-up',
from: from,
fromView: fromView

View File

@@ -1,40 +1,43 @@
<div class="header">
<div class="left">
<a href="" ng-click="close()">{{i18n.close}}</a>
</div>
<div class="right">
<a href="" ng-click="submit()">{{i18n.submit}}</a>
</div>
<div class="title">{{i18n.attachments}}</div>
</div>
<div class="content">
<div class="list list-no-selection">
<div class="list-section">
<div class="list-section-items">
<div class="list-section-item" ng-if="!login.attachments.length">
{{i18n.noAttachments}}
</div>
<div class="list-section-item" ng-repeat="attachment in login.attachments">
<a href="#" stop-click ng-click="download(attachment)">{{attachment.fileName}}</a>
<i class="fa fa-spin fa-spinner text-muted no-animation" ng-if="attachment.downloading"></i>
<span class="btn-list no-padding" stop-prop stop-click title="{{i18n.deleteAttachment}}"
ng-click="delete(attachment)">
<i class="fa fa-lg fa-trash"></i>
</span>
<small class="item-sub-label">{{attachment.sizeName}}</small>
</div>
</div>
<form name="theForm" ng-submit="submit()" bit-form="submitPromise">
<div class="header">
<div class="left">
<a href="" ng-click="close()">{{i18n.close}}</a>
</div>
<div class="list-section">
<div class="list-section-header">
{{i18n.newAttachment}}
<div class="right">
<button type="submit" class="btn btn-link" ng-show="!theForm.$loading">{{i18n.submit}}</button>
<i class="fa fa-spinner fa-lg fa-spin no-animation" ng-show="theForm.$loading"></i>
</div>
<div class="title">{{i18n.attachments}}</div>
</div>
<div class="content">
<div class="list list-no-selection">
<div class="list-section">
<div class="list-section-items">
<div class="list-section-item" ng-if="!login.attachments.length">
{{i18n.noAttachments}}
</div>
<div class="list-section-item" ng-repeat="attachment in login.attachments">
<a href="#" stop-click ng-click="download(attachment)">{{attachment.fileName}}</a>
<i class="fa fa-spin fa-spinner text-muted no-animation" ng-if="attachment.downloading"></i>
<span class="btn-list no-padding" stop-prop stop-click title="{{i18n.deleteAttachment}}"
ng-click="delete(attachment)">
<i class="fa fa-lg fa-trash"></i>
</span>
<small class="item-sub-label">{{attachment.sizeName}}</small>
</div>
</div>
</div>
<div class="list-section-items">
<div class="list-section-item">
<label for="file" class="item-label">{{i18n.file}}</label>
<input type="file" id="file" name="file" />
<div class="list-section">
<div class="list-section-header">
{{i18n.newAttachment}}
</div>
<div class="list-section-items">
<div class="list-section-item">
<label for="file" class="item-label">{{i18n.file}}</label>
<input type="file" id="file" name="file" />
</div>
</div>
</div>
</div>
</div>
</div>
</form>