gsklee / ngStorage

localStorage and sessionStorage done right for AngularJS.
MIT License
2.34k stars 461 forks source link

BUG: On $reset if load the same values the Local Storage is clear. #281

Open pdorgambide opened 5 years ago

pdorgambide commented 5 years ago

Bug: Browser storage mantein clear when $localstorage.$reset and try to load the same data. $localstorage.$reset($localstorage); // Brower Local Storage are empty

The cause: On $reset the _last$storage variable is not clear and this make that on $apply the conditon always is true: if (!angular.equals($storage, _last$storage))

Fix (suggested):

                  $reset: function(items) {
                            for (var k in $storage) {
                                '$' === k[0] || (delete $storage[k] && webStorage.removeItem(storageKeyPrefix + k));
                            }
                            _last$storage={}; 
                            return $storage.$default(items);
                        },
dlemstra commented 3 years ago

A hack that would work without changing the code would be:

const items = $localstorage;
$localstorage.$reset();
$localstorage.$apply(); // force storing the data to make sure _last$storage is overwritten.
$localstorage.$reset(items);