tangled
alpha
login
or
join now
dzming.li
/
core
0
fork
atom
A vibe coded tangled fork which supports pijul.
0
fork
atom
overview
issues
pulls
pipelines
appview: wip
Signed-off-by: Seongmin Lee <git@boltless.me>
Seongmin Lee
6 days ago
2993b9e2
f349c8dc
+30
-25
2 changed files
expand all
collapse all
unified
split
appview
settings
settings.go
state
router.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
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
36
-
Db *db.DB
37
37
-
OAuth *oauth.OAuth
38
38
-
Pages *pages.Pages
39
39
-
Config *config.Config
40
40
-
CfClient *cloudflare.Client
41
41
-
Logger *slog.Logger
37
37
+
Db *db.DB
38
38
+
IdResolver *idresolver.Resolver
39
39
+
OAuth *oauth.OAuth
40
40
+
Pages *pages.Pages
41
41
+
Config *config.Config
42
42
+
CfClient *cloudflare.Client
43
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
93
-
isTnglHandle := false
94
94
-
for _, acc := range user.Accounts {
95
95
-
if acc.Did == user.Active.Did {
96
96
-
isTnglHandle = strings.HasSuffix(acc.Handle, s.Config.Pds.HandleSuffix)
97
97
-
break
95
95
+
isTnglHandle := func() bool {
96
96
+
ident, err := s.IdResolver.ResolveIdent(r.Context(), user.Active.Did)
97
97
+
if err != nil {
98
98
+
return false
98
99
}
99
99
-
}
100
100
+
return strings.HasSuffix(ident.Handle.String(), s.Config.Pds.HandleSuffix)
101
101
+
}()
100
102
101
103
s.Pages.UserSiteSettings(w, pages.UserSiteSettingsParams{
102
104
LoggedInUser: user,
···
161
163
return
162
164
}
163
165
164
164
-
for _, acc := range user.Accounts {
165
165
-
if acc.Did == user.Active.Did {
166
166
-
if strings.HasSuffix(acc.Handle, s.Config.Pds.HandleSuffix) {
167
167
-
s.Pages.Notice(w, "settings-sites-error", "Your tngl.sh domain is tied to your handle and cannot be released here.")
168
168
-
return
169
169
-
}
170
170
-
break
166
166
+
isTnglHandle := func() bool {
167
167
+
ident, err := s.IdResolver.ResolveIdent(r.Context(), user.Active.Did)
168
168
+
if err != nil {
169
169
+
return false
171
170
}
171
171
+
return strings.HasSuffix(ident.Handle.String(), s.Config.Pds.HandleSuffix)
172
172
+
}()
173
173
+
if isTnglHandle {
174
174
+
s.Pages.Notice(w, "settings-sites-error", "Your tngl.sh domain is tied to your handle and cannot be released here.")
175
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
213
-
Db: s.db,
214
214
-
OAuth: s.oauth,
215
215
-
Pages: s.pages,
216
216
-
Config: s.config,
217
217
-
CfClient: s.cfClient,
218
218
-
Logger: log.SubLogger(s.logger, "settings"),
213
213
+
Db: s.db,
214
214
+
OAuth: s.oauth,
215
215
+
Pages: s.pages,
216
216
+
Config: s.config,
217
217
+
CfClient: s.cfClient,
218
218
+
Logger: log.SubLogger(s.logger, "settings"),
219
219
+
IdResolver: s.idResolver,
219
220
}
220
221
221
222
return settings.Router()