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 <gerard.alvear@logiqd.me>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
This commit is contained in:
authored and GitHub committed 2026-07-21 17:46:55 +02:00
1 parent 9e92ace6f2
commit 46f5e13019
2 files changed
+19 -1

No files matched your search

+16
View File
@@ -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 {