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 }} + +{{ end }}