diff --git a/appview/pages/pages.go b/appview/pages/pages.go
--- a/appview/pages/pages.go
+++ b/appview/pages/pages.go
@@ -712,12 +712,14 @@
}
type ProfileVouchesParams struct {
- LoggedInUser *oauth.MultiAccountUser
- Vouches []models.Vouch
- Suggestions []models.VouchSuggestion
- Card *ProfileCard
- Page pagination.Page
- Active string
+ LoggedInUser *oauth.MultiAccountUser
+ Vouches []models.Vouch
+ Suggestions []models.VouchSuggestion
+ Card *ProfileCard
+ Page pagination.Page
+ Active string
+ EvidencePulls map[syntax.ATURI]*models.Pull
+ EvidenceIssues map[syntax.ATURI]*models.Issue
}
func (p *Pages) ProfileVouches(w io.Writer, params ProfileVouchesParams) error {
diff --git a/appview/state/profile.go b/appview/state/profile.go
--- a/appview/state/profile.go
+++ b/appview/state/profile.go
@@ -438,12 +438,50 @@
}
}
+ var pullAts, issueAts []syntax.ATURI
+ for _, v := range vouches {
+ for _, ev := range v.Evidences {
+ switch ev.Collection().String() {
+ case tangled.RepoPullNSID:
+ pullAts = append(pullAts, ev)
+ case tangled.RepoIssueNSID:
+ issueAts = append(issueAts, ev)
+ }
+ }
+ }
+
+ evidencePulls := make(map[syntax.ATURI]*models.Pull)
+ if len(pullAts) > 0 {
+ pulls, err := db.GetPulls(s.db, orm.FilterIn("at_uri", pullAts))
+ if err != nil {
+ l.Error("failed to get evidence pulls", "err", err)
+ } else {
+ for _, p := range pulls {
+ evidencePulls[p.AtUri()] = p
+ }
+ }
+ }
+
+ evidenceIssues := make(map[syntax.ATURI]*models.Issue)
+ if len(issueAts) > 0 {
+ issues, err := db.GetIssues(s.db, orm.FilterIn("at_uri", issueAts))
+ if err != nil {
+ l.Error("failed to get evidence issues", "err", err)
+ } else {
+ for i := range issues {
+ evidenceIssues[issues[i].AtUri()] = &issues[i]
+ }
+ }
+ }
+
err = s.pages.ProfileVouches(w, pages.ProfileVouchesParams{
- LoggedInUser: loggedInUser,
- Vouches: vouches,
- Suggestions: suggestions,
- Card: profile,
- Page: page,
+ LoggedInUser: loggedInUser,
+ Vouches: vouches,
+ Suggestions: suggestions,
+ Card: profile,
+ Page: page,
+ EvidencePulls: evidencePulls,
+ EvidenceIssues: evidenceIssues,
})
if err != nil {
l.Error("failed to render page", "err", err)
diff --git a/appview/state/vouch.go b/appview/state/vouch.go
--- a/appview/state/vouch.go
+++ b/appview/state/vouch.go
@@ -136,13 +136,14 @@
reasonPtr = &reason
}
- var evidences []string
+ var evidences []syntax.ATURI
for _, raw := range r.Form["evidences"] {
- if _, err := syntax.ParseATURI(raw); err != nil {
+ uri, err := syntax.ParseATURI(raw)
+ if err != nil {
l.Warn("invalid evidence AT-URI, skipping", "uri", raw, "err", err)
continue
}
- evidences = append(evidences, raw)
+ evidences = append(evidences, uri)
}
var swapCid *string
@@ -162,7 +163,13 @@
Kind: string(kind),
Reason: reasonPtr,
CreatedAt: createdAt,
- Evidences: evidences,
+ Evidences: func() []string {
+ ss := make([]string, len(evidences))
+ for i, e := range evidences {
+ ss[i] = e.String()
+ }
+ return ss
+ }(),
}},
})
if err != nil {
diff --git a/appview/pages/templates/user/overview.html b/appview/pages/templates/user/overview.html
--- a/appview/pages/templates/user/overview.html
+++ b/appview/pages/templates/user/overview.html
@@ -129,33 +129,7 @@
{{ range $items }}
- {{ $repoOwner := resolve .Repo.Did }}
- {{ $repoName := .Repo.Name }}
- {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }}
-
-
- {{ if .Open }}
-
- {{ i "circle-dot" "w-4 h-4" }}
-
- {{ else }}
-
- {{ i "ban" "w-4 h-4" }}
-
- {{ end }}
-
- #{{ .IssueId }}
-
-
-
+ {{ template "user/fragments/issueEvent" . }}
{{ end }}
@@ -198,37 +172,7 @@
{{ range $items }}
- {{ $repoOwner := resolve .Repo.Did }}
- {{ $repoName := .Repo.Name }}
- {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }}
-
-
- {{ if .State.IsOpen }}
-
- {{ i "git-pull-request" "w-4 h-4" }}
-
- {{ else if .State.IsMerged }}
-
- {{ i "git-merge" "w-4 h-4" }}
-
- {{ else }}
-
- {{ i "git-pull-request-closed" "w-4 h-4" }}
-
- {{ end }}
-
- #{{ .PullId }}
-
-
-
+ {{ template "user/fragments/pullEvent" . }}
{{ end }}
diff --git a/appview/pages/templates/user/vouches.html b/appview/pages/templates/user/vouches.html
--- a/appview/pages/templates/user/vouches.html
+++ b/appview/pages/templates/user/vouches.html
@@ -33,7 +33,7 @@
{{ range .Vouches }}
- {{ template "vouchTimelineItem" (list $.Card.UserDid $.LoggedInUser.Did .) }}
+ {{ template "vouchTimelineItem" (list $.Card.UserDid $.LoggedInUser.Did . $.EvidencePulls $.EvidenceIssues) }}
{{ end }}
{{ end }}
@@ -72,13 +72,17 @@
{{ $profileDid := index . 0 }}
{{ $viewerDid := index . 1 }}
{{ $v := index . 2 }}
+ {{ $evidencePulls := index . 3 }}
+ {{ $evidenceIssues := index . 4 }}
{{ $isOutgoing := eq $v.Did $profileDid }}
{{ $isVouch := $v.IsVouch }}
{{ $isSelf := eq $profileDid $viewerDid }}
-
-
+
+
{{ if $isVouch }}
{{ if $isOutgoing }}
{{ i "arrow-up-right" "size-5 text-green-500 dark:text-green-400" }}
@@ -94,8 +98,8 @@
{{ end }}
-
-
+
+
{{ if and $isSelf $isOutgoing }}
you
{{ else }}
@@ -109,10 +113,23 @@
{{ else }}
{{ resolve $v.SubjectDid.String }}
{{ end }}
-
{{ relTimeFmt $v.CreatedAt }}
+
{{ relTimeFmt $v.CreatedAt }}
{{ with $v.Reason }}
-
{{ . }}
+
{{ . }}
+ {{ end }}
+ {{ if $v.Evidences }}
+
+ {{ range $v.Evidences }}
+ {{ $pull := index $evidencePulls . }}
+ {{ $issue := index $evidenceIssues . }}
+ {{ if $pull }}
+ {{ template "user/fragments/pullEvent" $pull }}
+ {{ else if $issue }}
+ {{ template "user/fragments/issueEvent" $issue }}
+ {{ end }}
+ {{ end }}
+
{{ end }}
diff --git a/appview/pages/templates/user/fragments/issueEvent.html b/appview/pages/templates/user/fragments/issueEvent.html
new file mode 100644
--- /dev/null
+++ b/appview/pages/templates/user/fragments/issueEvent.html
@@ -0,0 +1,21 @@
+{{ define "user/fragments/issueEvent" }}
+ {{ $repoOwner := resolve .Repo.Did }}
+ {{ $repoUrl := printf "%s/%s" $repoOwner .Repo.Name }}
+
+ {{ if .Open }}
+
+ {{ i "circle-dot" "w-4 h-4" }}
+
+ {{ else }}
+
+ {{ i "ban" "w-4 h-4" }}
+
+ {{ end }}
+
#{{ .IssueId }}
+
+ {{- .Title -}}
+ on
+ {{ $repoUrl }}
+
+
+{{ end }}
diff --git a/appview/pages/templates/user/fragments/picLink.html b/appview/pages/templates/user/fragments/picLink.html
--- a/appview/pages/templates/user/fragments/picLink.html
+++ b/appview/pages/templates/user/fragments/picLink.html
@@ -7,6 +7,7 @@
{{ $vr = index . 2 }}
{{ end }}
+ {{ end }}
{{ if $vr }}
{{ if ne $did $vr.ViewerDid }}
diff --git a/appview/pages/templates/user/fragments/pullEvent.html b/appview/pages/templates/user/fragments/pullEvent.html
new file mode 100644
--- /dev/null
+++ b/appview/pages/templates/user/fragments/pullEvent.html
@@ -0,0 +1,25 @@
+{{ define "user/fragments/pullEvent" }}
+ {{ $repoOwner := resolve .Repo.Did }}
+ {{ $repoUrl := printf "%s/%s" $repoOwner .Repo.Name }}
+
+ {{ if .State.IsOpen }}
+
+ {{ i "git-pull-request" "w-4 h-4" }}
+
+ {{ else if .State.IsMerged }}
+
+ {{ i "git-merge" "w-4 h-4" }}
+
+ {{ else }}
+
+ {{ i "git-pull-request-closed" "w-4 h-4" }}
+
+ {{ end }}
+
#{{ .PullId }}
+
+ {{- .Title -}}
+ on
+ {{ $repoUrl }}
+
+
+{{ end }}