From 1686e6f149fb6d3ea80217ed18792d22ded45e6f Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 18 Apr 2018 20:43:30 -0700 Subject: [PATCH] GUACAMOLE-549: Migrate storage/retrieval of local preferences to localStorageService. --- .../settings/services/preferenceService.js | 37 +++++++------------ .../webapp/app/settings/settingsModule.js | 3 +- 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/guacamole/src/main/webapp/app/settings/services/preferenceService.js b/guacamole/src/main/webapp/app/settings/services/preferenceService.js index 9af428169..bcd86336b 100644 --- a/guacamole/src/main/webapp/app/settings/services/preferenceService.js +++ b/guacamole/src/main/webapp/app/settings/services/preferenceService.js @@ -21,7 +21,11 @@ * A service for setting and retrieving browser-local preferences. Preferences * may be any JSON-serializable type. */ -angular.module('settings').provider('preferenceService', function preferenceServiceProvider() { +angular.module('settings').provider('preferenceService', ['$injector', + function preferenceServiceProvider($injector) { + + // Required providers + var localStorageServiceProvider = $injector.get('localStorageServiceProvider'); /** * Reference to the provider itself. @@ -128,24 +132,18 @@ angular.module('settings').provider('preferenceService', function preferenceServ }; - // Get stored preferences, ignore inability to use localStorage - try { - - if (localStorage) { - var preferencesJSON = localStorage.getItem(GUAC_PREFERENCES_STORAGE_KEY); - if (preferencesJSON) - angular.extend(provider.preferences, JSON.parse(preferencesJSON)); - } - - } - catch (ignore) {} + // Get stored preferences from localStorage + var storedPreferences = localStorageServiceProvider.getItem(GUAC_PREFERENCES_STORAGE_KEY); + if (storedPreferences) + angular.extend(provider.preferences, storedPreferences); // Factory method required by provider this.$get = ['$injector', function preferenceServiceFactory($injector) { // Required services - var $rootScope = $injector.get('$rootScope'); - var $window = $injector.get('$window'); + var $rootScope = $injector.get('$rootScope'); + var $window = $injector.get('$window'); + var localStorageService = $injector.get('localStorageService'); var service = {}; @@ -168,14 +166,7 @@ angular.module('settings').provider('preferenceService', function preferenceServ * Persists the current values of all preferences, if possible. */ service.save = function save() { - - // Save updated preferences, ignore inability to use localStorage - try { - if (localStorage) - localStorage.setItem(GUAC_PREFERENCES_STORAGE_KEY, JSON.stringify(service.preferences)); - } - catch (ignore) {} - + localStorageService.setItem(GUAC_PREFERENCES_STORAGE_KEY, service.preferences); }; // Persist settings when window is unloaded @@ -195,4 +186,4 @@ angular.module('settings').provider('preferenceService', function preferenceServ }]; -}); +}]); diff --git a/guacamole/src/main/webapp/app/settings/settingsModule.js b/guacamole/src/main/webapp/app/settings/settingsModule.js index 7adc0d164..62ad1c813 100644 --- a/guacamole/src/main/webapp/app/settings/settingsModule.js +++ b/guacamole/src/main/webapp/app/settings/settingsModule.js @@ -26,5 +26,6 @@ angular.module('settings', [ 'list', 'navigation', 'notification', - 'rest' + 'rest', + 'storage' ]);