diff --git a/appview/db/vouch.go b/appview/db/vouch.go --- a/appview/db/vouch.go +++ b/appview/db/vouch.go @@ -308,6 +308,15 @@ } return batch[subjectDid], nil } +func IsVouchSkipped(e Execer, did, subjectDid string) (bool, error) { + var exists bool + err := e.QueryRow( + `select exists(select 1 from vouch_skips where did = ? and subject_did = ?)`, + did, subjectDid, + ).Scan(&exists) + return exists, err +} + func SkipVouchSuggestion(e Execer, did, subjectDid string) error { _, err := e.Exec( `insert or ignore into vouch_skips (did, subject_did) values (?, ?)`, diff --git a/appview/pages/pages.go b/appview/pages/pages.go --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -1384,6 +1384,7 @@ UserReacted map[models.ReactionKind]bool LabelDefs map[string]*models.LabelDefinition VouchRelationships map[syntax.DID]*models.VouchRelationship + VouchSkips map[syntax.DID]bool } func (p *Pages) RepoSinglePull(w io.Writer, params RepoSinglePullParams) error { diff --git a/appview/pages/templates/repo/pulls/fragments/pullVouchNudge.html b/appview/pages/templates/repo/pulls/fragments/pullVouchNudge.html new file mode 100644 --- /dev/null +++ b/appview/pages/templates/repo/pulls/fragments/pullVouchNudge.html @@ -0,0 +1,38 @@ +{{ define "repo/pulls/fragments/pullVouchNudge" }} + {{ $owner := .Pull.OwnerDid }} + {{ $vr := index .VouchRelationships (did $owner) }} + {{ $skipped := index .VouchSkips (did $owner) }} + + {{ if and + .LoggedInUser + (ne .LoggedInUser.Did $owner) + (or .Pull.State.IsOpen .Pull.State.IsMerged) + (or (not $vr) $vr.IsEmpty) + (not $skipped) }} + +