package routing import ( "net/http" "lishwist/db" "lishwist/env" "lishwist/error" "lishwist/templates" ) type HomeProps struct { Username string Gifts []db.Gift Todo []db.Gift Reference string HostUrl string Groups []db.Group } func (ctx *Context) Home(w http.ResponseWriter, r *http.Request) { user := ctx.ExpectUser(r) gifts, err := user.GetGifts() if err != nil { error.Page(w, "An error occurred while fetching your wishlist :(", http.StatusInternalServerError, err) return } todo, err := user.GetTodo() if err != nil { error.Page(w, "An error occurred while fetching your wishlist :(", http.StatusInternalServerError, err) return } groups, err := user.GetGroups() if err != nil { error.Page(w, "An error occurred while fetching your wishlist :(", http.StatusInternalServerError, err) return } p := HomeProps{Username: user.Name, Gifts: gifts, Todo: todo, Reference: user.Reference, HostUrl: env.HostUrl.String(), Groups: groups} templates.Execute(w, "home.gotmpl", p) } func (ctx *Context) HomePost(w http.ResponseWriter, r *http.Request) { if err := r.ParseForm(); err != nil { http.Error(w, "Couldn't parse form", http.StatusBadRequest) return } switch r.Form.Get("intent") { case "add_idea": ctx.WishlistAdd(w, r) return case "delete_idea": ctx.WishlistDelete(w, r) return default: ctx.TodoUpdate(w, r) return } }