1
0
mirror of https://github.com/bitwarden/web synced 2025-12-11 05:43:16 +00:00

Switch vault listing to user ciphers apis instead of calling login and folder separately

This commit is contained in:
Kyle Spearrin
2017-02-21 22:50:48 -05:00
parent cf144aa2c1
commit ccc527f329
3 changed files with 33 additions and 45 deletions

View File

@@ -52,7 +52,7 @@ angular
_service.logOut = function () { _service.logOut = function () {
tokenService.clearToken(); tokenService.clearToken();
tokenService.clearRefreshToken(); tokenService.clearRefreshToken();
cryptoService.clearKey(); cryptoService.clearKeys();
_userProfile = null; _userProfile = null;
}; };

View File

@@ -5,57 +5,48 @@
$scope.logins = []; $scope.logins = [];
$scope.folders = []; $scope.folders = [];
$scope.loadingLogins = true; $scope.loading = true;
apiService.logins.list({}, function (logins) { apiService.ciphers.list({}, function (ciphers) {
$scope.loadingLogins = false; $scope.loading = false;
var decLogins = []; var decLogins = [];
for (var i = 0; i < logins.Data.length; i++) {
var decLogin = {
id: logins.Data[i].Id,
folderId: logins.Data[i].FolderId,
favorite: logins.Data[i].Favorite
};
try { decLogin.name = cryptoService.decrypt(logins.Data[i].Name); }
catch (err) { decLogin.name = '[error: cannot decrypt]'; }
if (logins.Data[i].Username) {
try { decLogin.username = cryptoService.decrypt(logins.Data[i].Username); }
catch (err) { decLogin.username = '[error: cannot decrypt]'; }
}
decLogins.push(decLogin);
}
$scope.logins = decLogins;
}, function () {
$scope.loadingLogins = false;
});
$scope.loadingFolders = true;
apiService.folders.list({}, function (folders) {
$scope.loadingFolders = false;
var decFolders = [{ var decFolders = [{
id: null, id: null,
name: '(none)' name: '(none)'
}]; }];
for (var i = 0; i < folders.Data.length; i++) { for (var i = 0; i < ciphers.Data.length; i++) {
var decFolder = { if (ciphers.Data[i].Type === 0) {
id: folders.Data[i].Id var decFolder = {
}; id: ciphers.Data[i].Id
};
try { decFolder.name = cryptoService.decrypt(folders.Data[i].Name); } try { decFolder.name = cryptoService.decrypt(ciphers.Data[i].Data.Name); }
catch (err) { decFolder.name = '[error: cannot decrypt]'; } catch (err) { decFolder.name = '[error: cannot decrypt]'; }
decFolders.push(decFolder); decFolders.push(decFolder);
}
else {
var decLogin = {
id: ciphers.Data[i].Id,
folderId: ciphers.Data[i].FolderId,
favorite: ciphers.Data[i].Favorite
};
try { decLogin.name = cryptoService.decrypt(ciphers.Data[i].Data.Name); }
catch (err) { decLogin.name = '[error: cannot decrypt]'; }
if (ciphers.Data[i].Data.Username) {
try { decLogin.username = cryptoService.decrypt(ciphers.Data[i].Data.Username); }
catch (err) { decLogin.username = '[error: cannot decrypt]'; }
}
decLogins.push(decLogin);
}
} }
$scope.folders = decFolders; $scope.folders = decFolders;
}, function () { $scope.logins = decLogins;
$scope.loadingFolders = false;
}); });
$scope.folderSort = function (item) { $scope.folderSort = function (item) {

View File

@@ -5,7 +5,7 @@
</h1> </h1>
</section> </section>
<section class="content"> <section class="content">
<div ng-show="loadingFolders && !folders.length"> <div ng-show="loading && !folders.length">
<p>Loading...</p> <p>Loading...</p>
</div> </div>
<div class="box" ng-repeat="folder in folders | orderBy: folderSort" ng-show="folders.length && (!main.searchVaultText || folderLogins.length)"> <div class="box" ng-repeat="folder in folders | orderBy: folderSort" ng-show="folders.length && (!main.searchVaultText || folderLogins.length)">
@@ -27,10 +27,7 @@
</div> </div>
</div> </div>
<div class="box-body" ng-class="{'no-padding': folderLogins.length}"> <div class="box-body" ng-class="{'no-padding': folderLogins.length}">
<div ng-show="loadingLogins && !folderLogins.length"> <div ng-show="!folderLogins.length">
<p>Loading logins...</p>
</div>
<div ng-show="!loadingLogins && !folderLogins.length">
<p>No logins in this folder.</p> <p>No logins in this folder.</p>
<button type="button" ng-click="addLogin(folder)" class="btn btn-default btn-flat">Add a Login</button> <button type="button" ng-click="addLogin(folder)" class="btn btn-default btn-flat">Add a Login</button>
</div> </div>