diff --git a/appview/models/label.go b/appview/models/label.go index 076801e8..a8d9e8f1 100644 --- a/appview/models/label.go +++ b/appview/models/label.go @@ -461,21 +461,22 @@ func ReduceLabelOps(ops []LabelOp) []LabelOp { return result } -func DefaultLabelDefs() []string { - rkeys := []string{ - "wontfix", - "duplicate", - "assignee", - "good-first-issue", - "documentation", - } +var ( + LabelWontfix = fmt.Sprintf("at://%s/%s/%s", consts.TangledDid, tangled.LabelDefinitionNSID, "wontfix") + LabelDuplicate = fmt.Sprintf("at://%s/%s/%s", consts.TangledDid, tangled.LabelDefinitionNSID, "duplicate") + LabelAssignee = fmt.Sprintf("at://%s/%s/%s", consts.TangledDid, tangled.LabelDefinitionNSID, "assignee") + LabelGoodFirstIssue = fmt.Sprintf("at://%s/%s/%s", consts.TangledDid, tangled.LabelDefinitionNSID, "good-first-issue") + LabelDocumentation = fmt.Sprintf("at://%s/%s/%s", consts.TangledDid, tangled.LabelDefinitionNSID, "documentation") +) - defs := make([]string, len(rkeys)) - for i, r := range rkeys { - defs[i] = fmt.Sprintf("at://%s/%s/%s", consts.TangledDid, tangled.LabelDefinitionNSID, r) +func DefaultLabelDefs() []string { + return []string{ + LabelWontfix, + LabelDuplicate, + LabelAssignee, + LabelGoodFirstIssue, + LabelDocumentation, } - - return defs } func FetchDefaultDefs(r *idresolver.Resolver) ([]LabelDefinition, error) { diff --git a/appview/pages/pages.go b/appview/pages/pages.go index d268b3c5..c0d4a036 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -306,6 +306,7 @@ type TimelineParams struct { LoggedInUser *oauth.User Timeline []models.TimelineEvent Repos []models.Repo + GfiLabel *models.LabelDefinition } func (p *Pages) Timeline(w io.Writer, params TimelineParams) error { @@ -317,6 +318,7 @@ type GoodFirstIssuesParams struct { Issues []models.Issue RepoGroups []*models.RepoGroup LabelDefs map[string]*models.LabelDefinition + GfiLabel *models.LabelDefinition Page pagination.Page } diff --git a/appview/pages/templates/goodfirstissues/index.html b/appview/pages/templates/goodfirstissues/index.html index dd11521a..a3fb2f3e 100644 --- a/appview/pages/templates/goodfirstissues/index.html +++ b/appview/pages/templates/goodfirstissues/index.html @@ -9,8 +9,10 @@ {{ define "content" }}
-
-

Good First Issues

+
+

+ {{ template "labels/fragments/label" (dict "def" .GfiLabel "val" "" "withPrefix" true) }} +

Find beginner-friendly issues across all repositories to get started with open source contributions.

@@ -35,22 +37,22 @@ {{ else }} {{ range .RepoGroups }}
-
-
-
- {{ if .Repo.Source }} - {{ i "git-fork" "w-4 h-4 mr-1.5 shrink-0" }} - {{ else }} - {{ i "book-marked" "w-4 h-4 mr-1.5 shrink-0" }} - {{ end }} - {{ $repoOwner := resolve .Repo.Did }} - {{ $repoOwner }}/{{ .Repo.Name }} +
+
+
+ {{ if .Repo.Source }} + {{ i "git-fork" "w-4 h-4 mr-1.5 shrink-0" }} + {{ else }} + {{ i "book-marked" "w-4 h-4 mr-1.5 shrink-0" }} + {{ end }} + {{ $repoOwner := resolve .Repo.Did }} + {{ $repoOwner }}/{{ .Repo.Name }} +
-
{{ if .Repo.RepoStats }} - {{ end }} diff --git a/appview/pages/templates/labels/fragments/label.html b/appview/pages/templates/labels/fragments/label.html index 3a6932a8..95f30467 100644 --- a/appview/pages/templates/labels/fragments/label.html +++ b/appview/pages/templates/labels/fragments/label.html @@ -2,7 +2,7 @@ {{ $d := .def }} {{ $v := .val }} {{ $withPrefix := .withPrefix }} - + {{ template "repo/fragments/colorBall" (dict "color" $d.GetColor) }} {{ $lhs := printf "%s" $d.Name }} diff --git a/appview/pages/templates/timeline/fragments/goodfirstissues.html b/appview/pages/templates/timeline/fragments/goodfirstissues.html index 7ad60f8e..9f6c73ed 100644 --- a/appview/pages/templates/timeline/fragments/goodfirstissues.html +++ b/appview/pages/templates/timeline/fragments/goodfirstissues.html @@ -1,31 +1,33 @@ {{ define "timeline/fragments/goodfirstissues" }} -
-
- + + {{ end }} {{ end }} diff --git a/appview/state/gfi.go b/appview/state/gfi.go index 7fde0be0..198f8095 100644 --- a/appview/state/gfi.go +++ b/appview/state/gfi.go @@ -6,6 +6,7 @@ import ( "net/http" "sort" + "github.com/bluesky-social/indigo/atproto/syntax" "tangled.org/core/api/tangled" "tangled.org/core/appview/db" "tangled.org/core/appview/models" @@ -64,13 +65,12 @@ func (s *State) GoodFirstIssues(w http.ResponseWriter, r *http.Request) { } } - repoGroups := make(map[string]*models.RepoGroup) + repoGroups := make(map[syntax.ATURI]*models.RepoGroup) for _, issue := range goodFirstIssues { - repoKey := fmt.Sprintf("%s/%s", issue.Repo.Did, issue.Repo.Name) - if group, exists := repoGroups[repoKey]; exists { + if group, exists := repoGroups[issue.Repo.RepoAt()]; exists { group.Issues = append(group.Issues, issue) } else { - repoGroups[repoKey] = &models.RepoGroup{ + repoGroups[issue.Repo.RepoAt()] = &models.RepoGroup{ Repo: issue.Repo, Issues: []models.Issue{issue}, } @@ -134,5 +134,6 @@ func (s *State) GoodFirstIssues(w http.ResponseWriter, r *http.Request) { RepoGroups: paginatedGroups, LabelDefs: labelDefsMap, Page: page, + GfiLabel: labelDefsMap[goodFirstIssueLabel], }) } diff --git a/appview/state/state.go b/appview/state/state.go index cc0625af..0a23b9ca 100644 --- a/appview/state/state.go +++ b/appview/state/state.go @@ -270,11 +270,17 @@ func (s *State) Timeline(w http.ResponseWriter, r *http.Request) { return } - s.pages.Timeline(w, pages.TimelineParams{ + gfiLabel, err := db.GetLabelDefinition(s.db, db.FilterEq("at_uri", models.LabelGoodFirstIssue)) + if err != nil { + // non-fatal + } + + fmt.Println(s.pages.Timeline(w, pages.TimelineParams{ LoggedInUser: user, Timeline: timeline, Repos: repos, - }) + GfiLabel: gfiLabel, + })) } func (s *State) UpgradeBanner(w http.ResponseWriter, r *http.Request) {