lishwist/server/routing/groups.go

59 lines
1.5 KiB
Go

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(user *db.User, w http.ResponseWriter, r *http.Request) {
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)
}