mirror of
https://github.com/miniflux/v2.git
synced 2025-08-01 17:38:37 +00:00
Add feature to refresh all feeds from the user interface
This commit is contained in:
parent
480b0d94e2
commit
855fb06bc9
19 changed files with 104 additions and 55 deletions
|
@ -7,6 +7,8 @@ package server
|
|||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/miniflux/miniflux2/scheduler"
|
||||
|
||||
"github.com/miniflux/miniflux2/config"
|
||||
"github.com/miniflux/miniflux2/locale"
|
||||
"github.com/miniflux/miniflux2/reader/feed"
|
||||
|
@ -21,13 +23,13 @@ import (
|
|||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
func getRoutes(cfg *config.Config, store *storage.Storage, feedHandler *feed.Handler) *mux.Router {
|
||||
func getRoutes(cfg *config.Config, store *storage.Storage, feedHandler *feed.Handler, pool *scheduler.WorkerPool) *mux.Router {
|
||||
router := mux.NewRouter()
|
||||
translator := locale.Load()
|
||||
templateEngine := template.NewEngine(cfg, router, translator)
|
||||
|
||||
apiController := api_controller.NewController(store, feedHandler)
|
||||
uiController := ui_controller.NewController(store, feedHandler, opml.NewHandler(store))
|
||||
uiController := ui_controller.NewController(store, pool, feedHandler, opml.NewHandler(store))
|
||||
|
||||
apiHandler := core.NewHandler(store, router, templateEngine, translator, middleware.NewMiddlewareChain(
|
||||
middleware.NewBasicAuthMiddleware(store).Handler,
|
||||
|
@ -79,6 +81,7 @@ func getRoutes(cfg *config.Config, store *storage.Storage, feedHandler *feed.Han
|
|||
router.Handle("/feed/{feedID}/update", uiHandler.Use(uiController.UpdateFeed)).Name("updateFeed").Methods("POST")
|
||||
router.Handle("/feed/{feedID}/entries", uiHandler.Use(uiController.ShowFeedEntries)).Name("feedEntries").Methods("GET")
|
||||
router.Handle("/feeds", uiHandler.Use(uiController.ShowFeedsPage)).Name("feeds").Methods("GET")
|
||||
router.Handle("/feeds/refresh", uiHandler.Use(uiController.RefreshAllFeeds)).Name("refreshAllFeeds").Methods("GET")
|
||||
|
||||
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")
|
||||
|
|
|
@ -9,19 +9,21 @@ import (
|
|||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/miniflux/miniflux2/scheduler"
|
||||
|
||||
"github.com/miniflux/miniflux2/config"
|
||||
"github.com/miniflux/miniflux2/reader/feed"
|
||||
"github.com/miniflux/miniflux2/storage"
|
||||
)
|
||||
|
||||
// NewServer returns a new HTTP server.
|
||||
func NewServer(cfg *config.Config, store *storage.Storage, feedHandler *feed.Handler) *http.Server {
|
||||
func NewServer(cfg *config.Config, store *storage.Storage, pool *scheduler.WorkerPool, feedHandler *feed.Handler) *http.Server {
|
||||
server := &http.Server{
|
||||
ReadTimeout: 5 * time.Second,
|
||||
WriteTimeout: 10 * time.Second,
|
||||
IdleTimeout: 60 * time.Second,
|
||||
Addr: cfg.Get("LISTEN_ADDR", config.DefaultListenAddr),
|
||||
Handler: getRoutes(cfg, store, feedHandler),
|
||||
Handler: getRoutes(cfg, store, feedHandler, pool),
|
||||
}
|
||||
|
||||
go func() {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Code generated by go generate; DO NOT EDIT.
|
||||
// 2017-11-21 20:44:27.896797236 -0800 PST m=+0.007750032
|
||||
// 2017-11-21 22:32:06.342731949 -0800 PST m=+0.008105258
|
||||
|
||||
package static
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Code generated by go generate; DO NOT EDIT.
|
||||
// 2017-11-21 20:44:27.899481906 -0800 PST m=+0.010434702
|
||||
// 2017-11-21 22:32:06.344826414 -0800 PST m=+0.010199723
|
||||
|
||||
package static
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Code generated by go generate; DO NOT EDIT.
|
||||
// 2017-11-21 20:44:27.901252396 -0800 PST m=+0.012205192
|
||||
// 2017-11-21 22:32:06.347626921 -0800 PST m=+0.013000230
|
||||
|
||||
package static
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Code generated by go generate; DO NOT EDIT.
|
||||
// 2017-11-21 20:44:27.917425704 -0800 PST m=+0.028378500
|
||||
// 2017-11-21 22:32:06.368574596 -0800 PST m=+0.033947905
|
||||
|
||||
package template
|
||||
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
<li>
|
||||
<a href="{{ route "import" }}">{{ t "Import" }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ route "refreshAllFeeds" }}">{{ t "Refresh all feeds in the background" }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Code generated by go generate; DO NOT EDIT.
|
||||
// 2017-11-21 20:44:27.902557626 -0800 PST m=+0.013510422
|
||||
// 2017-11-21 22:32:06.350434639 -0800 PST m=+0.015807948
|
||||
|
||||
package template
|
||||
|
||||
|
@ -596,6 +596,9 @@ var templateViewsMap = map[string]string{
|
|||
<li>
|
||||
<a href="{{ route "import" }}">{{ t "Import" }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ route "refreshAllFeeds" }}">{{ t "Refresh all feeds in the background" }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
@ -1038,7 +1041,7 @@ var templateViewsMapChecksums = map[string]string{
|
|||
"edit_user": "c835d78f7cf36c11533db9cef253457a9003987d704070d59446cb2b0e84dcb9",
|
||||
"entry": "32e605edd6d43773ac31329d247ebd81d38d974cd43689d91de79fffec7fe04b",
|
||||
"feed_entries": "9aff923b6c7452dec1514feada7e0d2bbc1ec21c6f5e9f48b2de41d1b731ffe4",
|
||||
"feeds": "94e43404a4044490c065c888a49bebd3ff51b588b9fb47d03c2598003aa40dca",
|
||||
"feeds": "c22af39b42ba9ca69ea0914ca789303ec2c5b484abcd4eaa49016e365381257c",
|
||||
"history": "947603cbde888516e62925f5d08fb0b13d930623d3ee4c690dbc22612fdda75e",
|
||||
"import": "73b5112e20bfd232bf73334544186ea419505936bc237d481517a8622901878f",
|
||||
"integrations": "c485d6d9ed996635e55e73320610e6bcb01a41c1153e8e739ae2294b0b14b243",
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
"github.com/miniflux/miniflux2/model"
|
||||
"github.com/miniflux/miniflux2/reader/feed"
|
||||
"github.com/miniflux/miniflux2/reader/opml"
|
||||
"github.com/miniflux/miniflux2/scheduler"
|
||||
"github.com/miniflux/miniflux2/server/core"
|
||||
"github.com/miniflux/miniflux2/storage"
|
||||
)
|
||||
|
@ -22,8 +23,10 @@ func (t tplParams) Merge(d tplParams) tplParams {
|
|||
return t
|
||||
}
|
||||
|
||||
// Controller contains all HTTP handlers for the user interface.
|
||||
type Controller struct {
|
||||
store *storage.Storage
|
||||
pool *scheduler.WorkerPool
|
||||
feedHandler *feed.Handler
|
||||
opmlHandler *opml.Handler
|
||||
}
|
||||
|
@ -47,9 +50,11 @@ func (c *Controller) getCommonTemplateArgs(ctx *core.Context) (tplParams, error)
|
|||
return params, nil
|
||||
}
|
||||
|
||||
func NewController(store *storage.Storage, feedHandler *feed.Handler, opmlHandler *opml.Handler) *Controller {
|
||||
// NewController returns a new Controller.
|
||||
func NewController(store *storage.Storage, pool *scheduler.WorkerPool, feedHandler *feed.Handler, opmlHandler *opml.Handler) *Controller {
|
||||
return &Controller{
|
||||
store: store,
|
||||
pool: pool,
|
||||
feedHandler: feedHandler,
|
||||
opmlHandler: opmlHandler,
|
||||
}
|
||||
|
|
|
@ -13,6 +13,22 @@ import (
|
|||
"github.com/miniflux/miniflux2/server/ui/form"
|
||||
)
|
||||
|
||||
// RefreshAllFeeds refresh all feeds in the background.
|
||||
func (c *Controller) RefreshAllFeeds(ctx *core.Context, request *core.Request, response *core.Response) {
|
||||
user := ctx.LoggedUser()
|
||||
jobs, err := c.store.NewBatch(c.store.CountFeeds(user.ID))
|
||||
if err != nil {
|
||||
response.HTML().ServerError(err)
|
||||
return
|
||||
}
|
||||
|
||||
go func() {
|
||||
c.pool.Push(jobs)
|
||||
}()
|
||||
|
||||
response.Redirect(ctx.Route("feeds"))
|
||||
}
|
||||
|
||||
// ShowFeedsPage shows the page with all subscriptions.
|
||||
func (c *Controller) ShowFeedsPage(ctx *core.Context, request *core.Request, response *core.Response) {
|
||||
user := ctx.LoggedUser()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue