Signed-off-by: Seongmin Lee git@boltless.me
+30
-25
Diff
round #0
+23
-19
appview/settings/settings.go
+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
+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()
History
1 round
0 comments
boltless.me
submitted
#0
1 commit
expand
collapse
appview: wip
Signed-off-by: Seongmin Lee <git@boltless.me>
expand 0 comments
This pull has been deleted (possibly by jj abandon or jj squash)