2021-04-09 11:25:40 +00:00
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
|
|
|
|
package admin
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"net/http"
|
|
|
|
|
|
|
|
"go.mindeco.de/http/render"
|
|
|
|
|
|
|
|
"github.com/ssb-ngi-pointer/go-ssb-room/roomstate"
|
2021-04-12 09:23:11 +00:00
|
|
|
weberrors "github.com/ssb-ngi-pointer/go-ssb-room/web/errors"
|
2021-04-09 11:25:40 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type dashboardHandler struct {
|
2021-04-12 09:23:11 +00:00
|
|
|
r *render.Renderer
|
|
|
|
flashes *weberrors.FlashHelper
|
|
|
|
|
2021-04-09 11:25:40 +00:00
|
|
|
roomState *roomstate.Manager
|
|
|
|
dbs Databases
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h dashboardHandler) overview(w http.ResponseWriter, req *http.Request) (interface{}, error) {
|
|
|
|
onlineRefs := h.roomState.List()
|
|
|
|
onlineCount := len(onlineRefs)
|
|
|
|
memberCount, err := h.dbs.Members.Count(req.Context())
|
|
|
|
if err != nil {
|
|
|
|
return nil, fmt.Errorf("failed to count members: %w", err)
|
|
|
|
}
|
|
|
|
inviteCount, err := h.dbs.Invites.Count(req.Context())
|
|
|
|
if err != nil {
|
|
|
|
return nil, fmt.Errorf("failed to count invites: %w", err)
|
|
|
|
}
|
|
|
|
deniedCount, err := h.dbs.DeniedKeys.Count(req.Context())
|
|
|
|
if err != nil {
|
|
|
|
return nil, fmt.Errorf("failed to count denied keys: %w", err)
|
|
|
|
}
|
|
|
|
|
2021-04-12 09:23:11 +00:00
|
|
|
pageData := map[string]interface{}{
|
2021-04-12 09:22:47 +00:00
|
|
|
"OnlineRefs": onlineRefs,
|
|
|
|
"OnlineCount": onlineCount,
|
|
|
|
"MemberCount": memberCount,
|
|
|
|
"InviteCount": inviteCount,
|
|
|
|
"DeniedCount": deniedCount,
|
2021-04-12 09:23:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pageData["Flashes"], err = h.flashes.GetAll(w, req)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return pageData, nil
|
2021-04-09 11:25:40 +00:00
|
|
|
}
|