+30
-30
appview/issues/issues.go
+30
-30
appview/issues/issues.go
···
19
19
"tangled.org/core/appview/config"
20
20
"tangled.org/core/appview/db"
21
21
issues_indexer "tangled.org/core/appview/indexer/issues"
22
+
"tangled.org/core/appview/mentions"
22
23
"tangled.org/core/appview/models"
23
24
"tangled.org/core/appview/notify"
24
25
"tangled.org/core/appview/oauth"
25
26
"tangled.org/core/appview/pages"
26
27
"tangled.org/core/appview/pages/repoinfo"
27
28
"tangled.org/core/appview/pagination"
28
-
"tangled.org/core/appview/refresolver"
29
29
"tangled.org/core/appview/reporesolver"
30
30
"tangled.org/core/appview/validator"
31
31
"tangled.org/core/idresolver"
···
34
34
)
35
35
36
36
type Issues struct {
37
-
oauth *oauth.OAuth
38
-
repoResolver *reporesolver.RepoResolver
39
-
enforcer *rbac.Enforcer
40
-
pages *pages.Pages
41
-
idResolver *idresolver.Resolver
42
-
refResolver *refresolver.Resolver
43
-
db *db.DB
44
-
config *config.Config
45
-
notifier notify.Notifier
46
-
logger *slog.Logger
47
-
validator *validator.Validator
48
-
indexer *issues_indexer.Indexer
37
+
oauth *oauth.OAuth
38
+
repoResolver *reporesolver.RepoResolver
39
+
enforcer *rbac.Enforcer
40
+
pages *pages.Pages
41
+
idResolver *idresolver.Resolver
42
+
mentionsResolver *mentions.Resolver
43
+
db *db.DB
44
+
config *config.Config
45
+
notifier notify.Notifier
46
+
logger *slog.Logger
47
+
validator *validator.Validator
48
+
indexer *issues_indexer.Indexer
49
49
}
50
50
51
51
func New(
···
54
54
enforcer *rbac.Enforcer,
55
55
pages *pages.Pages,
56
56
idResolver *idresolver.Resolver,
57
-
refResolver *refresolver.Resolver,
57
+
mentionsResolver *mentions.Resolver,
58
58
db *db.DB,
59
59
config *config.Config,
60
60
notifier notify.Notifier,
···
63
63
logger *slog.Logger,
64
64
) *Issues {
65
65
return &Issues{
66
-
oauth: oauth,
67
-
repoResolver: repoResolver,
68
-
enforcer: enforcer,
69
-
pages: pages,
70
-
idResolver: idResolver,
71
-
refResolver: refResolver,
72
-
db: db,
73
-
config: config,
74
-
notifier: notifier,
75
-
logger: logger,
76
-
validator: validator,
77
-
indexer: indexer,
66
+
oauth: oauth,
67
+
repoResolver: repoResolver,
68
+
enforcer: enforcer,
69
+
pages: pages,
70
+
idResolver: idResolver,
71
+
mentionsResolver: mentionsResolver,
72
+
db: db,
73
+
config: config,
74
+
notifier: notifier,
75
+
logger: logger,
76
+
validator: validator,
77
+
indexer: indexer,
78
78
}
79
79
}
80
80
···
163
163
newIssue := issue
164
164
newIssue.Title = r.FormValue("title")
165
165
newIssue.Body = r.FormValue("body")
166
-
newIssue.Mentions, newIssue.References = rp.refResolver.Resolve(r.Context(), newIssue.Body)
166
+
newIssue.Mentions, newIssue.References = rp.mentionsResolver.Resolve(r.Context(), newIssue.Body)
167
167
168
168
if err := rp.validator.ValidateIssue(newIssue); err != nil {
169
169
l.Error("validation error", "err", err)
···
412
412
replyTo = &replyToUri
413
413
}
414
414
415
-
mentions, references := rp.refResolver.Resolve(r.Context(), body)
415
+
mentions, references := rp.mentionsResolver.Resolve(r.Context(), body)
416
416
417
417
comment := models.IssueComment{
418
418
Did: user.Did,
···
584
584
newComment := comment
585
585
newComment.Body = newBody
586
586
newComment.Edited = &now
587
-
newComment.Mentions, newComment.References = rp.refResolver.Resolve(r.Context(), newBody)
587
+
newComment.Mentions, newComment.References = rp.mentionsResolver.Resolve(r.Context(), newBody)
588
588
589
589
record := newComment.AsRecord()
590
590
···
912
912
})
913
913
case http.MethodPost:
914
914
body := r.FormValue("body")
915
-
mentions, references := rp.refResolver.Resolve(r.Context(), body)
915
+
mentions, references := rp.mentionsResolver.Resolve(r.Context(), body)
916
916
917
917
issue := &models.Issue{
918
918
RepoAt: f.RepoAt(),
+29
-29
appview/pulls/pulls.go
+29
-29
appview/pulls/pulls.go
···
19
19
"tangled.org/core/appview/config"
20
20
"tangled.org/core/appview/db"
21
21
pulls_indexer "tangled.org/core/appview/indexer/pulls"
22
+
"tangled.org/core/appview/mentions"
22
23
"tangled.org/core/appview/models"
23
24
"tangled.org/core/appview/notify"
24
25
"tangled.org/core/appview/oauth"
25
26
"tangled.org/core/appview/pages"
26
27
"tangled.org/core/appview/pages/markup"
27
28
"tangled.org/core/appview/pages/repoinfo"
28
-
"tangled.org/core/appview/refresolver"
29
29
"tangled.org/core/appview/reporesolver"
30
30
"tangled.org/core/appview/validator"
31
31
"tangled.org/core/appview/xrpcclient"
···
44
44
)
45
45
46
46
type Pulls struct {
47
-
oauth *oauth.OAuth
48
-
repoResolver *reporesolver.RepoResolver
49
-
pages *pages.Pages
50
-
idResolver *idresolver.Resolver
51
-
refResolver *refresolver.Resolver
52
-
db *db.DB
53
-
config *config.Config
54
-
notifier notify.Notifier
55
-
enforcer *rbac.Enforcer
56
-
logger *slog.Logger
57
-
validator *validator.Validator
58
-
indexer *pulls_indexer.Indexer
47
+
oauth *oauth.OAuth
48
+
repoResolver *reporesolver.RepoResolver
49
+
pages *pages.Pages
50
+
idResolver *idresolver.Resolver
51
+
mentionsResolver *mentions.Resolver
52
+
db *db.DB
53
+
config *config.Config
54
+
notifier notify.Notifier
55
+
enforcer *rbac.Enforcer
56
+
logger *slog.Logger
57
+
validator *validator.Validator
58
+
indexer *pulls_indexer.Indexer
59
59
}
60
60
61
61
func New(
···
63
63
repoResolver *reporesolver.RepoResolver,
64
64
pages *pages.Pages,
65
65
resolver *idresolver.Resolver,
66
-
refResolver *refresolver.Resolver,
66
+
mentionsResolver *mentions.Resolver,
67
67
db *db.DB,
68
68
config *config.Config,
69
69
notifier notify.Notifier,
···
73
73
logger *slog.Logger,
74
74
) *Pulls {
75
75
return &Pulls{
76
-
oauth: oauth,
77
-
repoResolver: repoResolver,
78
-
pages: pages,
79
-
idResolver: resolver,
80
-
refResolver: refResolver,
81
-
db: db,
82
-
config: config,
83
-
notifier: notifier,
84
-
enforcer: enforcer,
85
-
logger: logger,
86
-
validator: validator,
87
-
indexer: indexer,
76
+
oauth: oauth,
77
+
repoResolver: repoResolver,
78
+
pages: pages,
79
+
idResolver: resolver,
80
+
mentionsResolver: mentionsResolver,
81
+
db: db,
82
+
config: config,
83
+
notifier: notifier,
84
+
enforcer: enforcer,
85
+
logger: logger,
86
+
validator: validator,
87
+
indexer: indexer,
88
88
}
89
89
}
90
90
···
729
729
return
730
730
}
731
731
732
-
mentions, references := s.refResolver.Resolve(r.Context(), body)
732
+
mentions, references := s.mentionsResolver.Resolve(r.Context(), body)
733
733
734
734
// Start a transaction
735
735
tx, err := s.db.BeginTx(r.Context(), nil)
···
1205
1205
}
1206
1206
}
1207
1207
1208
-
mentions, references := s.refResolver.Resolve(r.Context(), body)
1208
+
mentions, references := s.mentionsResolver.Resolve(r.Context(), body)
1209
1209
1210
1210
rkey := tid.TID()
1211
1211
initialSubmission := models.PullSubmission{
···
2397
2397
body := fp.Body
2398
2398
rkey := tid.TID()
2399
2399
2400
-
mentions, references := s.refResolver.Resolve(ctx, body)
2400
+
mentions, references := s.mentionsResolver.Resolve(ctx, body)
2401
2401
2402
2402
initialSubmission := models.PullSubmission{
2403
2403
Patch: fp.Raw,
+3
-1
appview/refresolver/resolver.go
appview/mentions/resolver.go
+3
-1
appview/refresolver/resolver.go
appview/mentions/resolver.go
···
1
-
package refresolver
1
+
package mentions
2
2
3
3
import (
4
4
"context"
···
35
35
36
36
func (r *Resolver) Resolve(ctx context.Context, source string) ([]syntax.DID, []syntax.ATURI) {
37
37
l := r.logger.With("method", "Resolve")
38
+
38
39
rawMentions, rawRefs := markup.FindReferences(r.config.Core.AppviewHost, source)
39
40
l.Debug("found possible references", "mentions", rawMentions, "refs", rawRefs)
41
+
40
42
idents := r.idResolver.ResolveIdents(ctx, rawMentions)
41
43
var mentions []syntax.DID
42
44
for _, ident := range idents {
+2
-2
appview/state/router.go
+2
-2
appview/state/router.go
···
266
266
s.enforcer,
267
267
s.pages,
268
268
s.idResolver,
269
-
s.refResolver,
269
+
s.mentionsResolver,
270
270
s.db,
271
271
s.config,
272
272
s.notifier,
···
283
283
s.repoResolver,
284
284
s.pages,
285
285
s.idResolver,
286
-
s.refResolver,
286
+
s.mentionsResolver,
287
287
s.db,
288
288
s.config,
289
289
s.notifier,
+19
-19
appview/state/state.go
+19
-19
appview/state/state.go
···
15
15
"tangled.org/core/appview/config"
16
16
"tangled.org/core/appview/db"
17
17
"tangled.org/core/appview/indexer"
18
+
"tangled.org/core/appview/mentions"
18
19
"tangled.org/core/appview/models"
19
20
"tangled.org/core/appview/notify"
20
21
dbnotify "tangled.org/core/appview/notify/db"
21
22
phnotify "tangled.org/core/appview/notify/posthog"
22
23
"tangled.org/core/appview/oauth"
23
24
"tangled.org/core/appview/pages"
24
-
"tangled.org/core/appview/refresolver"
25
25
"tangled.org/core/appview/reporesolver"
26
26
"tangled.org/core/appview/validator"
27
27
xrpcclient "tangled.org/core/appview/xrpcclient"
···
43
43
)
44
44
45
45
type State struct {
46
-
db *db.DB
47
-
notifier notify.Notifier
48
-
indexer *indexer.Indexer
49
-
oauth *oauth.OAuth
50
-
enforcer *rbac.Enforcer
51
-
pages *pages.Pages
52
-
idResolver *idresolver.Resolver
53
-
refResolver *refresolver.Resolver
54
-
posthog posthog.Client
55
-
jc *jetstream.JetstreamClient
56
-
config *config.Config
57
-
repoResolver *reporesolver.RepoResolver
58
-
knotstream *eventconsumer.Consumer
59
-
spindlestream *eventconsumer.Consumer
60
-
logger *slog.Logger
61
-
validator *validator.Validator
46
+
db *db.DB
47
+
notifier notify.Notifier
48
+
indexer *indexer.Indexer
49
+
oauth *oauth.OAuth
50
+
enforcer *rbac.Enforcer
51
+
pages *pages.Pages
52
+
idResolver *idresolver.Resolver
53
+
mentionsResolver *mentions.Resolver
54
+
posthog posthog.Client
55
+
jc *jetstream.JetstreamClient
56
+
config *config.Config
57
+
repoResolver *reporesolver.RepoResolver
58
+
knotstream *eventconsumer.Consumer
59
+
spindlestream *eventconsumer.Consumer
60
+
logger *slog.Logger
61
+
validator *validator.Validator
62
62
}
63
63
64
64
func Make(ctx context.Context, config *config.Config) (*State, error) {
···
100
100
101
101
repoResolver := reporesolver.New(config, enforcer, d)
102
102
103
-
refResolver := refresolver.New(config, res, d, log.SubLogger(logger, "refResolver"))
103
+
mentionsResolver := mentions.New(config, res, d, log.SubLogger(logger, "mentionsResolver"))
104
104
105
105
wrapper := db.DbWrapper{Execer: d}
106
106
jc, err := jetstream.NewJetstreamClient(
···
182
182
enforcer,
183
183
pages,
184
184
res,
185
-
refResolver,
185
+
mentionsResolver,
186
186
posthog,
187
187
jc,
188
188
config,