diff options
author | Andrew Dolgov <[email protected]> | 2011-08-31 14:03:52 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2011-08-31 14:04:19 +0400 |
commit | 78b2c6ce9a0574433791cc7f3330bf8d729123d2 (patch) | |
tree | 13d2d7863251cbd185b4ab783e958575f0595902 /feedlist.js | |
parent | 81787bbf9840a7f43bd40ecca00834b5b078eb31 (diff) |
rework caching, use html5 local storage
allow caching of headlines
code cleanup
Diffstat (limited to 'feedlist.js')
-rw-r--r-- | feedlist.js | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/feedlist.js b/feedlist.js index fb8a5de28..ab21a30fb 100644 --- a/feedlist.js +++ b/feedlist.js @@ -50,15 +50,22 @@ function loadMoreHeadlines() { function viewfeed(feed, subop, is_cat, offset) { try { - if (is_cat == undefined) is_cat = false; + if (is_cat == undefined) + is_cat = false; + else + is_cat = !!is_cat; + if (subop == undefined) subop = ''; if (offset == undefined) offset = 0; last_requested_article = 0; - if (feed == getActiveFeedId()) { - cache_invalidate("F:" + feed); - } + var cached_headlines = false; + + if (feed == getActiveFeedId()) + cache_delete("feed:" + feed + ":" + is_cat); + else + cached_headlines = cache_get("feed:" + feed + ":" + is_cat); dijit.byId("content-tabs").selectChild( dijit.byId("content-tabs").getChildren()[0]); @@ -70,6 +77,15 @@ function viewfeed(feed, subop, is_cat, offset) { _infscroll_disable = 0; } + if (!offset && !subop && cached_headlines) { + try { + render_local_headlines(feed, is_cat, JSON.parse(cached_headlines)); + return; + } catch (e) { + console.warn("render_local_headlines failed: " + e); + } + } + if (offset != 0 && !subop) { var date = new Date(); var timestamp = Math.round(date.getTime() / 1000); @@ -283,6 +299,9 @@ function parse_counters(elems, scheduled_call) { displayNewContentPrompt(id); } + if (getFeedUnread(id, (kind == "cat")) != ctr) + cache_delete("feed:" + id + ":" + (kind == "cat")); + setFeedUnread(id, (kind == "cat"), ctr); if (kind != "cat") { |