A vibe coded tangled fork which supports pijul.

appview: wip

Signed-off-by: Seongmin Lee <git@boltless.me>

+30 -25
+23 -19
appview/settings/settings.go
··· 23 23 "tangled.org/core/appview/oauth" 24 24 "tangled.org/core/appview/pages" 25 25 "tangled.org/core/appview/sites" 26 + "tangled.org/core/idresolver" 26 27 "tangled.org/core/tid" 27 28 28 29 comatproto "github.com/bluesky-social/indigo/api/atproto" ··· 33 34 ) 34 35 35 36 type Settings struct { 36 - Db *db.DB 37 - OAuth *oauth.OAuth 38 - Pages *pages.Pages 39 - Config *config.Config 40 - CfClient *cloudflare.Client 41 - Logger *slog.Logger 37 + Db *db.DB 38 + IdResolver *idresolver.Resolver 39 + OAuth *oauth.OAuth 40 + Pages *pages.Pages 41 + Config *config.Config 42 + CfClient *cloudflare.Client 43 + Logger *slog.Logger 42 44 } 43 45 44 46 func (s *Settings) Router() http.Handler { ··· 90 92 91 93 // determine whether the active account has a tngl.sh handle, in which 92 94 // case their sites domain is automatically their handle domain. 93 - isTnglHandle := false 94 - for _, acc := range user.Accounts { 95 - if acc.Did == user.Active.Did { 96 - isTnglHandle = strings.HasSuffix(acc.Handle, s.Config.Pds.HandleSuffix) 97 - break 95 + isTnglHandle := func() bool { 96 + ident, err := s.IdResolver.ResolveIdent(r.Context(), user.Active.Did) 97 + if err != nil { 98 + return false 98 99 } 99 - } 100 + return strings.HasSuffix(ident.Handle.String(), s.Config.Pds.HandleSuffix) 101 + }() 100 102 101 103 s.Pages.UserSiteSettings(w, pages.UserSiteSettingsParams{ 102 104 LoggedInUser: user, ··· 161 163 return 162 164 } 163 165 164 - for _, acc := range user.Accounts { 165 - if acc.Did == user.Active.Did { 166 - if strings.HasSuffix(acc.Handle, s.Config.Pds.HandleSuffix) { 167 - s.Pages.Notice(w, "settings-sites-error", "Your tngl.sh domain is tied to your handle and cannot be released here.") 168 - return 169 - } 170 - break 166 + isTnglHandle := func() bool { 167 + ident, err := s.IdResolver.ResolveIdent(r.Context(), user.Active.Did) 168 + if err != nil { 169 + return false 171 170 } 171 + return strings.HasSuffix(ident.Handle.String(), s.Config.Pds.HandleSuffix) 172 + }() 173 + if isTnglHandle { 174 + s.Pages.Notice(w, "settings-sites-error", "Your tngl.sh domain is tied to your handle and cannot be released here.") 175 + return 172 176 } 173 177 174 178 if err := db.ReleaseDomain(s.Db, user.Active.Did, domain); err != nil {
+7 -6
appview/state/router.go
··· 210 210 211 211 func (s *State) SettingsRouter() http.Handler { 212 212 settings := &settings.Settings{ 213 - Db: s.db, 214 - OAuth: s.oauth, 215 - Pages: s.pages, 216 - Config: s.config, 217 - CfClient: s.cfClient, 218 - Logger: log.SubLogger(s.logger, "settings"), 213 + Db: s.db, 214 + OAuth: s.oauth, 215 + Pages: s.pages, 216 + Config: s.config, 217 + CfClient: s.cfClient, 218 + Logger: log.SubLogger(s.logger, "settings"), 219 + IdResolver: s.idResolver, 219 220 } 220 221 221 222 return settings.Router()