From 0a341bcc288083527ce5e9bf0a1056766336a393 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Wed, 10 Dec 2025 07:16:54 +0000 Subject: [PATCH] appview: rename refresolver module to mentions usage of the resolver is now mentionsResolver. Signed-off-by: oppiliappan --- appview/issues/issues.go | 60 ++++++++++++++++++++++++++++++------------------------------ appview/mentions/resolver.go | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ appview/pulls/pulls.go | 58 +++++++++++++++++++++++++++++----------------------------- appview/refresolver/resolver.go | 65 ----------------------------------------------------------------- appview/state/router.go | 4 ++-- appview/state/state.go | 38 +++++++++++++++++++------------------- 6 file(s) changed, 147 insertion(s)(+), 145 deletion(s)(-) diff --git a/appview/issues/issues.go b/appview/issues/issues.go --- a/appview/issues/issues.go +++ b/appview/issues/issues.go @@ -19,13 +19,13 @@ "tangled.org/core/appview/config" "tangled.org/core/appview/db" issues_indexer "tangled.org/core/appview/indexer/issues" + "tangled.org/core/appview/mentions" "tangled.org/core/appview/models" "tangled.org/core/appview/notify" "tangled.org/core/appview/oauth" "tangled.org/core/appview/pages" "tangled.org/core/appview/pages/repoinfo" "tangled.org/core/appview/pagination" - "tangled.org/core/appview/refresolver" "tangled.org/core/appview/reporesolver" "tangled.org/core/appview/validator" "tangled.org/core/idresolver" @@ -34,18 +34,18 @@ ) type Issues struct { - oauth *oauth.OAuth - repoResolver *reporesolver.RepoResolver - enforcer *rbac.Enforcer - pages *pages.Pages - idResolver *idresolver.Resolver - refResolver *refresolver.Resolver - db *db.DB - config *config.Config - notifier notify.Notifier - logger *slog.Logger - validator *validator.Validator - indexer *issues_indexer.Indexer + oauth *oauth.OAuth + repoResolver *reporesolver.RepoResolver + enforcer *rbac.Enforcer + pages *pages.Pages + idResolver *idresolver.Resolver + mentionsResolver *mentions.Resolver + db *db.DB + config *config.Config + notifier notify.Notifier + logger *slog.Logger + validator *validator.Validator + indexer *issues_indexer.Indexer } func New( @@ -54,7 +54,7 @@ enforcer *rbac.Enforcer, pages *pages.Pages, idResolver *idresolver.Resolver, - refResolver *refresolver.Resolver, + mentionsResolver *mentions.Resolver, db *db.DB, config *config.Config, notifier notify.Notifier, @@ -63,18 +63,18 @@ logger *slog.Logger, ) *Issues { return &Issues{ - oauth: oauth, - repoResolver: repoResolver, - enforcer: enforcer, - pages: pages, - idResolver: idResolver, - refResolver: refResolver, - db: db, - config: config, - notifier: notifier, - logger: logger, - validator: validator, - indexer: indexer, + oauth: oauth, + repoResolver: repoResolver, + enforcer: enforcer, + pages: pages, + idResolver: idResolver, + mentionsResolver: mentionsResolver, + db: db, + config: config, + notifier: notifier, + logger: logger, + validator: validator, + indexer: indexer, } } @@ -163,7 +163,7 @@ newIssue := issue newIssue.Title = r.FormValue("title") newIssue.Body = r.FormValue("body") - newIssue.Mentions, newIssue.References = rp.refResolver.Resolve(r.Context(), newIssue.Body) + newIssue.Mentions, newIssue.References = rp.mentionsResolver.Resolve(r.Context(), newIssue.Body) if err := rp.validator.ValidateIssue(newIssue); err != nil { l.Error("validation error", "err", err) @@ -412,7 +412,7 @@ replyTo = &replyToUri } - mentions, references := rp.refResolver.Resolve(r.Context(), body) + mentions, references := rp.mentionsResolver.Resolve(r.Context(), body) comment := models.IssueComment{ Did: user.Did, @@ -584,7 +584,7 @@ newComment := comment newComment.Body = newBody newComment.Edited = &now - newComment.Mentions, newComment.References = rp.refResolver.Resolve(r.Context(), newBody) + newComment.Mentions, newComment.References = rp.mentionsResolver.Resolve(r.Context(), newBody) record := newComment.AsRecord() @@ -912,7 +912,7 @@ }) case http.MethodPost: body := r.FormValue("body") - mentions, references := rp.refResolver.Resolve(r.Context(), body) + mentions, references := rp.mentionsResolver.Resolve(r.Context(), body) issue := &models.Issue{ RepoAt: f.RepoAt(), diff --git a/appview/mentions/resolver.go b/appview/mentions/resolver.go new file mode 100644 --- /dev/null +++ b/appview/mentions/resolver.go @@ -0,0 +1,67 @@ +package mentions + +import ( + "context" + "log/slog" + + "github.com/bluesky-social/indigo/atproto/syntax" + "tangled.org/core/appview/config" + "tangled.org/core/appview/db" + "tangled.org/core/appview/models" + "tangled.org/core/appview/pages/markup" + "tangled.org/core/idresolver" +) + +type Resolver struct { + config *config.Config + idResolver *idresolver.Resolver + execer db.Execer + logger *slog.Logger +} + +func New( + config *config.Config, + idResolver *idresolver.Resolver, + execer db.Execer, + logger *slog.Logger, +) *Resolver { + return &Resolver{ + config, + idResolver, + execer, + logger, + } +} + +func (r *Resolver) Resolve(ctx context.Context, source string) ([]syntax.DID, []syntax.ATURI) { + l := r.logger.With("method", "Resolve") + + rawMentions, rawRefs := markup.FindReferences(r.config.Core.AppviewHost, source) + l.Debug("found possible references", "mentions", rawMentions, "refs", rawRefs) + + idents := r.idResolver.ResolveIdents(ctx, rawMentions) + var mentions []syntax.DID + for _, ident := range idents { + if ident != nil && !ident.Handle.IsInvalidHandle() { + mentions = append(mentions, ident.DID) + } + } + l.Debug("found mentions", "mentions", mentions) + + var resolvedRefs []models.ReferenceLink + for _, rawRef := range rawRefs { + ident, err := r.idResolver.ResolveIdent(ctx, rawRef.Handle) + if err != nil || ident == nil || ident.Handle.IsInvalidHandle() { + continue + } + rawRef.Handle = string(ident.DID) + resolvedRefs = append(resolvedRefs, rawRef) + } + aturiRefs, err := db.ValidateReferenceLinks(r.execer, resolvedRefs) + if err != nil { + l.Error("failed running query", "err", err) + } + l.Debug("found references", "refs", aturiRefs) + + return mentions, aturiRefs +} diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -19,13 +19,13 @@ "tangled.org/core/appview/config" "tangled.org/core/appview/db" pulls_indexer "tangled.org/core/appview/indexer/pulls" + "tangled.org/core/appview/mentions" "tangled.org/core/appview/models" "tangled.org/core/appview/notify" "tangled.org/core/appview/oauth" "tangled.org/core/appview/pages" "tangled.org/core/appview/pages/markup" "tangled.org/core/appview/pages/repoinfo" - "tangled.org/core/appview/refresolver" "tangled.org/core/appview/reporesolver" "tangled.org/core/appview/validator" "tangled.org/core/appview/xrpcclient" @@ -44,18 +44,18 @@ ) type Pulls struct { - oauth *oauth.OAuth - repoResolver *reporesolver.RepoResolver - pages *pages.Pages - idResolver *idresolver.Resolver - refResolver *refresolver.Resolver - db *db.DB - config *config.Config - notifier notify.Notifier - enforcer *rbac.Enforcer - logger *slog.Logger - validator *validator.Validator - indexer *pulls_indexer.Indexer + oauth *oauth.OAuth + repoResolver *reporesolver.RepoResolver + pages *pages.Pages + idResolver *idresolver.Resolver + mentionsResolver *mentions.Resolver + db *db.DB + config *config.Config + notifier notify.Notifier + enforcer *rbac.Enforcer + logger *slog.Logger + validator *validator.Validator + indexer *pulls_indexer.Indexer } func New( @@ -63,7 +63,7 @@ repoResolver *reporesolver.RepoResolver, pages *pages.Pages, resolver *idresolver.Resolver, - refResolver *refresolver.Resolver, + mentionsResolver *mentions.Resolver, db *db.DB, config *config.Config, notifier notify.Notifier, @@ -73,18 +73,18 @@ logger *slog.Logger, ) *Pulls { return &Pulls{ - oauth: oauth, - repoResolver: repoResolver, - pages: pages, - idResolver: resolver, - refResolver: refResolver, - db: db, - config: config, - notifier: notifier, - enforcer: enforcer, - logger: logger, - validator: validator, - indexer: indexer, + oauth: oauth, + repoResolver: repoResolver, + pages: pages, + idResolver: resolver, + mentionsResolver: mentionsResolver, + db: db, + config: config, + notifier: notifier, + enforcer: enforcer, + logger: logger, + validator: validator, + indexer: indexer, } } @@ -729,7 +729,7 @@ return } - mentions, references := s.refResolver.Resolve(r.Context(), body) + mentions, references := s.mentionsResolver.Resolve(r.Context(), body) // Start a transaction tx, err := s.db.BeginTx(r.Context(), nil) @@ -1205,7 +1205,7 @@ } } - mentions, references := s.refResolver.Resolve(r.Context(), body) + mentions, references := s.mentionsResolver.Resolve(r.Context(), body) rkey := tid.TID() initialSubmission := models.PullSubmission{ @@ -2397,7 +2397,7 @@ body := fp.Body rkey := tid.TID() - mentions, references := s.refResolver.Resolve(ctx, body) + mentions, references := s.mentionsResolver.Resolve(ctx, body) initialSubmission := models.PullSubmission{ Patch: fp.Raw, diff --git a/appview/refresolver/resolver.go b/appview/refresolver/resolver.go deleted file mode 100644 --- a/appview/refresolver/resolver.go +++ /dev/null @@ -1,65 +0,0 @@ -package refresolver - -import ( - "context" - "log/slog" - - "github.com/bluesky-social/indigo/atproto/syntax" - "tangled.org/core/appview/config" - "tangled.org/core/appview/db" - "tangled.org/core/appview/models" - "tangled.org/core/appview/pages/markup" - "tangled.org/core/idresolver" -) - -type Resolver struct { - config *config.Config - idResolver *idresolver.Resolver - execer db.Execer - logger *slog.Logger -} - -func New( - config *config.Config, - idResolver *idresolver.Resolver, - execer db.Execer, - logger *slog.Logger, -) *Resolver { - return &Resolver{ - config, - idResolver, - execer, - logger, - } -} - -func (r *Resolver) Resolve(ctx context.Context, source string) ([]syntax.DID, []syntax.ATURI) { - l := r.logger.With("method", "Resolve") - rawMentions, rawRefs := markup.FindReferences(r.config.Core.AppviewHost, source) - l.Debug("found possible references", "mentions", rawMentions, "refs", rawRefs) - idents := r.idResolver.ResolveIdents(ctx, rawMentions) - var mentions []syntax.DID - for _, ident := range idents { - if ident != nil && !ident.Handle.IsInvalidHandle() { - mentions = append(mentions, ident.DID) - } - } - l.Debug("found mentions", "mentions", mentions) - - var resolvedRefs []models.ReferenceLink - for _, rawRef := range rawRefs { - ident, err := r.idResolver.ResolveIdent(ctx, rawRef.Handle) - if err != nil || ident == nil || ident.Handle.IsInvalidHandle() { - continue - } - rawRef.Handle = string(ident.DID) - resolvedRefs = append(resolvedRefs, rawRef) - } - aturiRefs, err := db.ValidateReferenceLinks(r.execer, resolvedRefs) - if err != nil { - l.Error("failed running query", "err", err) - } - l.Debug("found references", "refs", aturiRefs) - - return mentions, aturiRefs -} diff --git a/appview/state/router.go b/appview/state/router.go --- a/appview/state/router.go +++ b/appview/state/router.go @@ -266,7 +266,7 @@ s.enforcer, s.pages, s.idResolver, - s.refResolver, + s.mentionsResolver, s.db, s.config, s.notifier, @@ -283,7 +283,7 @@ s.repoResolver, s.pages, s.idResolver, - s.refResolver, + s.mentionsResolver, s.db, s.config, s.notifier, diff --git a/appview/state/state.go b/appview/state/state.go --- a/appview/state/state.go +++ b/appview/state/state.go @@ -15,13 +15,13 @@ "tangled.org/core/appview/config" "tangled.org/core/appview/db" "tangled.org/core/appview/indexer" + "tangled.org/core/appview/mentions" "tangled.org/core/appview/models" "tangled.org/core/appview/notify" dbnotify "tangled.org/core/appview/notify/db" phnotify "tangled.org/core/appview/notify/posthog" "tangled.org/core/appview/oauth" "tangled.org/core/appview/pages" - "tangled.org/core/appview/refresolver" "tangled.org/core/appview/reporesolver" "tangled.org/core/appview/validator" xrpcclient "tangled.org/core/appview/xrpcclient" @@ -43,22 +43,22 @@ ) type State struct { - db *db.DB - notifier notify.Notifier - indexer *indexer.Indexer - oauth *oauth.OAuth - enforcer *rbac.Enforcer - pages *pages.Pages - idResolver *idresolver.Resolver - refResolver *refresolver.Resolver - posthog posthog.Client - jc *jetstream.JetstreamClient - config *config.Config - repoResolver *reporesolver.RepoResolver - knotstream *eventconsumer.Consumer - spindlestream *eventconsumer.Consumer - logger *slog.Logger - validator *validator.Validator + db *db.DB + notifier notify.Notifier + indexer *indexer.Indexer + oauth *oauth.OAuth + enforcer *rbac.Enforcer + pages *pages.Pages + idResolver *idresolver.Resolver + mentionsResolver *mentions.Resolver + posthog posthog.Client + jc *jetstream.JetstreamClient + config *config.Config + repoResolver *reporesolver.RepoResolver + knotstream *eventconsumer.Consumer + spindlestream *eventconsumer.Consumer + logger *slog.Logger + validator *validator.Validator } func Make(ctx context.Context, config *config.Config) (*State, error) { @@ -100,7 +100,7 @@ repoResolver := reporesolver.New(config, enforcer, d) - refResolver := refresolver.New(config, res, d, log.SubLogger(logger, "refResolver")) + mentionsResolver := mentions.New(config, res, d, log.SubLogger(logger, "mentionsResolver")) wrapper := db.DbWrapper{Execer: d} jc, err := jetstream.NewJetstreamClient( @@ -182,7 +182,7 @@ enforcer, pages, res, - refResolver, + mentionsResolver, posthog, jc, config, -- tangled.sh