From b4298f498f8afb5c5ac0bfa65bb628cf47561a21 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Thu, 13 Oct 2016 23:33:42 +0200 Subject: Scroll as read https://github.com/FreshRSS/FreshRSS/issues/1258 --- p/scripts/main.js | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) (limited to 'p/scripts') diff --git a/p/scripts/main.js b/p/scripts/main.js index d42704f7a..b2bd994ad 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -116,21 +116,18 @@ function incUnreadsFeed(article, feed_id, nb) { var pending_entries = {}; function mark_read(active, only_not_read) { - if (active.length === 0 || + if (active.length === 0 || active.attr('id') == '' || (only_not_read === true && !active.hasClass("not_read"))) { return false; } - var url = active.find("a.read").attr("href"); - if (url === undefined) { - return false; - } - if (pending_entries[active.attr('id')]) { return false; } pending_entries[active.attr('id')] = true; + var url = '.?c=entry&a=read&id=' + active.attr('id').replace(/^flux_/, ''); + $.ajax({ type: 'POST', url: url, @@ -150,10 +147,11 @@ function mark_read(active, only_not_read) { } $r.find('.icon').replaceWith(data.icon); - var feed_url = active.find(".website>a").attr("href"), - feed_id = feed_url.substr(feed_url.lastIndexOf('f_')); - - incUnreadsFeed(active, feed_id, inc); + var feed_url = active.find(".website>a").attr("href"); + if (feed_url) { + var feed_id = feed_url.substr(feed_url.lastIndexOf('f_')); + incUnreadsFeed(active, feed_id, inc); + } faviconNbUnread(); delete pending_entries[active.attr('id')]; @@ -451,14 +449,9 @@ function auto_share(key) { } function inMarkViewport(flux, box_to_follow) { - var top = flux.offset().top; - var height = flux.height(), - begin = top + 3 * height / 4, - bot = Math.min(begin + 75, top + height), - windowTop = box_to_follow.scrollTop(), - windowBot = windowTop + box_to_follow.height() / 2; - - return (windowBot >= begin && bot >= windowBot); + var bottom = flux.offset().top + flux.height(), + windowTop = box_to_follow.scrollTop(); + return bottom < windowTop + 40; } function init_posts() { @@ -470,7 +463,7 @@ function init_posts() { if (context.auto_mark_scroll) { box_to_follow.scroll(function () { $('.not_read:visible').each(function () { - if ($(this).children(".flux_content").is(':visible') && inMarkViewport($(this), box_to_follow)) { + if (inMarkViewport($(this), box_to_follow)) { mark_read($(this), true); } }); -- cgit v1.2.3