59 lines
1.5 KiB
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)
|
|
}
|