feat: fetch user spaces for list
This commit is contained in:
parent
d413193366
commit
08f806e405
1 changed files with 33 additions and 6 deletions
|
|
@ -1,8 +1,11 @@
|
||||||
package handler
|
package handler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"log/slog"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"git.juancwu.dev/juancwu/budgit/internal/ctxkeys"
|
||||||
|
"git.juancwu.dev/juancwu/budgit/internal/misc/currency"
|
||||||
"git.juancwu.dev/juancwu/budgit/internal/service"
|
"git.juancwu.dev/juancwu/budgit/internal/service"
|
||||||
"git.juancwu.dev/juancwu/budgit/internal/ui"
|
"git.juancwu.dev/juancwu/budgit/internal/ui"
|
||||||
"git.juancwu.dev/juancwu/budgit/internal/ui/blocks"
|
"git.juancwu.dev/juancwu/budgit/internal/ui/blocks"
|
||||||
|
|
@ -19,10 +22,34 @@ func NewSpaceHandler(spaceService *service.SpaceService) *spaceHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *spaceHandler) SpacesPage(w http.ResponseWriter, r *http.Request) {
|
func (h *spaceHandler) SpacesPage(w http.ResponseWriter, r *http.Request) {
|
||||||
ui.Render(w, r, pages.Spaces([]blocks.SpaceCardInfo{
|
user := ctxkeys.User(r.Context())
|
||||||
{
|
if user == nil {
|
||||||
ID: "test-1", Name: "My Space",
|
ui.RenderError(w, r, "Unauthorized", http.StatusUnauthorized)
|
||||||
MemberCount: 3, TotalBalance: decimal.NewFromFloat(123.23),
|
return
|
||||||
},
|
}
|
||||||
}))
|
|
||||||
|
spaces, err := h.spaceService.GetSpacesForUser(user.ID)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("failed to load spaces", "error", err, "user_id", user.ID)
|
||||||
|
ui.RenderError(w, r, "Failed to load spaces", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
cards := make([]blocks.SpaceCardInfo, 0, len(spaces))
|
||||||
|
for _, sp := range spaces {
|
||||||
|
members, err := h.spaceService.GetMembers(sp.ID)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("failed to load space members", "error", err, "space_id", sp.ID)
|
||||||
|
members = nil
|
||||||
|
}
|
||||||
|
cards = append(cards, blocks.SpaceCardInfo{
|
||||||
|
ID: sp.ID,
|
||||||
|
Name: sp.Name,
|
||||||
|
MemberCount: len(members),
|
||||||
|
TotalBalance: decimal.Zero,
|
||||||
|
Currency: currency.CAD,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
ui.Render(w, r, pages.Spaces(cards))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue