From 9c49cc3e1c572e46b5b346fdd4b42bbdd761d249 Mon Sep 17 00:00:00 2001 From: brantje Date: Sun, 11 Sep 2016 13:29:52 +0200 Subject: [PATCH] Add SettingService, setting default vault works --- js/app/app.js | 8 +++-- js/app/controllers/vault.js | 22 +++++++++++-- js/app/services/settingsservice.js | 31 +++++++++++++++++++ js/templates.js | 2 +- .../angular-local-storage.min.js | 9 ++++++ .../angular-local-storage.min.js.map | 1 + templates/main.php | 2 ++ templates/views/vaults.html | 2 +- 8 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 js/app/services/settingsservice.js create mode 100644 js/vendor/angular-local-storage/angular-local-storage.min.js create mode 100644 js/vendor/angular-local-storage/angular-local-storage.min.js.map diff --git a/js/app/app.js b/js/app/app.js index cc686d5a..cf955e10 100644 --- a/js/app/app.js +++ b/js/app/app.js @@ -16,7 +16,8 @@ angular 'ngRoute', 'ngSanitize', 'ngTouch', - 'templates-main' + 'templates-main', + 'LocalStorageModule' ]) .config(function ($routeProvider) { $routeProvider @@ -29,4 +30,7 @@ angular }); }).config(['$httpProvider', function ($httpProvider) { $httpProvider.defaults.headers.common.requesttoken = oc_requesttoken; -}]); +}]).config(function (localStorageServiceProvider) { + localStorageServiceProvider + .setNotify(true, true); +}); diff --git a/js/app/controllers/vault.js b/js/app/controllers/vault.js index d78950f8..b85cb1f9 100644 --- a/js/app/controllers/vault.js +++ b/js/app/controllers/vault.js @@ -8,17 +8,35 @@ * Controller of the passmanApp */ angular.module('passmanApp') - .controller('VaultCtrl', ['$scope', 'VaultService', function ($scope, VaultService) { + .controller('VaultCtrl', ['$scope', 'VaultService', 'SettingsService', function ($scope, VaultService, SettingsService) { VaultService.getVaults().then(function (vaults) { $scope.vaults = vaults; + if(SettingsService.getSetting('defaultVault') != null){ + var default_vault = SettingsService.getSetting('defaultVault'); + angular.forEach(vaults, function (vault) { + if(vault.guid == default_vault.guid){ + $scope.default_vault = true; + $scope.list_selected_vault = SettingsService.getSetting('defaultVault'); + return; + } + }) + } }); $scope.default_vault = false; $scope.remember_vault_password = false; - $scope.list_selected_vault = false; + $scope.toggleDefaultVault = function(){ + $scope.default_vault = !$scope.default_vault; + if($scope.default_vault == true){ + SettingsService.setSetting('defaultVault', $scope.list_selected_vault); + } else { + SettingsService.setSetting('defaultVault', null); + } + }; + $scope.clearState = function () { $scope.list_selected_vault = false; $scope.creating_vault = false; diff --git a/js/app/services/settingsservice.js b/js/app/services/settingsservice.js new file mode 100644 index 00000000..218057c5 --- /dev/null +++ b/js/app/services/settingsservice.js @@ -0,0 +1,31 @@ +'use strict'; + +/** + * @ngdoc service + * @name passmanApp.VaultService + * @description + * # VaultService + * Service in the passmanApp. + */ +angular.module('passmanApp') + .service('SettingsService', ['localStorageService', function (localStorageService) { + var settings = { + defaultVault: null, + defaultVaultPassword: null + }; + + var cookie = localStorageService.get('settings'); + settings = angular.merge(settings, cookie); + return { + getSettings: function(){ + return settings + }, + getSetting: function(name){ + return settings[name] + }, + setSetting: function (name, value) { + settings[name] = value; + localStorageService.set('settings', settings); + } + } + }]); diff --git a/js/templates.js b/js/templates.js index a0ec2bfe..ec8d3f6a 100644 --- a/js/templates.js +++ b/js/templates.js @@ -3,5 +3,5 @@ angular.module('templates-main', ['views/vaults.html']); angular.module('views/vaults.html', []).run(['$templateCache', function($templateCache) { 'use strict'; $templateCache.put('views/vaults.html', - '
  • + Create a new vault
  • {{vault.name}}
    Created: {{vault.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}} | Last accessed: {{vault.last_access * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}
  • No vaults found, why not create one?
  • Go back to vaults
'); + '
  • + Create a new vault
  • {{vault.name}}
    Created: {{vault.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}} | Last accessed: {{vault.last_access * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}
  • No vaults found, why not create one?
  • Go back to vaults
'); }]); diff --git a/js/vendor/angular-local-storage/angular-local-storage.min.js b/js/vendor/angular-local-storage/angular-local-storage.min.js new file mode 100644 index 00000000..47daf0ca --- /dev/null +++ b/js/vendor/angular-local-storage/angular-local-storage.min.js @@ -0,0 +1,9 @@ +/** + * An Angular module that gives you access to the browsers local storage + * @version v0.4.0 - 2016-08-17 + * @link https://github.com/grevory/angular-local-storage + * @author grevory + * @license MIT License, http://www.opensource.org/licenses/MIT + */ +!function(a,b){var c=b.isDefined,d=b.isUndefined,e=b.isNumber,f=b.isObject,g=b.isArray,h=b.extend,i=b.toJson;b.module("LocalStorageModule",[]).provider("localStorageService",function(){this.prefix="ls",this.storageType="localStorage",this.cookie={expiry:30,path:"/",secure:!1},this.defaultToCookie=!0,this.notify={setItem:!0,removeItem:!1},this.setPrefix=function(a){return this.prefix=a,this},this.setStorageType=function(a){return this.storageType=a,this},this.setDefaultToCookie=function(a){return this.defaultToCookie=!!a,this},this.setStorageCookie=function(a,b,c){return this.cookie.expiry=a,this.cookie.path=b,this.cookie.secure=c,this},this.setStorageCookieDomain=function(a){return this.cookie.domain=a,this},this.setNotify=function(a,b){return this.notify={setItem:a,removeItem:b},this},this.$get=["$rootScope","$window","$document","$parse","$timeout",function(a,b,j,k,l){function m(c){if(c||(c=b.event),r.setItem&&v(c.key)){var d=u(c.key);l(function(){a.$broadcast("LocalStorageModule.notification.changed",{key:d,newvalue:c.newValue,storageType:o.storageType})})}}var n,o=this,p=o.prefix,q=o.cookie,r=o.notify,s=o.storageType;j?j[0]&&(j=j[0]):j=document,"."!==p.substr(-1)&&(p=p?p+".":"");var t=function(a){return p+a},u=function(a){return a.replace(new RegExp("^"+p,"g"),"")},v=function(a){return 0===a.indexOf(p)},w=function(){try{var c=s in b&&null!==b[s],d=t("__"+Math.round(1e7*Math.random()));return c&&(n=b[s],n.setItem(d,""),n.removeItem(d)),c}catch(e){return o.defaultToCookie&&(s="cookie"),a.$broadcast("LocalStorageModule.notification.error",e.message),!1}},x=w(),y=function(b,c,e){if(J(e),c=d(c)?null:i(c),!x&&o.defaultToCookie||"cookie"===o.storageType)return x||a.$broadcast("LocalStorageModule.notification.warning","LOCAL_STORAGE_NOT_SUPPORTED"),r.setItem&&a.$broadcast("LocalStorageModule.notification.setitem",{key:b,newvalue:c,storageType:"cookie"}),E(b,c);try{n&&n.setItem(t(b),c),r.setItem&&a.$broadcast("LocalStorageModule.notification.setitem",{key:b,newvalue:c,storageType:o.storageType})}catch(f){return a.$broadcast("LocalStorageModule.notification.error",f.message),E(b,c)}return!0},z=function(b,c){if(J(c),!x&&o.defaultToCookie||"cookie"===o.storageType)return x||a.$broadcast("LocalStorageModule.notification.warning","LOCAL_STORAGE_NOT_SUPPORTED"),F(b);var d=n?n.getItem(t(b)):null;if(!d||"null"===d)return null;try{return JSON.parse(d)}catch(e){return d}},A=function(){var b=0;arguments.length>=1&&("localStorage"===arguments[arguments.length-1]||"sessionStorage"===arguments[arguments.length-1])&&(b=1,J(arguments[arguments.length-1]));var c,d;for(c=0;c0||(j.cookie="test").indexOf.call(j.cookie,"test")>-1)}catch(c){return a.$broadcast("LocalStorageModule.notification.error",c.message),!1}}(),E=function(b,c,h,k){if(d(c))return!1;if((g(c)||f(c))&&(c=i(c)),!D)return a.$broadcast("LocalStorageModule.notification.error","COOKIES_NOT_SUPPORTED"),!1;try{var l="",m=new Date,n="";if(null===c?(m.setTime(m.getTime()+-864e5),l="; expires="+m.toGMTString(),c=""):e(h)&&0!==h?(m.setTime(m.getTime()+24*h*60*60*1e3),l="; expires="+m.toGMTString()):0!==q.expiry&&(m.setTime(m.getTime()+24*q.expiry*60*60*1e3),l="; expires="+m.toGMTString()),b){var o="; path="+q.path;q.domain&&(n="; domain="+q.domain),"boolean"==typeof k?k===!0&&(n+="; secure"):q.secure===!0&&(n+="; secure"),j.cookie=t(b)+"="+encodeURIComponent(c)+l+o+n}}catch(p){return a.$broadcast("LocalStorageModule.notification.error",p.message),!1}return!0},F=function(b){if(!D)return a.$broadcast("LocalStorageModule.notification.error","COOKIES_NOT_SUPPORTED"),!1;for(var c=j.cookie&&j.cookie.split(";")||[],d=0;d