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 .Repositories }} + {{ if not .HasProfile }} +This user hasn't set up their ATCR profile yet.
+