appview: add logged in user in 500 error pages #689

closed
opened by serendipty01.dev targeting master from serendipty01.dev/tangled-core: push-prquzlvztlul
Changed files
+52 -15
appview
notifications
pages
repo
state
+6 -2
appview/notifications/notifications.go
···
)
if err != nil {
l.Error("failed to get total notifications", "err", err)
-
n.pages.Error500(w)
+
n.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
)
if err != nil {
l.Error("failed to get notifications", "err", err)
-
n.pages.Error500(w)
+
n.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
+6 -2
appview/pages/pages.go
···
Active string
+
type ErrorPageParams struct {
+
LoggedInUser *oauth.User
+
}
+
func (p *Pages) Workflow(w io.Writer, params WorkflowParams) error {
params.Active = "pipelines"
return p.executeRepo("repo/pipelines/workflow", w, params)
···
return hex.EncodeToString(hasher.Sum(nil))[:8] // Use first 8 chars of hash
-
func (p *Pages) Error500(w io.Writer) error {
-
return p.execute("errors/500", w, nil)
+
func (p *Pages) Error500(w io.Writer, params ErrorPageParams) error {
+
return p.execute("errors/500", w, params)
func (p *Pages) Error404(w io.Writer) error {
+8 -2
appview/repo/feed.go
···
"tangled.org/core/appview/db"
"tangled.org/core/appview/models"
+
"tangled.org/core/appview/pages"
"tangled.org/core/appview/pagination"
"tangled.org/core/appview/reporesolver"
···
log.Println("failed to fully resolve repo:", err)
return
}
+
user := rp.oauth.GetUser(r)
feed, err := rp.getRepoFeed(r.Context(), f)
if err != nil {
log.Println("failed to get repo feed:", err)
-
rp.pages.Error500(w)
+
rp.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
atom, err := feed.ToAtom()
if err != nil {
-
rp.pages.Error500(w)
+
rp.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
+32 -9
appview/state/profile.go
···
func (s *State) profileOverview(w http.ResponseWriter, r *http.Request) {
l := s.logger.With("handler", "profileHomePage")
+
user := s.oauth.GetUser(r)
profile, err := s.profile(r)
if err != nil {
l.Error("failed to build profile card", "err", err)
-
s.pages.Error500(w)
+
s.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
l = l.With("profileDid", profile.UserDid, "profileHandle", profile.UserHandle)
···
func (s *State) reposPage(w http.ResponseWriter, r *http.Request) {
l := s.logger.With("handler", "reposPage")
+
user := s.oauth.GetUser(r)
profile, err := s.profile(r)
if err != nil {
l.Error("failed to build profile card", "err", err)
-
s.pages.Error500(w)
+
s.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
l = l.With("profileDid", profile.UserDid, "profileHandle", profile.UserHandle)
···
)
if err != nil {
l.Error("failed to get repos", "err", err)
-
s.pages.Error500(w)
+
s.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
func (s *State) starredPage(w http.ResponseWriter, r *http.Request) {
l := s.logger.With("handler", "starredPage")
+
user := s.oauth.GetUser(r)
profile, err := s.profile(r)
if err != nil {
l.Error("failed to build profile card", "err", err)
-
s.pages.Error500(w)
+
s.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
l = l.With("profileDid", profile.UserDid, "profileHandle", profile.UserHandle)
···
stars, err := db.GetStars(s.db, 0, db.FilterEq("starred_by_did", profile.UserDid))
if err != nil {
l.Error("failed to get stars", "err", err)
-
s.pages.Error500(w)
+
s.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
var repos []models.Repo
···
func (s *State) stringsPage(w http.ResponseWriter, r *http.Request) {
l := s.logger.With("handler", "stringsPage")
+
user := s.oauth.GetUser(r)
profile, err := s.profile(r)
if err != nil {
l.Error("failed to build profile card", "err", err)
-
s.pages.Error500(w)
+
s.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
l = l.With("profileDid", profile.UserDid, "profileHandle", profile.UserHandle)
···
strings, err := db.GetStrings(s.db, 0, db.FilterEq("did", profile.UserDid))
if err != nil {
l.Error("failed to get strings", "err", err)
-
s.pages.Error500(w)
+
s.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
s.pages.Error404(w)
return
}
+
user := s.oauth.GetUser(r)
feed, err := s.getProfileFeed(r.Context(), &ident)
if err != nil {
-
s.pages.Error500(w)
+
s.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
atom, err := feed.ToAtom()
if err != nil {
-
s.pages.Error500(w)
+
s.pages.Error500(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}