1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-10-20 07:40:57 +02:00
bitwarden-browser/src/popup/app/vault/vaultController.js

140 lines
4.6 KiB
JavaScript
Raw Normal View History

angular
.module('bit.vault')
.controller('vaultController', function ($scope, $rootScope, siteService, folderService, $q, cipherService, $state, $stateParams, $uibModal, toastr) {
2016-09-13 06:14:49 +02:00
$('#search').focus();
2016-09-10 05:00:11 +02:00
var delayLoad = true;
if (!$rootScope.vaultSites) {
$rootScope.vaultSites = [];
2016-09-10 05:00:11 +02:00
delayLoad = false;
}
if (!$rootScope.vaultFolders) {
$rootScope.vaultFolders = [];
delayLoad = false;
}
2016-09-10 05:00:11 +02:00
if (delayLoad) {
setTimeout(setScrollY, 100);
2016-09-10 05:00:11 +02:00
setTimeout(loadVault, 1000);
}
else {
loadVault();
}
2016-09-06 05:30:45 +02:00
function loadVault() {
2016-09-10 05:00:11 +02:00
var promises = [];
2016-09-06 05:30:45 +02:00
var decSites = [];
var decFolders = [{
id: null,
name: '(none)'
}];
2016-09-05 17:05:27 +02:00
2016-09-06 05:30:45 +02:00
folderService.getAll(function (folders) {
siteService.getAll(function (sites) {
2016-09-07 05:30:49 +02:00
for (var i = 1; i < folders.length; i++) {
2016-09-06 05:30:45 +02:00
decFolders.push({
id: folders[i].id
});
2016-09-05 17:05:27 +02:00
2016-09-07 05:30:49 +02:00
var folderNamePromise = cipherService.decrypt(folders[i].name, i);
2016-09-06 05:30:45 +02:00
promises.push(folderNamePromise);
folderNamePromise.then(function (obj) {
decFolders[obj.index].name = obj.val;
});
}
2016-09-06 04:27:32 +02:00
2016-09-06 05:30:45 +02:00
for (var j = 0; j < sites.length; j++) {
decSites.push({
id: sites[j].id,
folderId: sites[j].folderId,
favorite: sites[j].favorite
});
var namePromise = cipherService.decrypt(sites[j].name, j);
2016-09-06 05:30:45 +02:00
promises.push(namePromise);
namePromise.then(function (obj) {
decSites[obj.index].name = obj.val;
});
var usernamePromise = cipherService.decrypt(sites[j].username, j);
2016-09-06 05:30:45 +02:00
promises.push(usernamePromise);
usernamePromise.then(function (obj) {
decSites[obj.index].username = obj.val;
});
var passwordPromise = cipherService.decrypt(sites[j].password, j);
promises.push(passwordPromise);
passwordPromise.then(function (obj) {
decSites[obj.index].password = obj.val;
});
2016-09-06 05:30:45 +02:00
}
$q.all(promises).then(function () {
2016-09-10 05:00:11 +02:00
$rootScope.vaultSites = decSites;
$rootScope.vaultFolders = decFolders;
if (!delayLoad) {
setScrollY();
}
2016-09-06 05:30:45 +02:00
});
2016-09-06 04:27:32 +02:00
});
});
2016-09-06 05:30:45 +02:00
}
2016-09-13 06:14:49 +02:00
$scope.searchText = null;
if ($stateParams.searchText) {
$scope.searchText = $stateParams.searchText;
}
2016-09-07 05:30:49 +02:00
$scope.folderSort = function (item) {
if (!item.id) {
return '';
}
return item.name.toLowerCase();
};
2016-09-13 06:14:49 +02:00
$scope.setFolderFilter = function (folder) {
$scope.folderFilter = {};
$scope.folderFilter.folderId = folder.id;
};
2016-09-13 06:14:49 +02:00
$scope.addSite = function () {
$state.go('addSite', {
animation: 'in-slide-up',
2016-09-13 06:14:49 +02:00
returnScrollY: getScrollY(),
returnSearchText: $scope.searchText
});
};
$scope.viewSite = function (site) {
$state.go('viewSite', {
siteId: site.id,
animation: 'in-slide-up',
2016-09-13 06:14:49 +02:00
returnScrollY: getScrollY(),
returnSearchText: $scope.searchText
});
};
$scope.clipboardError = function (e) {
toastr.info('Your web browser does not support easy clipboard copying. Copy it manually instead.');
};
$scope.clipboardSuccess = function (e, type) {
e.clearSelection();
toastr.info(type + ' copied!');
};
function getScrollY() {
var content = document.getElementsByClassName('content')[0];
return content.scrollTop;
}
function setScrollY() {
if ($stateParams.scrollY) {
var content = document.getElementsByClassName('content')[0];
content.scrollTop = $stateParams.scrollY;
}
}
});