1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-09-15 18:57:04 +00:00

Add flush history feature

This commit is contained in:
Frédéric Guillot 2017-11-21 15:46:59 -08:00
parent 238b9e4c85
commit 549a4277b0
15 changed files with 79 additions and 17 deletions

View file

@ -54,7 +54,10 @@ func (j *JsonResponse) ServerError(err error) {
log.Println("[API:ServerError]", err)
j.writer.WriteHeader(http.StatusInternalServerError)
j.commonHeaders()
j.writer.Write(j.encodeError(err))
if err != nil {
j.writer.Write(j.encodeError(err))
}
}
func (j *JsonResponse) Forbidden() {

View file

@ -81,6 +81,7 @@ func getRoutes(store *storage.Storage, feedHandler *feed.Handler) *mux.Router {
router.Handle("/unread/entry/{entryID}", uiHandler.Use(uiController.ShowUnreadEntry)).Name("unreadEntry").Methods("GET")
router.Handle("/history/entry/{entryID}", uiHandler.Use(uiController.ShowReadEntry)).Name("readEntry").Methods("GET")
router.Handle("/history/flush", uiHandler.Use(uiController.FlushHistory)).Name("flushHistory").Methods("GET")
router.Handle("/feed/{feedID}/entry/{entryID}", uiHandler.Use(uiController.ShowFeedEntry)).Name("feedEntry").Methods("GET")
router.Handle("/category/{categoryID}/entry/{entryID}", uiHandler.Use(uiController.ShowCategoryEntry)).Name("categoryEntry").Methods("GET")

View file

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-11-21 14:55:14.42928305 -0800 PST m=+0.010828954
// 2017-11-21 15:41:59.461181295 -0800 PST m=+0.007416953
package static

View file

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-11-21 14:55:14.43289693 -0800 PST m=+0.014442834
// 2017-11-21 15:41:59.464123652 -0800 PST m=+0.010359310
package static

View file

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-11-21 14:55:14.43700259 -0800 PST m=+0.018548494
// 2017-11-21 15:41:59.4687788 -0800 PST m=+0.015014458
package static

View file

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-11-21 14:55:14.455330256 -0800 PST m=+0.036876160
// 2017-11-21 15:41:59.491806442 -0800 PST m=+0.038042100
package template

View file

@ -3,6 +3,11 @@
{{ define "content"}}
<section class="page-header">
<h1>{{ t "History" }} ({{ .total }})</h1>
<ul>
<li>
<a href="{{ route "flushHistory" }}">{{ t "Flush history" }}</a>
</li>
</ul>
</section>
{{ if not .entries }}

View file

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-11-21 14:55:14.438565193 -0800 PST m=+0.020111097
// 2017-11-21 15:41:59.472545112 -0800 PST m=+0.018780770
package template
@ -649,6 +649,11 @@ var templateViewsMap = map[string]string{
{{ define "content"}}
<section class="page-header">
<h1>{{ t "History" }} ({{ .total }})</h1>
<ul>
<li>
<a href="{{ route "flushHistory" }}">{{ t "Flush history" }}</a>
</li>
</ul>
</section>
{{ if not .entries }}
@ -980,7 +985,7 @@ var templateViewsMapChecksums = map[string]string{
"entry": "32e605edd6d43773ac31329d247ebd81d38d974cd43689d91de79fffec7fe04b",
"feed_entries": "9aff923b6c7452dec1514feada7e0d2bbc1ec21c6f5e9f48b2de41d1b731ffe4",
"feeds": "94e43404a4044490c065c888a49bebd3ff51b588b9fb47d03c2598003aa40dca",
"history": "439000d0be8fd716f3b89860af4d721e05baef0c2ccd2325ba020c940d6aa847",
"history": "947603cbde888516e62925f5d08fb0b13d930623d3ee4c690dbc22612fdda75e",
"import": "73b5112e20bfd232bf73334544186ea419505936bc237d481517a8622901878f",
"login": "568f2f69f248048f3e55e9bbc719077a74ae23fe18f237aa40e3de37e97b7a41",
"sessions": "5ac3793f0ee74d0807bab6a173a1aa6508e98add5c022fa54c8fdf5c6b4a0e75",

View file

@ -6,12 +6,14 @@ package controller
import (
"errors"
"log"
"github.com/miniflux/miniflux2/model"
"github.com/miniflux/miniflux2/server/core"
"github.com/miniflux/miniflux2/server/ui/payload"
"log"
)
// ShowFeedEntry shows a single feed entry in "feed" mode.
func (c *Controller) ShowFeedEntry(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser()
sortingDirection := model.DefaultSortingDirection
@ -102,6 +104,7 @@ func (c *Controller) ShowFeedEntry(ctx *core.Context, request *core.Request, res
}))
}
// ShowCategoryEntry shows a single feed entry in "category" mode.
func (c *Controller) ShowCategoryEntry(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser()
sortingDirection := model.DefaultSortingDirection
@ -192,6 +195,7 @@ func (c *Controller) ShowCategoryEntry(ctx *core.Context, request *core.Request,
}))
}
// ShowUnreadEntry shows a single feed entry in "unread" mode.
func (c *Controller) ShowUnreadEntry(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser()
sortingDirection := model.DefaultSortingDirection
@ -275,6 +279,7 @@ func (c *Controller) ShowUnreadEntry(ctx *core.Context, request *core.Request, r
}))
}
// ShowReadEntry shows a single feed entry in "history" mode.
func (c *Controller) ShowReadEntry(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser()
sortingDirection := model.DefaultSortingDirection
@ -349,6 +354,7 @@ func (c *Controller) ShowReadEntry(ctx *core.Context, request *core.Request, res
}))
}
// UpdateEntriesStatus handles Ajax request to update a list of entries.
func (c *Controller) UpdateEntriesStatus(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser()
@ -360,14 +366,14 @@ func (c *Controller) UpdateEntriesStatus(ctx *core.Context, request *core.Reques
}
if len(entryIDs) == 0 {
response.Html().BadRequest(errors.New("The list of entryID is empty"))
response.Json().BadRequest(errors.New("The list of entryID is empty"))
return
}
err = c.store.SetEntriesStatus(user.ID, entryIDs, status)
if err != nil {
log.Println(err)
response.Html().ServerError(nil)
response.Json().ServerError(nil)
return
}

View file

@ -9,6 +9,7 @@ import (
"github.com/miniflux/miniflux2/server/core"
)
// ShowHistoryPage renders the page with all read entries.
func (c *Controller) ShowHistoryPage(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser()
offset := request.GetQueryIntegerParam("offset", 0)
@ -45,3 +46,16 @@ func (c *Controller) ShowHistoryPage(ctx *core.Context, request *core.Request, r
"menu": "history",
}))
}
// FlushHistory changes all "read" items to "removed".
func (c *Controller) FlushHistory(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser()
err := c.store.FlushHistory(user.ID)
if err != nil {
response.Html().ServerError(err)
return
}
response.Redirect(ctx.GetRoute("history"))
}