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
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"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/ui"
|
||||
"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) {
|
||||
ui.Render(w, r, pages.Spaces([]blocks.SpaceCardInfo{
|
||||
{
|
||||
ID: "test-1", Name: "My Space",
|
||||
MemberCount: 3, TotalBalance: decimal.NewFromFloat(123.23),
|
||||
},
|
||||
}))
|
||||
user := ctxkeys.User(r.Context())
|
||||
if user == nil {
|
||||
ui.RenderError(w, r, "Unauthorized", http.StatusUnauthorized)
|
||||
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