From 0442243037fc7fb80228790a871328629a1aa882 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Mon, 18 May 2020 18:45:47 +0200 Subject: Fix nav_menu mark-as-read (#2909) * Fix nav_menu mark-as-read #Fix https://github.com/FreshRSS/FreshRSS/issues/2905 Fix regression from https://github.com/FreshRSS/FreshRSS/pull/2588 We need info about the first item (id_max) before being able to output nav_menu. Before https://github.com/FreshRSS/FreshRSS/pull/2588 we used to output everything in memory before starting to produce an output. Now that we stream the output, we need a temporary buffer until we have received the first item/article. * Repair loading page * Simplify CSS Make it work in Chrome as well * Lint * Partial revert * Base max_id solely on current time --- app/Controllers/indexController.php | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) (limited to 'app/Controllers/indexController.php') diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php index ddd51455d..ff746f4bf 100755 --- a/app/Controllers/indexController.php +++ b/app/Controllers/indexController.php @@ -48,6 +48,8 @@ class FreshRSS_index_Controller extends Minz_ActionController { } Minz_View::prependTitle($title . ' ยท '); + FreshRSS_Context::$id_max = time() . '000000'; + $this->view->callbackBeforeFeeds = function ($view) { try { $tagDAO = FreshRSS_Factory::createTagDao(); @@ -66,29 +68,20 @@ class FreshRSS_index_Controller extends Minz_ActionController { FreshRSS_Context::$number++; //+1 for pagination $view->entries = FreshRSS_index_Controller::listEntriesByContext(); FreshRSS_Context::$number--; - ob_start(); + ob_start(); //Buffer "one entry at a time" } catch (FreshRSS_EntriesGetter_Exception $e) { Minz_Log::notice($e->getMessage()); Minz_Error::error(404); } }; - $this->view->callbackBeforePagination = function ($view, $nbEntries, $firstEntry, $lastEntry) { + $this->view->callbackBeforePagination = function ($view, $nbEntries, $lastEntry) { if ($nbEntries >= FreshRSS_Context::$number) { //We have enough entries: we discard the last one to use it for the next pagination ob_clean(); FreshRSS_Context::$next_id = $lastEntry->id(); } ob_end_flush(); - - FreshRSS_Context::$id_max = $firstEntry === null ? (time() - 1) . '000000' : $firstEntry->id(); - if (FreshRSS_Context::$order === 'ASC') { - // In this case we do not know but we guess id_max - $id_max = (time() - 1) . '000000'; - if (strcmp($id_max, FreshRSS_Context::$id_max) > 0) { - FreshRSS_Context::$id_max = $id_max; - } - } }; } -- cgit v1.2.3