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) {