From 9945719517064f6294c196570373836fc17b05dd Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Tue, 17 Oct 2017 18:31:15 -0700 Subject: [PATCH] Use current local storage size for pruning calculations --- app/assets/javascripts/autocomplete.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/autocomplete.js b/app/assets/javascripts/autocomplete.js index 0ac019a38..22236b979 100644 --- a/app/assets/javascripts/autocomplete.js +++ b/app/assets/javascripts/autocomplete.js @@ -3,6 +3,9 @@ Danbooru.Autocomplete.AUTOCOMPLETE_VERSION = 1; + //Just under 5MB of 16-bit characters + Danbooru.Autocomplete.MAX_STORAGE_SIZE = 2500000; + Danbooru.Autocomplete.initialize_all = function() { if (Danbooru.meta("enable-auto-complete") === "true") { Danbooru.Autocomplete.enable_local_storage = this.test_local_storage(); @@ -25,7 +28,8 @@ Danbooru.Autocomplete.prune_local_storage = function() { if (this.enable_local_storage) { var cached_autocomplete_version = $.localStorage.get("danbooru-autocomplete-version"); - if (cached_autocomplete_version !== this.AUTOCOMPLETE_VERSION || $.localStorage.keys().length > 4000) { + var current_cache_size = $.localStorage.keys().reduce( function(total, key) { return total + localStorage[key].length; }, 0); + if (cached_autocomplete_version !== this.AUTOCOMPLETE_VERSION || current_cache_size > this.MAX_STORAGE_SIZE) { $.each($.localStorage.keys(), function(i, key) { if (key.substr(0, 3) === "ac-") { $.localStorage.remove(key);