From 46f5e13019cc2e337ce78d3b512495b6d9a31dc9 Mon Sep 17 00:00:00 2001 From: Gerard Alvear Porras <55630227+Elgeryy1@users.noreply.github.com> Date: Tue, 21 Jul 2026 17:46:55 +0200 Subject: [PATCH] Refresh only feeds in the current view (#9060) * Refresh only feeds in the current view Closes #8025. Passes the current feed or category selection to the refresh endpoint and limits the batch accordingly. * Fix case of Dynamic OPML, and keep feed order --------- Co-authored-by: Gerard Alvear Co-authored-by: Alexandre Alapetite --- app/Controllers/javascriptController.php | 16 ++++++++++++++++ p/scripts/main.js | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/Controllers/javascriptController.php b/app/Controllers/javascriptController.php index d045cd7b5..c760fa5a7 100644 --- a/app/Controllers/javascriptController.php +++ b/app/Controllers/javascriptController.php @@ -39,6 +39,22 @@ class FreshRSS_javascript_Controller extends FreshRSS_ActionController { $feedDAO = FreshRSS_Factory::createFeedDao(); $this->view->feeds = $feedDAO->listFeedsOrderUpdate(FreshRSS_Context::userConf()->ttl_default); + + // When the refresh button is used from a feed or category view, limit the + // batch to the feeds visible in that view. + $get = Minz_Request::paramString('get'); + if (preg_match('/^c_(\d+)$/', $get, $matches)) { + $category = $this->view->categories[(int)$matches[1]] ?? null; + if ($category !== null) { + $this->view->categories = [$category->id() => $category]; + // Filter feeds to keep only those from the selected category, preserving the order + $this->view->feeds = array_filter($this->view->feeds, static fn(FreshRSS_Feed $feed) => $feed->category() === $category->id()); + } + } elseif (preg_match('/^f_(\d+)$/', $get, $matches)) { + $feed = $feedDAO->searchById((int)$matches[1]); + $this->view->categories = []; + $this->view->feeds = $feed === null ? [] : [$feed->id() => $feed]; + } } public function nbUnreadsPerFeedAction(): void { diff --git a/p/scripts/main.js b/p/scripts/main.js index f19de32b4..8b5199b58 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -1919,7 +1919,9 @@ function init_actualize() { context.ajax_loading = true; const req = new XMLHttpRequest(); - req.open('POST', './?c=javascript&a=actualize', true); + const currentGet = new URLSearchParams(window.location.search).get('get'); + const scope = currentGet ? '&get=' + encodeURIComponent(currentGet) : ''; + req.open('POST', './?c=javascript&a=actualize' + scope, true); req.responseType = 'json'; req.onload = function (e) { if (this.status != 200) {