GUACAMOLE-1745: Ensure deep copies of session storage are created only if necessary.

This commit is contained in:
Michael Jumper
2023-02-27 14:44:46 -08:00
committed by Mike Jumper
parent 116edebf36
commit b58d236fd2

View File

@@ -70,11 +70,22 @@ angular.module('storage').factory('sessionStorageFactory', ['$injector', functio
if (typeof template === 'function') if (typeof template === 'function')
getter = template; getter = template;
// Otherwise, always create a deep copy // Otherwise, create and maintain a deep copy (automatically cached to
else // avoid "infdig" errors)
getter = function getCopy() { else {
return angular.copy(template); var cached = angular.copy(template);
getter = function getIndependentCopy() {
// Reset to template only if changed externally, such that
// session storage values can be safely used in scope watches
// even if not logged in
if (!_.isEqual(cached, template))
cached = angular.copy(template);
return cached;
}; };
}
/** /**
* The current value of this storage, or undefined if not yet set. * The current value of this storage, or undefined if not yet set.