summaryrefslogtreecommitdiff
path: root/feedlist.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2011-08-31 14:03:52 +0400
committerAndrew Dolgov <[email protected]>2011-08-31 14:04:19 +0400
commit78b2c6ce9a0574433791cc7f3330bf8d729123d2 (patch)
tree13d2d7863251cbd185b4ab783e958575f0595902 /feedlist.js
parent81787bbf9840a7f43bd40ecca00834b5b078eb31 (diff)
rework caching, use html5 local storage
allow caching of headlines code cleanup
Diffstat (limited to 'feedlist.js')
-rw-r--r--feedlist.js27
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") {