From 78b2c6ce9a0574433791cc7f3330bf8d729123d2 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 31 Aug 2011 14:03:52 +0400 Subject: rework caching, use html5 local storage allow caching of headlines code cleanup --- feedlist.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'feedlist.js') 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") { -- cgit v1.2.3