aboutsummaryrefslogtreecommitdiff
path: root/ui/controller.go
diff options
context:
space:
mode:
Diffstat (limited to 'ui/controller.go')
-rw-r--r--ui/controller.go66
1 files changed, 66 insertions, 0 deletions
diff --git a/ui/controller.go b/ui/controller.go
new file mode 100644
index 00000000..44e0b290
--- /dev/null
+++ b/ui/controller.go
@@ -0,0 +1,66 @@
+// Copyright 2017 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package ui
+
+import (
+ "github.com/miniflux/miniflux/config"
+ "github.com/miniflux/miniflux/http/handler"
+ "github.com/miniflux/miniflux/model"
+ "github.com/miniflux/miniflux/reader/feed"
+ "github.com/miniflux/miniflux/reader/opml"
+ "github.com/miniflux/miniflux/scheduler"
+ "github.com/miniflux/miniflux/storage"
+)
+
+type tplParams map[string]interface{}
+
+func (t tplParams) Merge(d tplParams) tplParams {
+ for k, v := range d {
+ t[k] = v
+ }
+
+ return t
+}
+
+// Controller contains all HTTP handlers for the user interface.
+type Controller struct {
+ cfg *config.Config
+ store *storage.Storage
+ pool *scheduler.WorkerPool
+ feedHandler *feed.Handler
+ opmlHandler *opml.Handler
+}
+
+func (c *Controller) getCommonTemplateArgs(ctx *handler.Context) (tplParams, error) {
+ user := ctx.LoggedUser()
+ builder := c.store.NewEntryQueryBuilder(user.ID)
+ builder.WithStatus(model.EntryStatusUnread)
+
+ countUnread, err := builder.CountEntries()
+ if err != nil {
+ return nil, err
+ }
+
+ params := tplParams{
+ "menu": "",
+ "user": user,
+ "countUnread": countUnread,
+ "csrf": ctx.CSRF(),
+ "flashMessage": ctx.FlashMessage(),
+ "flashErrorMessage": ctx.FlashErrorMessage(),
+ }
+ return params, nil
+}
+
+// NewController returns a new Controller.
+func NewController(cfg *config.Config, store *storage.Storage, pool *scheduler.WorkerPool, feedHandler *feed.Handler, opmlHandler *opml.Handler) *Controller {
+ return &Controller{
+ cfg: cfg,
+ store: store,
+ pool: pool,
+ feedHandler: feedHandler,
+ opmlHandler: opmlHandler,
+ }
+}