From 44378220093ee5bd873b553f5be556921c778663 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Fri, 8 May 2015 11:31:05 +0100 Subject: Search completion; clear (not replace) the cache. --- lib/utils.coffee | 11 +++++++++++ pages/vomnibar.coffee | 5 +++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/utils.coffee b/lib/utils.coffee index 354d82f6..1c24a40f 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -236,6 +236,17 @@ class SimpleCache else null + clear: -> + @rotate() + @rotate() + + # Because of the timer, we can't just let these caches go out of scope and have the garbage collector + # harvest them. Whenever they may fall out of use, we need to remove the timer. @rotate() can be used to + # restart the cache. + suspend: -> + clearTimeout @timer if @timer? + @timer = null + # Set value, and return that value. If value is null, then delete key. set: (key, value = null) -> if value? diff --git a/pages/vomnibar.coffee b/pages/vomnibar.coffee index de1e6452..76e276a1 100644 --- a/pages/vomnibar.coffee +++ b/pages/vomnibar.coffee @@ -210,6 +210,7 @@ class BackgroundCompleter constructor: (@name) -> @port = chrome.runtime.connect name: "completions" @messageId = null + @cache ?= new SimpleCache 1000 * 60 * 5 @reset() @port.onMessage.addListener (msg) => @@ -259,8 +260,8 @@ class BackgroundCompleter @port.postMessage name: @name, handler: "refresh" reset: -> - # We only cache results for the duration of a single vomnibar activation. - @cache = new SimpleCache 1000 * 60 * 5 + # We only cache results for the duration of a single vomnibar activation, so clear the cache now. + @cache.clear() @mostRecentQuery = null cancel: -> -- cgit v1.2.3