X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;ds=sidebyside;f=viewfeed.js;h=acce5310d8f714965e4deb26328229fc2dfb7d15;hb=91743a49ff54862ac5b14e6d026849705c8651df;hp=6f018d19ca2e079206047ef3f0033eab83d7e697;hpb=31234407bffa5debe79250e93a4168ea2251e094;p=tt-rss.git diff --git a/viewfeed.js b/viewfeed.js index 6f018d19..acce5310 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -343,6 +343,10 @@ function article_callback2(transport, id, feed_id) { showArticleInHeadlines(id); + if (db) { + db.execute("UPDATE articles SET unread = 0 WHERE id = ?", [id]); + } + var reply = transport.responseXML.firstChild.firstChild; } else { @@ -362,14 +366,16 @@ function article_callback2(transport, id, feed_id) { setTimeout('updateFeedList(false, false)', 50); _reload_feedlist_after_view = false; } else { - var counters = transport.responseXML.getElementsByTagName("counters")[0]; + if (transport.responseXML) { + var counters = transport.responseXML.getElementsByTagName("counters")[0]; - if (counters) { - debug("parsing piggybacked counters: " + counters); - parse_counters(counters, false); - } else { - debug("counters container not found in reply, requesting..."); - request_counters(); + if (counters) { + debug("parsing piggybacked counters: " + counters); + parse_counters(counters, false); + } else { + debug("counters container not found in reply, requesting..."); + request_counters(); + } } } @@ -383,7 +389,9 @@ function view(id, feed_id, skip_history) { try { debug("loading article: " + id + "/" + feed_id); - + + if (offline_mode) return view_offline(id, feed_id); + var cached_article = cache_find(id); debug("cache check result: " + (cached_article != false)); @@ -535,6 +543,10 @@ function toggleMark(id, client_only, no_effects) { mark_img.alt = __("Unstar article"); query = query + "&mark=1"; + if (db) { + db.execute("UPDATE articles SET marked = 1 WHERE id = ?", [id]); + } + } else { //mark_img.src = "images/mark_unset.png"; mark_img.alt = __("Please wait..."); @@ -546,8 +558,15 @@ function toggleMark(id, client_only, no_effects) { mark_img.src = mark_img.src.replace("mark_set", "mark_unset"); mark_img.alt = __("Star article"); } + + if (db) { + db.execute("UPDATE articles SET marked = 0 WHERE id = ?", [id]); + } + } + update_local_feedlist_counters(); + if (!client_only) { debug(query); @@ -792,6 +811,12 @@ function toggleUnread(id, cmode, effect) { } else { row.className = nc + "Unread"; } + + if (db) { + db.execute("UPDATE articles SET unread = not unread "+ + "WHERE id = ?", [id]); + } + } else if (cmode == 0) { row.className = nc; @@ -800,10 +825,24 @@ function toggleUnread(id, cmode, effect) { afterFinish: toggleUnread_afh, queue: { position:'end', scope: 'TMRQ-' + id, limit: 1 } } ); } + + if (db) { + db.execute("UPDATE articles SET unread = 0 "+ + "WHERE id = ?", [id]); + } + } else if (cmode == 1) { row.className = nc + "Unread"; + + if (db) { + db.execute("UPDATE articles SET unread = 1 "+ + "WHERE id = ?", [id]); + } + } + update_local_feedlist_counters(); + // Disable unmarking as selected for the time being (16.05.08) -fox if (is_selected) row.className = row.className + "Selected"; @@ -821,7 +860,6 @@ function toggleUnread(id, cmode, effect) { } - } catch (e) { exception_error("toggleUnread", e); } @@ -1501,11 +1539,16 @@ function cache_find(id) { if (db) { var rs = db.execute("SELECT article FROM cache WHERE id = ?", [id]); + var a = false; if (rs.isValidRow()) { - return rs.field(0); + var a = rs.field(0); } + rs.close(); + + return a; + } else { for (var i = 0; i < article_cache.length; i++) { if (article_cache[i]["id"] == id) { @@ -1521,11 +1564,16 @@ function cache_find_param(id, param) { if (db) { var rs = db.execute("SELECT article FROM cache WHERE id = ? AND param = ?", [id, param]); + var a = false; if (rs.isValidRow()) { - return rs.field(0); + a = rs.field(0); } + rs.close(); + + return a; + } else { for (var i = 0; i < article_cache.length; i++) { if (article_cache[i]["id"] == id && article_cache[i]["param"] == param) { @@ -1541,11 +1589,16 @@ function cache_check(id) { if (db) { var rs = db.execute("SELECT COUNT(*) AS c FROM cache WHERE id = ?", [id]); + var a = false; if (rs.isValidRow()) { - return rs.field(0) != "0"; + a = rs.field(0) != "0"; } + rs.close(); + + return a; + } else { for (var i = 0; i < article_cache.length; i++) { if (article_cache[i]["id"] == id) { @@ -1561,11 +1614,16 @@ function cache_check_param(id, param) { if (db) { var rs = db.execute("SELECT COUNT(*) AS c FROM cache WHERE id = ? AND param = ?", [id, param]); + var a = false; if (rs.isValidRow()) { - return rs.field(0) != "0"; + a = rs.field(0) != "0"; } + rs.close(); + + return a; + } else { for (var i = 0; i < article_cache.length; i++) { if (article_cache[i]["id"] == id && article_cache[i]["param"] == param) { @@ -1581,7 +1639,10 @@ function cache_expire() { var date = new Date(); var ts = Math.round(date.getTime() / 1000); - db.execute("DELETE FROM cache WHERE added < ? - 600", [ts]); + db.execute("DELETE FROM cache WHERE added < ? - 1800 AND id LIKE 'FEEDLIST'", [ts]); + db.execute("DELETE FROM cache WHERE added < ? - 600 AND (id LIKE 'F:%' OR id LIKE 'C:%')", [ts]); + db.execute("DELETE FROM cache WHERE added < ? - 86400", [ts]); + } else { while (article_cache.length > 25) { @@ -1633,9 +1694,9 @@ function cdmClicked(id) { var id = elem.id.replace("RROW-", ""); active_post_id = id; - cdmSelectArticles("none"); +// cdmSelectArticles("none"); toggleUnread(id, 0, true); - toggleSelected(id); +// toggleSelected(id); } } catch (e) {