diff --git a/deliberi/ingest.go b/deliberi/ingest.go index db87f8151..e8bac6ab3 100644 --- a/deliberi/ingest.go +++ b/deliberi/ingest.go @@ -30,7 +30,9 @@ type Ingester struct { var ingestCollections = []string{ tangled.RepoNSID, tangled.RepoIssueNSID, + tangled.RepoIssueStateNSID, tangled.RepoPullNSID, + tangled.RepoPullStatusNSID, tangled.FeedCommentNSID, tangled.FeedStarNSID, tangled.GraphFollowNSID, @@ -96,6 +98,27 @@ func (i *Ingester) process(ctx context.Context, e *jmodels.Event) error { } i.notifyEntity(ctx, actorDid, entityAt, entityAt, rec.Repo, models.NotificationTypeIssueCreated, rec.Title, rec.Mentions, "sh.tangled.repo.issue") + case tangled.RepoIssueStateNSID: + var rec tangled.RepoIssueState + if err := json.Unmarshal(e.Commit.Record, &rec); err != nil { + i.logger.Warn("decoding issue state record", "err", err, "uri", entityAt) + return nil + } + var t models.NotificationType + switch rec.State { + case tangled.RepoIssueStateClosed: + t = models.NotificationTypeIssueClosed + case tangled.RepoIssueStateOpen: + t = models.NotificationTypeIssueReopen + default: + return nil + } + title, repoDid := i.hydrateEntity(ctx, rec.Issue, tangled.RepoIssueNSID) + if repoDid == "" { + return nil + } + i.notifyEntity(ctx, actorDid, entityAt, rec.Issue, repoDid, t, title, nil, tangled.RepoIssueNSID) + case tangled.RepoPullNSID: var rec tangled.RepoPull if err := json.Unmarshal(e.Commit.Record, &rec); err != nil { @@ -111,6 +134,29 @@ func (i *Ingester) process(ctx context.Context, e *jmodels.Event) error { } i.notifyEntity(ctx, actorDid, entityAt, entityAt, repoDid, models.NotificationTypePullCreated, rec.Title, rec.Mentions, "sh.tangled.repo.pull") + case tangled.RepoPullStatusNSID: + var rec tangled.RepoPullStatus + if err := json.Unmarshal(e.Commit.Record, &rec); err != nil { + i.logger.Warn("decoding pull status record", "err", err, "uri", entityAt) + return nil + } + var t models.NotificationType + switch rec.Status { + case tangled.RepoPullStatusMerged: + t = models.NotificationTypePullMerged + case tangled.RepoPullStatusClosed: + t = models.NotificationTypePullClosed + case tangled.RepoPullStatusOpen: + t = models.NotificationTypePullReopen + default: + return nil + } + title, repoDid := i.hydrateEntity(ctx, rec.Pull, tangled.RepoPullNSID) + if repoDid == "" { + return nil + } + i.notifyEntity(ctx, actorDid, entityAt, rec.Pull, repoDid, t, title, nil, tangled.RepoPullNSID) + case tangled.FeedCommentNSID: var rec tangled.FeedComment if err := json.Unmarshal(e.Commit.Record, &rec); err != nil {