unread.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright 2017 Frédéric Guillot. All rights reserved.
  2. // Use of this source code is governed by the Apache 2.0
  3. // license that can be found in the LICENSE file.
  4. package controller
  5. import (
  6. "github.com/miniflux/miniflux/model"
  7. "github.com/miniflux/miniflux/server/core"
  8. )
  9. // ShowUnreadPage render the page with all unread entries.
  10. func (c *Controller) ShowUnreadPage(ctx *core.Context, request *core.Request, response *core.Response) {
  11. user := ctx.LoggedUser()
  12. offset := request.QueryIntegerParam("offset", 0)
  13. builder := c.store.NewEntryQueryBuilder(user.ID)
  14. builder.WithStatus(model.EntryStatusUnread)
  15. countUnread, err := builder.CountEntries()
  16. if err != nil {
  17. response.HTML().ServerError(err)
  18. return
  19. }
  20. if offset >= countUnread {
  21. offset = 0
  22. }
  23. builder = c.store.NewEntryQueryBuilder(user.ID)
  24. builder.WithStatus(model.EntryStatusUnread)
  25. builder.WithOrder(model.DefaultSortingOrder)
  26. builder.WithDirection(user.EntryDirection)
  27. builder.WithOffset(offset)
  28. builder.WithLimit(nbItemsPerPage)
  29. entries, err := builder.GetEntries()
  30. if err != nil {
  31. response.HTML().ServerError(err)
  32. return
  33. }
  34. response.HTML().Render("unread", tplParams{
  35. "user": user,
  36. "countUnread": countUnread,
  37. "entries": entries,
  38. "pagination": c.getPagination(ctx.Route("unread"), countUnread, offset),
  39. "menu": "unread",
  40. "csrf": ctx.CSRF(),
  41. })
  42. }