From 47a4150b8b7552983149a1a2cd5939b7ec4ad508 Mon Sep 17 00:00:00 2001 From: Shalabh Agarwal Date: Tue, 21 Oct 2025 17:05:48 +0530 Subject: [PATCH] appview: add user in 500 error pages Change-Id: owwtrsxkpztzwolqtwnqsnnvpwplqqut Signed-off-by: Shalabh Agarwal --- appview/notifications/notifications.go | 8 +++-- appview/pages/pages.go | 8 +++-- appview/repo/feed.go | 10 +++++-- appview/state/profile.go | 41 ++++++++++++++++++++------ 4 files changed, 52 insertions(+), 15 deletions(-) diff --git a/appview/notifications/notifications.go b/appview/notifications/notifications.go index a4047521..cacd2c2b 100644 --- a/appview/notifications/notifications.go +++ b/appview/notifications/notifications.go @@ -61,7 +61,9 @@ func (n *Notifications) notificationsPage(w http.ResponseWriter, r *http.Request ) 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 } @@ -72,7 +74,9 @@ func (n *Notifications) notificationsPage(w http.ResponseWriter, r *http.Request ) if err != nil { l.Error("failed to get notifications", "err", err) - n.pages.Error500(w) + n.pages.Error500(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } diff --git a/appview/pages/pages.go b/appview/pages/pages.go index 296d797d..8706e9d4 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -1381,6 +1381,10 @@ type WorkflowParams struct { 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) @@ -1518,8 +1522,8 @@ func (p *Pages) CssContentHash() string { 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 { diff --git a/appview/repo/feed.go b/appview/repo/feed.go index 31d194e3..5d9e7af1 100644 --- a/appview/repo/feed.go +++ b/appview/repo/feed.go @@ -10,6 +10,7 @@ import ( "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" @@ -152,17 +153,22 @@ func (rp *Repo) RepoAtomFeed(w http.ResponseWriter, r *http.Request) { 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 } diff --git a/appview/state/profile.go b/appview/state/profile.go index 8d9e82fd..c5a0b88e 100644 --- a/appview/state/profile.go +++ b/appview/state/profile.go @@ -112,11 +112,14 @@ func (s *State) profile(r *http.Request) (*pages.ProfileCard, error) { 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) @@ -173,11 +176,14 @@ func (s *State) profileOverview(w http.ResponseWriter, r *http.Request) { 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) @@ -189,7 +195,9 @@ func (s *State) reposPage(w http.ResponseWriter, r *http.Request) { ) if err != nil { l.Error("failed to get repos", "err", err) - s.pages.Error500(w) + s.pages.Error500(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -202,11 +210,14 @@ func (s *State) reposPage(w http.ResponseWriter, r *http.Request) { 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) @@ -214,7 +225,9 @@ func (s *State) starredPage(w http.ResponseWriter, r *http.Request) { 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 @@ -233,11 +246,14 @@ func (s *State) starredPage(w http.ResponseWriter, r *http.Request) { 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) @@ -245,7 +261,9 @@ func (s *State) stringsPage(w http.ResponseWriter, r *http.Request) { 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 } @@ -384,10 +402,13 @@ func (s *State) AtomFeedPage(w http.ResponseWriter, r *http.Request) { 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 } @@ -397,7 +418,9 @@ func (s *State) AtomFeedPage(w http.ResponseWriter, r *http.Request) { atom, err := feed.ToAtom() if err != nil { - s.pages.Error500(w) + s.pages.Error500(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } -- 2.43.0