From 751935e90b5d16ebc040c7ee3a61eadece57679e Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 3 Apr 2017 14:07:39 -0400 Subject: [PATCH] persist folder/subvault collapse --- src/app/vault/vaultController.js | 21 +++++++++++++++++++-- src/app/vault/vaultSubvaultsController.js | 17 ++++++++++++++++- src/app/vault/views/vault.html | 14 ++++++++------ src/app/vault/views/vaultSubvaults.html | 7 ++++--- 4 files changed, 47 insertions(+), 12 deletions(-) diff --git a/src/app/vault/vaultController.js b/src/app/vault/vaultController.js index 8c7e823c01f..b1cc18aba21 100644 --- a/src/app/vault/vaultController.js +++ b/src/app/vault/vaultController.js @@ -2,20 +2,23 @@ .module('bit.vault') .controller('vaultController', function ($scope, $uibModal, apiService, $filter, cryptoService, authService, toastr, - cipherService, $q) { + cipherService, $q, $localStorage) { $scope.logins = []; $scope.folders = []; $scope.loading = true; + $scope.favoriteCollapsed = $localStorage.collapsedFolders && 'favorite' in $localStorage.collapsedFolders; $scope.$on('$viewContentLoaded', function () { var folderPromise = apiService.folders.list({}, function (folders) { var decFolders = [{ id: null, - name: 'No Folder' + name: 'No Folder', + collapsed: $localStorage.collapsedFolders && 'none' in $localStorage.collapsedFolders }]; for (var i = 0; i < folders.Data.length; i++) { var decFolder = cipherService.decryptFolderPreview(folders.Data[i]); + decFolder.collapsed = $localStorage.collapsedFolders && decFolder.id in $localStorage.collapsedFolders; decFolders.push(decFolder); } @@ -48,6 +51,20 @@ return item.name.toLowerCase(); }; + $scope.collapseExpand = function (folder, favorite) { + if (!$localStorage.collapsedFolders) { + $localStorage.collapsedFolders = {}; + } + + var id = favorite ? 'favorite' : (folder.id || 'none'); + if (id in $localStorage.collapsedFolders) { + delete $localStorage.collapsedFolders[id]; + } + else { + $localStorage.collapsedFolders[id] = true; + } + }; + $scope.editLogin = function (login) { var editModel = $uibModal.open({ animation: true, diff --git a/src/app/vault/vaultSubvaultsController.js b/src/app/vault/vaultSubvaultsController.js index f425c4917bf..c97f24dd0a7 100644 --- a/src/app/vault/vaultSubvaultsController.js +++ b/src/app/vault/vaultSubvaultsController.js @@ -1,7 +1,7 @@ angular .module('bit.vault') - .controller('vaultSubvaultsController', function ($scope, apiService, cipherService, $analytics, $q) { + .controller('vaultSubvaultsController', function ($scope, apiService, cipherService, $analytics, $q, $localStorage) { $scope.logins = []; $scope.subvaults = []; $scope.loading = true; @@ -12,6 +12,8 @@ for (var i = 0; i < subvaults.Data.length; i++) { var decSubvault = cipherService.decryptSubvault(subvaults.Data[i], null, true); + decSubvault.collapsed = $localStorage.collapsedSubvaults && + decSubvault.id in $localStorage.collapsedSubvaults; decSubvaults.push(decSubvault); } @@ -41,4 +43,17 @@ return cipher.subvaultIds.indexOf(subvault.id) > -1; }; }; + + $scope.collapseExpand = function (subvault) { + if (!$localStorage.collapsedSubvaults) { + $localStorage.collapsedSubvaults = {}; + } + + if (subvault.id in $localStorage.collapsedFolders) { + delete $localStorage.collapsedSubvaults[subvault.id]; + } + else { + $localStorage.collapsedSubvaults[subvault.id] = true; + } + }; }); diff --git a/src/app/vault/views/vault.html b/src/app/vault/views/vault.html index cca3cdf1e71..8b5063e7289 100644 --- a/src/app/vault/views/vault.html +++ b/src/app/vault/views/vault.html @@ -8,7 +8,7 @@

Loading...

-

@@ -29,8 +29,9 @@

-
@@ -74,7 +75,7 @@ -

@@ -105,8 +106,9 @@

-
diff --git a/src/app/vault/views/vaultSubvaults.html b/src/app/vault/views/vaultSubvaults.html index d0dcfc30938..149471e9756 100644 --- a/src/app/vault/views/vaultSubvaults.html +++ b/src/app/vault/views/vaultSubvaults.html @@ -11,7 +11,7 @@

No subvaults.

-

@@ -19,8 +19,9 @@ {{subvault.name}} {{subvaultLogins.length}} logins

-