package routing import ( "net/http" "lishwist/db" "lishwist/error" "lishwist/templates" ) type GroupProps struct { Name string Members []db.User CurrentUsername string } func (ctx *Context) GroupPage(w http.ResponseWriter, r *http.Request) { user := ctx.ExpectUser(r) groupReference := r.PathValue("groupReference") group, err := user.GetGroupByReference(groupReference) if err != nil { error.Page(w, "An error occurred while fetching this group :(", http.StatusInternalServerError, err) return } if group == nil { error.Page(w, "Group not found. (It might be because you're not a member)", http.StatusNotFound, nil) return } peers, err := user.GetPeers(group.Id) if err != nil { error.Page(w, "An error occurred while fetching this group :(", http.StatusInternalServerError, err) return } p := GroupProps{ Name: group.Name, Members: peers, CurrentUsername: user.Name, } templates.Execute(w, "group_page.gotmpl", p) } func (ctx *Context) PublicGroupPage(w http.ResponseWriter, r *http.Request) { groupReference := r.PathValue("groupReference") group, err := db.GetGroupByReference(groupReference) if err != nil { error.Page(w, "An error occurred while fetching this group :(", http.StatusInternalServerError, err) return } members, err := group.GetMembers() if err != nil { error.Page(w, "An error occurred while fetching this group :(", http.StatusInternalServerError, err) return } p := GroupProps{ Name: group.Name, Members: members, } templates.Execute(w, "public_group_page.gotmpl", p) }