From 111cc4cc18127ca39ca7c142c62cae382bc3ae57 Mon Sep 17 00:00:00 2001 From: Evan Jarrett Date: Wed, 10 Dec 2025 14:34:18 -0600 Subject: [PATCH] placeholder profile for when sailor profile is not found --- pkg/appview/handlers/user.go | 22 +++++++++++++++------- pkg/appview/templates/pages/user.html | 10 ++++++++-- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/pkg/appview/handlers/user.go b/pkg/appview/handlers/user.go index 48762a4..3136e42 100644 --- a/pkg/appview/handlers/user.go +++ b/pkg/appview/handlers/user.go @@ -21,7 +21,7 @@ func (h *UserPageHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { identifier := chi.URLParam(r, "handle") // Resolve identifier (handle or DID) to canonical DID and current handle - did, resolvedHandle, _, err := atproto.ResolveIdentity(r.Context(), identifier) + did, resolvedHandle, pdsEndpoint, err := atproto.ResolveIdentity(r.Context(), identifier) if err != nil { http.Error(w, "User not found", http.StatusNotFound) return @@ -33,13 +33,19 @@ func (h *UserPageHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), http.StatusInternalServerError) return } - if viewedUser == nil { - http.Error(w, "User not found", http.StatusNotFound) - return - } - // Opportunistically update cached handle if it changed - if viewedUser.Handle != resolvedHandle { + hasProfile := true + if viewedUser == nil { + // Valid ATProto user but hasn't set up ATCR profile + hasProfile = false + viewedUser = &db.User{ + DID: did, + Handle: resolvedHandle, + PDSEndpoint: pdsEndpoint, + // Avatar intentionally empty - template shows '?' placeholder + } + } else if viewedUser.Handle != resolvedHandle { + // Opportunistically update cached handle if it changed _ = db.UpdateUserHandle(h.DB, did, resolvedHandle) viewedUser.Handle = resolvedHandle } @@ -77,10 +83,12 @@ func (h *UserPageHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { PageData ViewedUser *db.User // User whose page we're viewing Repositories []db.RepoCardData + HasProfile bool }{ PageData: NewPageData(r, h.RegistryURL), ViewedUser: viewedUser, Repositories: cards, + HasProfile: hasProfile, } if err := h.Templates.ExecuteTemplate(w, "user", data); err != nil { diff --git a/pkg/appview/templates/pages/user.html b/pkg/appview/templates/pages/user.html index 8cccdd5..b40d0b3 100644 --- a/pkg/appview/templates/pages/user.html +++ b/pkg/appview/templates/pages/user.html @@ -13,13 +13,19 @@
{{ if .ViewedUser.Avatar }} {{ .ViewedUser.Handle }} - {{ else }} + {{ else if .HasProfile }}
{{ firstChar .ViewedUser.Handle }}
+ {{ else }} +
?
{{ end }}

{{ .ViewedUser.Handle }}

- {{ if .Repositories }} + {{ if not .HasProfile }} +
+

This user hasn't set up their ATCR profile yet.

+
+ {{ else if .Repositories }}