From 67625745091788b14d7bb8d786f947ba8da29b9a Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 7 Feb 2009 11:10:08 +0300 Subject: offline: implement local catchup --- offline.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/offline.js b/offline.js index 7402d61c6..e6d5c48a2 100644 --- a/offline.js +++ b/offline.js @@ -103,6 +103,10 @@ function viewfeed_offline(feed_id, subop, is_cat, subop_param, skip_history, off } } + if (subop == "MarkAllRead") { + catchup_local_feed(feed_id, is_cat); + } + disableContainerChildren("headlinesToolbar", false); Form.enable("main_toolbar_form"); @@ -1266,3 +1270,28 @@ function update_local_sync_data() { exception_error("update_local_sync_data", e); } } + +function catchup_local_feed(id, is_cat) { + try { + if (!is_cat) { + if (id >= 0) { + db.execute("UPDATE articles SET unread = 0 WHERE feed_id = ?", [id]); + } else if (id == -1) { + db.execute("UPDATE articles SET unread = 0 WHERE marked = 1"); + } else if (id == -4) { + db.execute("UPDATE articles SET unread = 0"); + } else if (id < -10) { + var label_id = -11-id; + + db.execute("UPDATE articles SET unread = 0 WHERE "+ + "(SELECT COUNT(*) FROM article_labels WHERE "+ + "article_labels.id = articles.id AND label_id = ?) > 0", [label_id]); + } + } + + update_local_feedlist_counters(); + + } catch (e) { + exception_error("catchup_local_feed", e); + } +} -- cgit v1.2.3