From eefab601da940d60bef42bf6972b37d546091981 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Guillot?= <fred@miniflux.net>
Date: Mon, 4 Dec 2017 21:24:01 -0800
Subject: [PATCH] Reinitialize offset if greater than number of unread items

---
 server/ui/controller/unread.go | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/server/ui/controller/unread.go b/server/ui/controller/unread.go
index e0f120a0..2c6be4b9 100644
--- a/server/ui/controller/unread.go
+++ b/server/ui/controller/unread.go
@@ -16,18 +16,23 @@ func (c *Controller) ShowUnreadPage(ctx *core.Context, request *core.Request, re
 
 	builder := c.store.GetEntryQueryBuilder(user.ID, user.Timezone)
 	builder.WithStatus(model.EntryStatusUnread)
-	builder.WithOrder(model.DefaultSortingOrder)
-	builder.WithDirection(user.EntryDirection)
-	builder.WithOffset(offset)
-	builder.WithLimit(nbItemsPerPage)
-
-	entries, err := builder.GetEntries()
+	countUnread, err := builder.CountEntries()
 	if err != nil {
 		response.HTML().ServerError(err)
 		return
 	}
 
-	countUnread, err := builder.CountEntries()
+	if offset >= countUnread {
+		offset = 0
+	}
+
+	builder = c.store.GetEntryQueryBuilder(user.ID, user.Timezone)
+	builder.WithStatus(model.EntryStatusUnread)
+	builder.WithOrder(model.DefaultSortingOrder)
+	builder.WithDirection(user.EntryDirection)
+	builder.WithOffset(offset)
+	builder.WithLimit(nbItemsPerPage)
+	entries, err := builder.GetEntries()
 	if err != nil {
 		response.HTML().ServerError(err)
 		return
-- 
GitLab